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

December 7, 2010, revised January 7, 2011 in Software

Сегодня Миша Грищенко задал мне вопрос, на который я, как мне казалось, ответил еще в августе, расхваливая 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 Понравился пост? Купи мне кофе