Використання пам'яті віртуальної машини не відображається в TaskManager


28

Існує щось про управління пам'яттю Windows, і це стосунки до TaskManager, які я не розумію, і сподіваюся, що хтось може мене просвітити.

Якщо я запускаю віртуальну машину (неважливо, це Virtual PC 2007, Virtual Server 2005 або VirtualBox, оскільки вони діють однаково), і я відкриваю TaskManager, я бачу на вкладці процесів деякі записи для VM, але Значення пам'яті досить невеликі (близько 30 Мб). Очевидно, це не включає пам'ять, яку фактично споживає сам VM. Жоден із різних стовпців, пов’язаних із пам'яттю, ви можете зробити видимими, що вони працюють по-різному. Використання пам'яті на вкладці «Ефективність» видається правильним для загального використання пам’яті, включаючи VM.

Отже, моє питання полягає в тому, чому на вкладці Процеси не відображається використання пам'яті VM (що складе 100 Мб)?

Відповіді:


30

VirtualPC, HyperV і , ймовірно , подібні продукти використовують так званий драйвер пам'яті заблокована, яка не видно в Process Explorer, Task Manager і т.д. RAMMap покаже вам замкнені пам'ять драйвера , яка використовується в процесі.


1
Для запису RAMMap - це лише Vista чи вище.
Тім Абелл

1
RAMMap не показував заблоковану пам’ять для процесу, він показував загальну кількість заблокованої пам'яті
NeDark

Тільки щоб зазначити інших, він не сказав, що процес заблокував пам'ять. Він сказав, що водій заблокував пам'ять. Так працює динамічна пам'ять. Якщо вам це не подобається, або ви думаєте, що він змішується з вашим додатком, ви можете просто налаштувати VM для статичної пам'яті замість динамічної. Я бачив, що деякі програми Java мають проблеми при використанні динамічної пам’яті у вітрині, налаштовуючи їх на статичний виправлений глюк .
Джон C

Який процес насправді виділяє цю пам'ять? Я спробував VMMap SysInternals і коли ви виберете потрібний VBoxHeadless.exeпроцес (це лист на гілці дерева процесу, тобто у нього немає жодної іншої дитини, ви можете використовувати, наприклад, Explorer Explorer), щоб "втратити" пам'ять відображається як під приватними байтами, так і з робочим набором цього процесу (навіть незважаючи на те, що провідник Process виявляється набагато менше для обох значень). Тому я трохи розгублений, чому вони показують різні значення, але VMMap, як видається, показує реальну кількість .
Dawid Ferenczy Rogožan

6

Будь-яка розміщена система віртуалізації, подібна до переліченої, міститиме драйвер пристрою, який працює в ядрі хост-ОС. Це необхідно, оскільки програми в режимі користувача не можуть видавати інструкції, необхідні для створення віртуальної машини.

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


Який процес насправді виділяє цю пам'ять? Я спробував VMMap SysInternals і коли ви виберете потрібний VBoxHeadless.exeпроцес (це лист на гілці дерева процесу, тобто у нього немає жодної іншої дитини, ви можете використовувати, наприклад, Explorer Explorer), щоб "втратити" пам'ять відображається як під приватними байтами, так і з робочим набором цього процесу (навіть незважаючи на те, що провідник Process виявляється набагато менше для обох значень). Тому я трохи розгублений, чому вони показують різні значення, але VMMap, як видається, показує реальну кількість .
Dawid Ferenczy Rogožan

5

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

Щоб увімкнути цей стовпець:

1) Запустіть диспетчер завдань

2) Перейдіть на вкладку Процеси

3) Перегляд> Вибрати стовпці

4) Переконайтесь, що "Поміть - робочий набір" встановлено галочку

Наприклад, приватний набір VM, який я працюю на даний момент, становить 43 Мб, тоді як робочий набір - 2,3 Гб


1
Що таке повний об'єм пам'яті, яку використовує програма? Робочий набір + Приватний комплект або просто Робочий набір?
zendar

2
Можливо, це відрізняється в різних версіях Windows, але в Windows 7 це не те, що я бачу. Номери "Робочого набору" більше, ніж "Приватний робочий набір", але недостатньо віддалені, щоб врахувати пам'ять VM. Я спробував усі стовпці, пов'язані з пам'яттю, і жоден з них не робив. Це стосується як Windows Virtual PC, так і VirtualBox. Яку версію Windows та який хост VM ви використовуєте?
Скотт Буссінгер

На жаль, не існує єдиного числа, яке б вказувало на те, «скільки пам’яті» використовує процес, оскільки ви потрапляєте у такі ускладнення, як спільна пам'ять, пам’ять з картами файлів, пам'ять, що зберігається на екрані та кілька інших. Ось гарне пояснення кілька понять: stackoverflow.com/questions/1984186 / ...
tylerl

Я не думаю, що Робочий набір не говорить вам нічого корисного в даному випадку. Всередині VM він повідомляє, що він використовує близько 6 ГБ пам'яті, тоді як процеси VirtualBox у своїх робочих наборах не споживають більше 100 Мб .
Dawid Ferenczy Rogožan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.