- Хост: Windows 7 64x бит, 6 ГБ ОЗУ
- Гость: Red Hat 64x бит
Ресурсы хост-машины без запуска виртуальных машин:
[Случай I] Гостевая машина с 2 ГБ памяти
Когда я запускаю процесс потребления памяти в гостевой системе, я получаю фатальную ошибку от VirtulBox (это фатально, потому что происходит сбой системы)
Error ID: HostMemoryLow
Severity: Non-Fatal Error
Память хоста при ошибке (МБ):
Total: 6002
Cached: 2149
Available: 2133
Free: 9
Кэшированная память Afaik содержит неактивные данные, которые не используются или уже реплицируются в разделе подкачки, и система должна иметь возможность освобождать их при необходимости, а современные ОС сохраняют кешируемую память, чтобы максимально эффективно использовать память большего размера. Я предполагаю, что причина проблемы в том, что либо Windows не может внезапно освободить большой объем памяти, либо VirtualBox не считает кэшированную память доступной для выделения и возвращает ошибку, как только свободная память заполнена ( но всё же кешируется).
[Случай II] Гость с отложенным выделением памяти
При отключении отложенного выделения памяти гипервизор выделяет всю память виртуальной машины при запуске, используя:
VBoxManage setextradata "VM_name" VBoxInternal/RamPreAlloc 1
Я столкнулся даже с еще более неблагоприятным сценарием, когда виртуальная машина отказывается запускаться с более чем 1280 МБ и выдает ошибку, что на хост-машине недостаточно памяти для выделения, а объем свободной памяти Windows на мгновение падает до 8, но кеш-память остается прежней (резервирует большой объем памяти) и окна никогда не освобождают его!
The fatal variant of VINF_EM_NO_MEMORY (VERR_EM_NO_MEMORY)
Result Code: E_FAIL (0x80004005)
Component: Console
Interface: IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}
VirtualBox не может выделить более 1280 МБ памяти независимо от свободной или кэшированной памяти!