Process Explorer не показывает самый большой пользователь моей оперативной памяти

3505
RomanSt

Кто-нибудь знает, почему Process Explorer может показывать эти странные значения для использования памяти моего экземпляра Virtual Box?

Вот реальные цифры:

VMMap

Но вот что показывает Process Explorer:

альтернативный текст

альтернативный текст

Таким образом, процесс выделил 1,2 ГБ виртуальной машины, из которых 1,1 ГБ является частной. Но Process Explorer видит только 196 МБ виртуальной машины и только 48 МБ личной памяти! Что тут происходит?

РЕДАКТИРОВАТЬ : Эта память не просто зарезервирована. Это на самом деле используется :

альтернативный текст

6
Поскольку высока вероятность того, что это ошибка, и эти два инструмента принадлежат Sysinternals ... Вы можете сообщить им подобное описание на их форуме: http://forum.sysinternals.com/ Tom Wijsman 13 лет назад 0
Правильно ли он отображается в диспетчере задач? Connor W 13 лет назад 0
Диспетчер задач @Connor показывает те же цифры, что и Process Explorer. RomanSt 13 лет назад 0

4 ответа на вопрос

4
RomanSt

Марк Руссинович любезно объяснил, что это происходит потому, что VirtualBox блокирует большой объем памяти, что требует от ОС сохранить ее в рабочем наборе .

Однако, если вы просто попробуете VirtualLockкучу оперативной памяти, вы этого не увидите. Все это ОЗУ будет счастливо учтено, как и должно быть. Так что другое дело в том, как VirtualBox распределяет эту память. Кстати, это также влияет на ProcessHacker.

Странная вещь в этом заключается в том, что ProcessHacker правильно перечисляет все выделенные диапазоны памяти, и простое их добавление даст правильное значение, однако счетчик, сообщаемый ОС, неверен. На несколько ГБ. Нехорошо!

Я называю это причудой отчетности Windows RAM. Я бы назвал это ошибкой, но, вероятно, она существует уже не менее десяти лет, поэтому сейчас я думаю, что можно назвать это ожидаемое поведение ... то, которое должным образом не обходится ни в Process Explorer, ни в Process Hacker.

Я полагаю, что блокировка памяти предназначена только для исключительных целей, и причина, указанная в этой статье, вероятно, является причиной, по которой она никогда не учитывалась ... Хорошо, что вы поняли это так далеко, и да ... Марк Руссинович - человек для такие ответы, когда форум Sysinternals не может вам помочь. :-) Tom Wijsman 13 лет назад 0
По-разному ли сообщается в Windows 7 и Windows 8.1? На моей машине W7 VBox утверждает, что имеет ~ 120 МБ WS и 250 МБ «Виртуального размера», но в W8.1 ясно сказано, что процесс VBoxHeadless имеет «Виртуальный размер» 5,5 ГБ. analytik 8 лет назад 0
1
Tom Wijsman

В VMMap может быть ошибка, из-за которой Committed включает отброшенные страницы или страницы в файле подкачки.

Таким образом, теперь это выглядит как неактивная память ... Она выделяется просто как резерв (или как ошибка).

Рабочий набор содержит только активную память, VMMap и Process Explorer показывают один и тот же WS ...

Похоже, что в VMMap абсолютно нет места для подсчета зарезервированной памяти. Я не заметил этого раньше. Иронично, как Марк разбивает диспетчер задач за использование противоречивой терминологии, а затем сам считает зарезервированную память вместе с выделенной памятью ... RomanSt 13 лет назад 0
Да, имена должны быть более согласованными по всем продуктам ... Tom Wijsman 13 лет назад 0
ОК, это не так. Когда я запускаю виртуальную машину, ProcessExplorer показывает общее увеличение Commit на 1,1 ГБ или около того, и физическое использование также увеличивается на 1,1 ГБ. Но ни у одного счетчика нового процесса нет таких цифр. RomanSt 13 лет назад 0
Я предполагаю, что память выделяется драйвером, а не процессом VM. Другая причина может быть связана с аппаратным ускорением и вложенными параметрами подкачки, которые есть у программного обеспечения VM, из-за которых Windows не может видеть, куда ушла эта память ... Tom Wijsman 13 лет назад 0
Оказывается, эта память не учитывается, поскольку она заблокирована в рабочем наборе. Это на самом деле не объясняет, почему об этом не сообщается в счетчике рабочего набора, но это другой вопрос. Написал свой ответ ... RomanSt 13 лет назад 0
0
harrymc

Из оперативной памяти, виртуальной памяти, файла подкачки и всего такого :

Память, зафиксированные байты : это мера спроса на виртуальную память. Он показывает, сколько байтов было выделено процессами и для которых операционная система зафиксировала фрейм страницы ОЗУ или слот страницы в файле подкачки (или оба). По мере того, как количество обязательных байтов превышает доступную оперативную память, увеличивается объем подкачки, а также увеличивается объем используемого файла подкачки. В какой-то момент активность подкачки начинает существенно влиять на воспринимаемую производительность.

Поэтому я считаю, что количество «Зафиксированных байтов» не имеет ничего общего с VirtualBox - это всего лишь общее количество страниц физической памяти всех запущенных процессов в системе. В этом случае данные, возвращаемые Process Explorer, верны.

0
jmc

Использование SysInternals RamMap Я думаю, вы можете видеть, что оперативная память записана как «DriverLocked».

Однако я понятия не имею, как вы на самом деле работаете с драйвером, который его заблокировал. И, что важно, драйвером будет не программа VirtualBox, а драйвер, который VirtualBox установил и использует.

Если простое отключение виртуальных машин не освобождает оперативную память из пула «DriverLocked», вы можете использовать такой инструмент, как AutoRuns, чтобы увидеть, какие драйверы загружаются при запуске, и отключить их. Это немного ручной процесс, поэтому было бы очень интересно, если кто-нибудь знает, как определить, какие драйверы заблокировали память.

Похожие вопросы