Ответ
Причина, по которой запуск программ на ВМ приводит к использованию файлов подкачки, заключается в том, что на хосте слишком много данных, пытающихся оказаться в памяти. Я знаю, что вы сказали, что хост использует менее 3 ГБ, но это кажется лишь частью истории, и, возможно, хост жестко ограничивает себя из-за массового выделения гостевой виртуальной машине. Перед включением гостевой виртуальной машины и после предоставления хосту возможности делать то, что он обычно делает в течение по крайней мере 20 минут, что указано в доступной и кэшированной памяти на вкладке производительности диспетчера задач?
Чтобы повысить общую производительность, я бы уменьшил объем оперативной памяти, выделенной для виртуальной машины, примерно до 6 ГБ, чтобы хост мог чаще использовать данные в оперативной памяти. Я знаю, что это звучит нелогично, но это позволит гостевой виртуальной машине знать, что во всей системе недостаточно оперативной памяти, и поэтому она будет более экономной в использовании ОЗУ, поэтому, когда она использует менталитет «все ОЗУ должны быть использованным для чего-то ", это не заполнение оперативной памяти хоста бесполезным мусором, потому что гость vm больше не думает, что есть много оперативной памяти. Уменьшение выделения виртуальной памяти гостевой виртуальной машины будет означать, что хосту не придется использовать пространство подкачки жесткого диска для обеспечения полного выделения виртуальной памяти виртуальной машине. Обратите внимание, что на вкладке процессов в диспетчере задач имеется много разных классификаций "памяти", доступных на экране «Просмотр-> выбор столбцов».
Я обнаружил, что, когда диспетчер задач сообщает, что объем кэшированной памяти невелик, это является причиной и следствием медленной работы всей системы. Для моих моделей использования на 8 ГБ машине я обнаружил, что если машина работает с менее чем 33% ее физического ОЗУ в качестве кеша, это невыносимо медленно. Так что для вас я бы округлил до 6 ГБ для кеша 6 ГБ для ВМ и 4 ГБ для хоста. Вы можете обнаружить, что у гостевой виртуальной машины требуется уменьшить оперативную память еще больше из-за требований оперативной памяти на хосте, хотя не заходите слишком далеко, иначе гостевая виртуальная машина будет слишком часто использовать свой файл подкачки. Наличие достаточного объема кэша является обязательным для производительности как для гостевой виртуальной машины, так и для хоста. Хотя я заметил, что 32-гигабайтный сервер удаленного рабочего стола на работе обходится только с 4-6 ГБ кэша.
Дополнительная информация
В диспетчере задач windows
- Общая память = физическая память, которую могут использовать окна (некоторые устройства могут использовать / совместно использовать физическую память, как некоторые графические устройства)
- Кэшированная память = вещи, которые есть в Windows, в оперативной памяти на случай, если что-то понадобится, плюс вещи, которые нужны для завершения записи на жесткий диск.
- Доступная память = то, что вы считаете полезным
- Свободная память = потраченная впустую память, которая в настоящее время используется даром. Вы должны игнорировать это значение, если оно не останется большим, то окна будут разбиты. Оно должно постепенно уменьшаться, поскольку все больше и больше оперативной памяти становится полезным.
Между ними есть некоторые связи, особенно если вы углубляетесь в детали, доступные в мониторе ресурсов и / или в RAMmap утилиты MS Sysinternals.
- Taskmanager cached = резервный монитор ресурсов + изменен
- Taskmanager Available = Монитор ресурсов в режиме ожидания + свободен + обнулен
- Taskmanager free = монитор ресурсов свободен + обнулен
Важно понимать, что резервная память может быть немедленно отброшена и повторно использована для чего-то другого, поэтому она считается доступной. Если Windows больше ничего не делает, и есть свободный и / или обнуленный ОЗУ, он будет медленно считывать данные с жесткого диска в кэш и помечать его как резервную память. Это делает баран полезным для чего-то, а не просто тратится впустую.
Все разработчики ОС должны переименовать метрику "free ram" в "впустую ram"
Когда вы открываете программы на гостевой или хост-ОС, хост-ОС должна открывать файлы или части файлов с жесткого диска. Обратите внимание, что гостевой жесткий диск - это файл на хост-машине, который читается и записывается хост-процессом, который запускает виртуальную машину. Хост-операционная система будет кэшировать эту информацию при ее чтении, и, если на хосте все еще была потрачена впустую (иначе говоря, свободная) память, она будет сохранена в памяти в качестве резервных данных. Также обратите внимание, что система кэширования не должна кэшировать весь файл, она может кэшировать только его части, вот как файл 80GB+ может содержать его части в 16 ГБ оперативной памяти, которую имеет хост.
ОС хоста и гостя балансируют то, что программы памяти хотят выделить с предоставлением кэшированных данных файлов на жестком диске. Часто программы выделяют некоторую память, которая им нужна очень редко, в то время как они часто запрашивают файлы на жестком диске. Операционная система использует файл подкачки на жестком диске для хранения информации о редко используемой программе, чтобы иметь больше оперативной памяти для кэширования файлов. Единственный способ, которым ОС может решить, что иметь в ОЗУ и что оставить на жестком диске, - это статистику того, как часто эта часть информации запрашивается или записывается. Это включает в себя части файла hdd виртуальной машины, которые ОС может захотеть кэшировать.
Если вашей виртуальной машине нужно использовать файлы из своего виртуального жесткого диска, например, открытие программ, это означает, что хосту приходится читать / записывать из / в файл, содержащий виртуальный жесткий диск. Если гостевая виртуальная машина занята, это также делает хост-машину занятой.