1000+ инструкций в блоге SoftComputers
0 0 голоса
Рейтинг

Утечка памяти в невыгружаемом пуле (Non-Paged Pool) в Windows 10/11 и Windows Server может привести к исчерпанию оперативной памяти, вызывая замедление или сбои системы. В этой статье описаны причины роста невыгружаемого пула и способы устранения проблемы.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

Что такое невыгружаемый пул памяти

Невыгружаемый пул — это область оперативной памяти, используемая ядром Windows и драйверами, которая никогда не выгружается в файл подкачки и всегда остается в физической RAM. Его размер можно проверить в Диспетчере задач:

1. Откройте Диспетчер задач (Ctrl+Shift+Esc).

2. Перейдите на вкладку Производительность -> Память.

3. Найдите значение Невыгружаемый пул (Non-paged pool).

В норме он составляет 200–400 МБ. Значительный рост (например, до 4.2 ГБ) указывает на утечку памяти, часто сопровождаемую событием в Журнале событий:

Event ID: 2019

Source: Srv

Description: The server was unable to allocate from the system nonpaged pool because the pool was empty

Причины роста невыгружаемого пула

Основная причина — утечка памяти в сторонних драйверах, чаще всего сетевых. Пул может быстро расти при скачивании больших файлов. Другие причины:

— Несовместимость драйвера мониторинга сетевой активности NDU (Network Data Usage, %WinDir%\system32\drivers\Ndu.sys) с сетевыми адаптерами (Killer Network, MSI).

— Проблемы с ролью Hyper-V.

— Устаревшие или некорректные драйверы (например, spaceport.sys в Windows Server 2019 при использовании Storage Spaces).

— Проблемы с драйверами дисковых контроллеров или ПО, например, Intel Rapid Storage Technology.

Максимальный размер невыгружаемого пула

Windows x64: до 128 ГБ или 75% физической памяти.

Windows x86: до 2 ГБ или 75% RAM.

Решения проблемы

Решение 1: Обновление или откат драйверов

1. Скачайте последние драйверы сетевых адаптеров с сайта производителя.

2. Если проблема началась после обновления драйвера, откатите его:

Диспетчер устройств -> Сетевые адаптеры -> правый клик -> Свойства -> Драйвер -> Откатить.

3. Отключите автоматическое обновление драйверов:

Параметры -> Система -> Дополнительно -> Оборудование -> Параметры установки устройств -> Нет.

Решение 2: Отключение драйвера NDU

1. Откройте командную строку с правами администратора и выполните:

sc config NDU start=disabled

2. Или через реестр:

— Запустите regedit.

— Перейдите в HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu.

— Измените параметр Start на 4 (DWORD).

3. Перезагрузите компьютер.

Решение 3: Отключение Hyper-V

Если Hyper-V не используется, отключите его:

— Для Windows Server:

Remove-WindowsFeature -Name Hyper-V

— Для Windows 10/11:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

4. Перезагрузите систему.

Решение 4: Поиск проблемного драйвера с помощью Poolmon

1. Скачайте Windows Driver Kit (WDK) с сайта Microsoft.

2. Запустите Poolmon.exe (например, из C:\Program Files (x86)\Windows Kits\10\Tools).

3. Нажмите P для отображения только невыгружаемого пула (Nonp).

4. Нажмите B для сортировки по столбцу Bytes.

5. Найдите теги драйверов, потребляющих больше всего памяти (например, Nr22, ConT, smNp).

Идентификация драйвера

— Используйте findstr для поиска файлов драйверов:

findstr /m /l /s Nr22 %SystemRoot%\System32\drivers\*.sys

— Или PowerShell:


Set-Location "C:\Windows\System32\drivers"
Select-String -Path *.sys -Pattern "Nr22" -CaseSensitive | Select-Object FileName -Unique

— Для отображения имени драйвера в Poolmon:

— Скопируйте pooltag.txt из WDK или GitHub в папку с Poolmon.

— Запустите: Poolmon /g.

— Используйте Sigcheck от Sysinternals для получения информации о драйвере:

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

6. Обновите, переустановите или удалите проблемный драйвер.

Решение 5: Проверка пользовательских процессов

1. В Диспетчере задач перейдите на вкладку Подробности.

2. Добавьте столбец Невыгружаемый пул (NP Pool).

3. Найдите процессы с высоким потреблением памяти и завершите их или обновите связанное ПО.

Решение 6: Анализ дампа памяти при BSOD

Если утечка вызывает BSOD:

1. Загрузите дамп памяти в WinDbg.

— Скачать WinDbg можно на официальном сайте, Файл называется winsdksetup.exe

2. Выполните:

!vm

Если NonPagedPool Usage превышает Max, пул исчерпан.

3. Проверьте теги:

!poolused 2

4. Найдите драйвер с помощью findstr или strings, как указано выше.

Дополнительные рекомендации

Мониторинг:

— Используйте Perfmon для отслеживания Pool Nonpaged Bytes:

perfmon -> Process -> Pool Nonpaged Bytes -> All instances

[](https://learn.microsoft.com/en-us/answers/questions/1253100/non-paged-buffer-pool-memory-growth)

Проверка Storage Spaces:

— Если используется Storage Spaces, проверьте драйвер spaceport.sys. Обновления Windows (например, 2019-06) могут устранить утечки.

Обновление системы:

— Установите последние обновления Windows, так как некоторые утечки исправлены патчами (например, LSASS или SM00).

Проверка антивируса:

— Антивирусы (например, Avira) могут вызывать утечки. Отключите или замените антивирус для теста.

Проверка целостности системы:

— Выполните:


sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

Рост невыгружаемого пула в Windows 10/11 и Server 2019/2016 обычно вызван утечкой памяти в драйверах, особенно сетевых. Обновите драйверы, отключите NDU или Hyper-V, используйте Poolmon для поиска проблемного драйвера. Регулярный мониторинг через Perfmon и обновление системы помогут предотвратить проблему.

author avatar
copywriter
banner for Windows
Лицензионный ключ активации Windows от
1099 ₽ Купить
0 0 голоса
Рейтинг
Подписаться
Уведомить о
guest
     
0 отзывов
29
Межтекстовые Отзывы
Посмотреть все комментарии