Защо в Windows се разраства незапаметен пул от памет

В някои случаи компютрите и сървърите на Windows може да изпитат проблеми с изчерпването на свободната памет, причинена от изтичане на някакъв системен драйвер, който съхранява данните си в незастрахован пул на системната памет. Непакетиран басейн с памет (Памет без памет) са данните в компютърната оперативна памет, използвани от ядрото и драйверите на операционната система, които никога не се качват на диск (във файл за суап / суап), т.е. винаги във физическа памет.

Текущият размер на незаписания пул от памет може да се види в диспечера на задачи в раздела Perfomance (продуктивност) под Памет (Паметта). На екрана по-долу се вижда, че почти цялата памет на сървъра е заета и по-голямата част от нея принадлежи на необоротния пул от 4,2 GB (Non-paged pool / Non-paged pool). В нормално състояние размерът на безстранен басейн рядко надвишава 200-400 MB. Това обикновено показва изтичане на памет в някой системен компонент или драйвер..

PO

При такова изчерпване на паметта на сървъра, в дневника на събитията могат да се появят съобщения от формуляра:

Сървърът не можа да разпредели от системния пул, който не е Paged, защото пулът беше празен

В огромното мнозинство от случаите причината за описаното изтичане на памет е проблем с драйвери на трети страни, инсталирани в системата. По правило това са мрежови драйвери. Обърнете внимание как се държи пулът при изтегляне на големи файлове (най-вероятно той ще нарасне бързо до 128 GB или 75% от физическата памет в x64 системи). Само рестартиране помага за почистване на басейна и ако той все още може да бъде приемлив за домашен компютър, препоръчително е да намерите нормално решение на денонощен сървър.

Съдържание:

  • Инсталирайте най-новите драйвери за мрежови адаптери
  • Деактивиране на драйвера за наблюдение на мрежовата активност на Windows
  • Деактивиране на ролята Hyper-V
  • Използваме помощната програма Poolmon, за да намерим драйвера, който е причинил изтичане на паметта.

Инсталирайте най-новите драйвери за мрежови адаптери

Опитайте да изтеглите и инсталирате най-новите драйвери за вашите мрежови адаптери от уебсайта на производителя.

Ако имате активирана автоматична актуализация на драйвери, уверете се, че проблемите не са започнали след инсталирането на нови драйвери. Опитайте да върнете версията на драйвера към по-стара и проверете дали проблемът се възпроизвежда. Ако проблемът е решен, деактивирайте драйверите за автоматично обновяване.

Деактивиране на драйвера за наблюдение на мрежовата активност на Windows

Доста често изтичане на памет в незапаметен пул се причинява от несъвместимостта на драйвера за мрежово използване на данни (NDU) с драйверите на мрежовия адаптер на компютъра. Тази услуга може да бъде деактивирана без много загуба на функционалността на Windows.

Услугата може да бъде спряна от командата:

sc config NDU start = забранено

Или чрез регистъра

  1. Отворете редактора на системния регистър регентство.Търсейки
  2. Отидете до клона HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Услуги \ Ndu \
  3. Променете стойностите параметър начало в 4.

След като направите промени, трябва да рестартирате компютъра

Деактивиране на ролята Hyper-V

В някои случаи инсталираната роля на Hyper-V провокира изтичане на памет в неопакования пул. В случай, че не е необходим, препоръчваме да го деактивирате.

Използваме помощната програма Poolmon, за да намерим драйвера, който е причинил изтичане на паметта.

В случай, че описаните по-горе методи не помогнаха, можете да опитате да разберете кой конкретен драйвер е причинил изтичане на памет в незапазения пул.

За това ни е необходима конзолна програма Poolmoon.exe, включени в комплекта за разработка Комплект драйвери за Windows (WDK). От уебсайта на MSFT изтеглете и инсталирайте WDK за вашата версия на Windows и стартирайте помощната програма Poolmon.exe (в WDK за Windows 10, помощната програма се намира в C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \.

След стартиране на помощната програма натиснете клавишите P. Във втората колона ще останат процесите с тагове, които използват незаменяща памет (атрибут Nonp), след това чрез натискане B, нека сортираме по колона байтове.

В нашия пример можем да видим, че повечето от RAM паметта в неопакования пул използват драйвери с Nr22, ConT и smNp тагове.

Можете да намерите конкретни файлове с драйвери, свързани с тези процеси, като използвате командите:

findstr / m / l / s Nr22% Systemroot% \ System32 \ driver \ *. sys
findstr / m / l / s ConT% Systemroot% \ System32 \ drivers \ *. sys
findstr / m / l / s smNp% Systemroot% \ System32 \ driver \ *. sys

По този начин получихме списък с файлове с драйвери, които може би причиняват проблема. Сега от имената на файловете трябва да определите към кои драйвери и системни компоненти се отнасят. Можете да използвате помощната програма за това. sigcheck от sysinternals.

sigcheck C: \ Windows \ System32 \ Drivers \ rdyboost.sys

Помощната програма връща името, описанието и версията на драйвера.

Сега можете да опитате да премахнете / актуализирате / инсталирате отново проблемния драйвер или услуга.
Това ръководство се отнася както за Windows Server 2008 - 2016, така и за клиентските Windows 10, 8 и 7..