Win 8.1 Высокое использование оперативной памяти невыгружаемого пула

0

На ноутбуке Spectre X360 с 8 ГБ оперативной памяти, работающей на Win 8.1, я заметил, что все становится очень вялым. В задаче Maanger я мог видеть, что использовал неприличное количество оперативной памяти (7 ГБ / 8 ГБ), но просмотр подробных данных и сортировка с помощью Memory desc не выявили виновника.

После некоторого подключения к Интернету я обнаружил, что общая проблема заключается в том, что размер невыгружаемого пула слишком велик, и причиной может быть утечка памяти драйвера. Конечно, мой пул страниц не был размером 3,2 ГБ даже после перезапуска.

В диспетчере задач-> подробности я попытался отсортировать по столбцу NP Pool, но самый высокий элемент имел только 200k.

В недоумении я решил опробовать весьма разрекламированное решение: изменение реестра для очистки файла подкачки при завершении работы. открытое regedit и

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

ищите ClearPageFileAtShutDown и устанавливайте в 1.

После того, как я это сделал, я перезагрузил компьютер и установил альта, RAM на холостом ходу до ~ 2 ГБ.

Может кто-нибудь помочь объяснить, почему это работает?
Есть ли способ, которым я могу устранить неполадки исходной проблемы, чтобы я мог установить это значение обратно на 0?

w--
источник

Ответы:

1

Сначала начните с poolmon, чтобы увидеть, какой драйвер вызывает высокую загрузку .

Установите Windows WDK , запустите poolmon ( "C:\Program Files (x86)\Windows Kits\8.1\Tools\x64\poolmon.exe"), отсортируйте его по Pтипу пула, чтобы не выгружаемый был сверху, а Bбайты после, чтобы увидеть тег, который использует больше всего памяти.

Теперь посмотрите, какой тэг пула использует больше всего памяти, как показано здесь:

введите описание изображения здесь

Теперь откройте командную строку, перейдите в C: \ Windows \ System32 \ Drivers ( cd C:\Windows\System32\Drivers) и выполните findstrкоманду, чтобы увидеть, какой драйвер использует этот тег:

введите описание изображения здесь

Теперь посмотрите на свойства файла, найдите версию драйвера и найдите обновление.

Если тег пула показывает только драйверы Windows или указан в файле pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")

Вы должны использовать xperf, чтобы отследить, что вызывает использование . Установите WPT из Windows SDK , откройте cmd.exe от имени администратора и выполните следующее:

xperf -on PROC_THREAD + LOADER + POOL -stackwalk PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ pool.etl

захватить 30 -60-х годов роста. Откройте ETL с помощью WPA.exe, добавьте графики пула на панель анализа.

Поместите столбец пула тегов на первое место и добавьте столбец стека. Теперь загрузите символы в WPA.exe и разверните стек тега, который вы видели в poolmon.

введите описание изображения здесь

Теперь найдите другие сторонние драйверы, которые вы можете увидеть в стеке. Здесь Threтэг (Thread) используется AVKCl.exe из G-Data. Ищите обновления драйверов / программ, чтобы исправить это.

magicandre1981
источник
Вау, спасибо за очень полный ответ. В следующий раз, когда я увижу это, я проверю это. Не уверен, что вам довелось увидеть другую часть вопроса. Существует ли базовое объяснение того, почему очистка файла подкачки при выключении может решить проблему?
W--
1
Я не вижу никакой связи между обоими. запустите команду xperf и посмотрите на стеки.
magicandre1981