Як віртуальні машини можуть споживати так мало оперативної пам’яті на фізичній хост-машині?


24

Я запускаю VirtualBox на машині Windows XP з 2 Гб оперативної пам’яті. Я створив віртуальну машину Ubuntu і виділив їй базову пам'ять в 750 Мб.

Тільки щоб випробувати його, я запустив відразу 20 речей на віртуальну машину. За версією "top" в ubuntu, було використано 750 мег пам'яті, а також великий обмінний простір.

Однак, ще в Windows Task Manager, VitrualBox використовував лише 45 000 Кб пам'яті. Коли я попросив віртуальну машину робити все більше і більше, використання процесора процесу VirtualBox зросло (в Windows), але використання пам'яті залишилося колишнім.

Як віртуальна машина, що використовує пам'ять 750 Мб, споживає лише 45 Мб пам'яті на фізичній машині?

Я припускаю, що відповідь полягає в тому, що віртуальна машина не використовує реальну пам’ять, а моделює пам'ять (тобто обмінюється простором), але вона впевнено відчуває себе спритно, ніби вона працює в оперативній пам'яті.

ОНОВЛЕННЯ: Я грав разом з парфмоном, як пропонується. Навіть підбиваючи підсумки всього, що я можу придумати, все ще здається, що він займає менше 300 мегів ... так що це поки таємниця.

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936

Відповіді:


7

Стовпці в диспетчері завдань можуть наводити оманливі цифри - для точного використання пам’яті за процес ви можете використовувати perfmon (Монітор продуктивності на панелі керування) та дивитись на цифри «приватних байтів».

Щоб показати це, увійдіть в парфмон, натисніть, щоб додати лічильник (я Ctrl+ Iвид людини). "Об'єктом продуктивності" буде "Обробляти", при цьому "Приватні байти" знаходяться в списку лічильників - очевидно, вам потрібно буде вибрати відповідний процес зі списку праворуч.


Привіт. Я спробував це, але не пощастило знайти щось під назвою "Приватні байти". Чи можете ви дати крок за кроком?
dggoldst

Додали ...
Rowland Shaw

Дякую, це дуже корисно. Я додав аналіз до питання. Досі не можу зрозуміти, чому це не дорівнює 750.
dggoldst

Дуже дивно. Я можу зазначити, що PrivateBytes - це підмножина VirtualBytes (Віртуальний байт - це частка виділеного адресного простору, в той час як приватні байти - це та пам'ять, яка ще не звільнена - ви можете отримати фрагментацію пам'яті з невеликим витоком пам'яті і мати програми гинуть з недостатньою пам’яттю, навіть коли є багато). Можливо, драйвер віртуалізації розподіляє пам'ять таким чином, що вона не відображатиметься, що має сенс, оскільки пам’ять має бути захищеною від виклику на диск.
Rowland Shaw

З чотирьох лічильників, які ви помістили у свою таблицю, лише "PoolNonPagedBytes" - це кількість віртуальних пам'яток, які не мають сторінки, тому ця кількість фізичної пам'яті буде використана. Інші - всі віртуальні. Як і будь-який інший розмір віртуальної пам'яті, фактична оперативна пам'ять, яку вона використовує, майже завжди набагато менше, це одна з цілих точок віртуальної пам'яті.
Джеймі Ханрахан

5

З деякими рішеннями для віртуалізації під Linux, спосіб розподілу пам’яті відображає ядро ​​хоста як спеціальний файл із картографічною пам'яттю (подібно до /proc/kcoreспеціального файлу), тому він зараховується до «кешованого» рахунку у виході з free, а не кількість "використаних"

Я припускаю, що з вашим середовищем Windows відбувається щось подібне: 45Mb буде використовуватися процесами управління VirtualBox, а 750, виділених самому VM, будуть зараховані в іншому місці.


0

Це може бути віртуальна пам'ять, файли з картографічною пам'яттю чи щось подібне.

Ви намагалися відображати інші стовпці в диспетчері завдань?


0

Не вірте менеджеру завдань. Він не може все бачити.

Ця проблема більш часто зустрічається в SQL Server, наприклад, у програмі Sql я ніколи не знайшов того, хто розповів би мені спосіб отримання точної інформації від диспетчера завдань, який би привів мене до думки, що фігура не прихована в одному з інші стовпці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.