Сколько памяти действительно занимает виртуальная машина?

December 7, 2010, revised January 7, 2011 Firefox Process Explorer RAMMap VirtualBox VMMap Windows

Сегодня Миша Грищенко задал мне вопрос, на который я, как мне казалось, ответил еще в августе, расхваливая VirtualBox: а сколько он, собственно, жрет памяти?

Стандартный виндовский Task Manager: запущенный сервисом VirtualBox тут - вполне ожидаемо - не показывается. Поехали дальше.

Process Explorer - утилита, которой пользуются практически все. Процесс VBoxHeadless - сама виртуалка - жрет 107M Working Set. Как-то мало, учитывая эти показатели free -mt:

             total       used       free     shared    buffers     cached
Mem:           496        453         42          0         10         96
-/+ buffers/cache:        347        148
Swap:            0          0          0
Total:         496        453         42

Ликбез: из этой таблички наиболее интересна третья строчка. Это реально занятый программами объем памяти, и свободный для использования. Тот же показатель отражается зеленой полоской в htop.

Где прячутся еще 347 - 107 = 240 метров памяти? Поиск ответа на этот вопрос вывел на интересный факт: в Process Explorer и в Task Manager отражается далеко не вся физически доступная память в системе!

Для полноценного анализа использования памяти существует утилита RAMMap (от тех же Sysinternals, что и Process Explorer). Вот эта-то утилита и показала мне, что вся выделенная под виртуалку память (512 Мб) располагается в участке памяти, называемом Driver Locked Memory, что, видимо, неким образом связано с самой технологией виртуализации.

Еще одна утилита от Sysinternals - VMMap - позволила посмотреть статистику по самому процессу Virtualbox:


VirtualBox в VMMap

Выходит, что на все про все VirtualBox занимает 150М+объем ОЗУ, выделенный под виртуалку. Думаю, это и можно считать окончательным ответом на вопрос “сколько памяти занимает виртуальная машина под VirtualBox”.

А сколько все-таки нужно памяти самой виртуальной машине? Моя, с запущенными параллельно MySQL и PostgreSQL, а также тремя рельсовыми приложениями под Passenger (то есть я одновременно загрузил по странице каждого приложения), съедает порядка 350М. Надо полагать, что 512 мегабайт хватит каждому.

Для сравнения, вот данные о Firefox.


Firefox в VMMap

Тоже немало, неправда ли?

Buy Me a Coffee at ko-fi.com