24

Я использую VirtualBox на компьютере под управлением Windows XP с 2 ГБ ОЗУ. Я создал виртуальную машину с Ubuntu и выделил ей базовую память в 750 МБ.

Просто чтобы проверить это, я запустил 20 вещей одновременно на виртуальной машине. Согласно "top" в Ubuntu, было использовано 750 мегабайт памяти, а также значительное пространство подкачки.

Однако в диспетчере задач Windows VitrualBox использовал только 45 000 КБ памяти. Когда я просил виртуальную машину делать все больше и больше, загрузка ЦП процесса VirtualBox возросла (в Windows), но использование памяти осталось прежним.

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

Я предполагаю, что ответ заключается в том, что виртуальная машина использует не реальную память, а имитированную память (т. Е. Пространство подкачки), но она чувствует себя быстро, как будто она работает в ОЗУ.

ОБНОВЛЕНИЕ: я играл с perfmon как предложено. Даже суммируя все, что я могу придумать, все равно кажется, что он занимает менее 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

4 ответа4

7

Столбцы в диспетчере задач могут давать вводящие в заблуждение цифры - для точного использования памяти на процесс вы можете использовать perfmon (системный монитор в панели управления) и просматривать цифры "частных байтов".

Чтобы показать это, зайдите в perfmon, нажмите, чтобы добавить счетчик (я человек типа Ctrl+I ). "Объектом производительности" будет "Process", а "Private bytes" будет в списке счетчиков - очевидно, вам нужно будет выбрать соответствующий процесс из списка справа.

5

В некоторых решениях для виртуализации в Linux способ выделения памяти делает ее отображаемой ядру хоста в виде специального файла с отображением в памяти (очень похожего на специальный файл /proc/kcore ), поэтому он учитывается в подсчете "кэшировано" в выходных данных. от free , а не "использованный" счет.

Я предполагаю, что нечто подобное происходит в вашей среде Windows: 45 МБ будут использоваться процессами управления VirtualBox, а 750, выделенные для самой виртуальной машины, будут учитываться в другом месте.

0

Не верьте диспетчеру задач. Он не может видеть все.

Эта проблема более распространена в SQL Server, например, в Sql я ни разу не нашел ни одного человека, который бы сказал мне способ получить точную информацию из диспетчера задач, который бы заставил меня поверить, что фигура не скрыта ни в одном из другие столбцы.

0

Это может быть виртуальная память, отображенные в память файлы или что-то подобное.

Вы пытались отобразить другие столбцы в диспетчере задач?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .