Одна из распространенных проблем пользователей Windows 10, особенно с сетевыми картами Killer Network (Ethernet и Wireless)— заполняющаяся оперативная память при работе в сети. Обратить на это внимание можно в диспетчере задач на вкладке «Производительность», выбрав RAM. При этом, заполняется невыгружаемый пул памяти.
Проблема в большинстве случаев вызвана неправильной работой сетевых драйверов в сочетании с драйверами монитора использования сети Windows 10 (Network Data Usage, NDU) и достаточно просто решается, о чем и пойдет речь в этой инструкции. В некоторых случаях, причиной утечек памяти могут быть и другие драйверы оборудования. Близкий по теме материал: Что такое память Кэшировано в Windows 10 и как очистить кэшированную память.
Исправление утечки памяти и заполнения невыгружаемого пула при работе в сети
Наиболее распространенной ситуацией является, когда невыгружаемый пул RAM Windows 10 заполняется при работе в Интернете. Например, легко заметить, как он растет при скачивании большого файла и после этого не очищается.
Если описанное — ваш случай, то исправить ситуацию и очистить невыгружаемый пул памяти можно следующим образом.
- Зайдите в редактор реестра (нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter).
- Перейдите к разделу
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu\
- Дважды нажмите по параметру с именем «Start» в правой части редактора реестра и задайте значение 4 для него, для отключения монитора использования сети.
- Закройте редактор реестра.
По завершении, перезагрузите компьютер и проверьте, была ли исправлена проблема. Как правило, если дело действительно в драйверах сетевой карты, невыгружаемый пул больше не растет больше своих обычных значений.
Если шаги, описанные выше, не помогли, попробуйте следующее:
- Если драйвер сетевой карты и (или) беспроводного адаптера был установлен с официального сайта производителя, попробуйте удалить его и дать Windows 10 установить стандартные драйверы.
- Если драйвер был автоматически установлен Windows или был предустановлен производителем (и система после этого не менялась), попробуйте скачать и установить последнюю версию драйвера с официального сайта производителя ноутбука или материнской платы (если это ПК).
Заполняемый невыгружаемый пул оперативной памяти в Windows 10 не всегда бывает вызван драйверами именно сетевой карты (хотя чаще всего) и если действия с драйверами сетевых адаптеров и NDU не приносят результата, можно прибегнуть к следующим шагам:
- Установка всех оригинальных драйверов от производителя на ваше оборудование (особенно если на данный момент времени у вас установлены драйверы, автоматически установленные Windows 10).
- Использование утилиты Poolmon из состава Microsoft WDK для определения драйвера, вызывающего утечку памяти.
Как узнать, какой драйвер вызывает утечку памяти в Windows 10 с помощью Poolmon
Выяснить конкретные драйверы, приводящие к тому, что невыгружаемый пул памяти растет можно с помощью инструмента Poolmoon, входящим в состав Windows Driver Kit (WDK), скачать который можно с официального сайта Майкрософт.
- Загрузите WDK для вашей версии Windows 10 (не используйте шаги на предлагаемой странице, относящиеся к установке Windows SDK или Visual Studio, просто найдите пункт «Установите WDK для Windows 10» на странице и запустите установку) с сайта https://developer.microsoft.com/ru-ru/windows/hardware/windows-driver-kit.
- После установки, зайдите в папку с WDK и запустите утилиту Poolmon.exe (по умолчанию утилиты находятся в C:\ Program Files (x86)\Windows Kits\ 10\ Tools\ ).
- Нажмите латинскую клавишу P (так, чтобы второй столбец содержал только значения Nonp), затем — B (это оставит в списке только записи, использующие невыгружаемый пул и отсортирует их по количеству занимаемого пространства в памяти, т.е. по столбцу Bytes).
- Обратите внимание на значение столбца Tag для занимающей наибольшее количество байт записи.
- Откройте командную строку и введите команду findstr /m /l /s значение_столбца_tag C:\Windows\System32\drivers\*.sys
- Вы получите список файлов драйверов, которые могут оказаться причиной проблемы.
Дальнейший путь — выяснить по именам файлов драйверов (с помощью Google, например), к какому оборудованию они относятся и пробовать установить, удалить или откатить в зависимости от ситуации.
На компьютерах и серверах Windows могут возникать проблемы с исчерпанием свободной памяти, вызванной утечкой некого системного драйвера, хранящего свои данные в невыгружаемом пуле памяти системы. Невыгружаемый пул памяти (Non-paged memory) – это данные в оперативной памяти компьютера, используемые ядром и драйверами операционной системой, которая никогда не выгружается на диск (в своп/ файл подкачки), т.е. всегда находится в физической RAM памяти.
Текущий размер невыгружаемого пула памяти можно увидеть в диспетчере задач Windows на вкладке Perfomance (Производительность) в разделе Memory (Память). На скриншоте ниже видно, что практически вся память на сервере занята, и большая часть ее относится к невыгружаемому пулу 4,2 Гб (Non-paged pool / Невыгружаемый пул). В нормальном состоянии размер невыгружаемого пула редко превышает 200-400 Мб. Большой размер невыгружаемого пула часто указывает на наличии утечки памяти в каком-то системном компоненте или драйвере.
При утечке памяти в невыгружаемом пуле на сервере, в системном журнале событий появится события:
Event ID: 2019
Source: Srv
Description:
The server was unable to allocate from the system nonpaged pool because the pool was empty
В подавляющем большинстве случаев причиной такой утечки памяти является проблема со сторонними драйверами, установленными в Windows. Как правило, это сетевые драйвера. Обратите внимание, как ведет себя пул при скачивании больших файлов (скорее всего он при этом быстро растет).
Максимальный размер невыгружаемого пула в Windows:
- Windows x64 до 128 Гб и не более 75% физической памяти
- Windows x86 до 2 Гб и не более 75% RAM
Для очистки пула помогает только перезагрузка, и, если для домашнего компьютера это еще может быть приемлемо, то на круглосуточно работающем сервере желательно найти нормальное решение.
Содержание:
- Установка последних версий драйверов сетевых адаптеров
- Отключение драйвера мониторинга сетевой активности Windows
- Отключение роли Hyper-V
- Поиск драйвера, вызвавшего утечку памяти с помощью Poolmon
Установка последних версий драйверов сетевых адаптеров
Попробуйте скачать и установить последние версии драйверов ваших сетевых адаптеров с сайта производителя.
Если у вас в Windows включено автоматическое обновление драйверов, убедитесь не начались ли проблемы после установки новых драйверов. Попробуйте откатить версию драйвера на более старую и проверить, воспроизводится ли проблема. Если проблема решилась, отключите авто обновление драйверов.
Отключение драйвера мониторинга сетевой активности Windows
Достаточно часто причиной утечки памяти в невыгружаемый пул является несовместимость драйвера мониторинга сетевой активности (Network Data Usage — NDU, %WinDir%\system32\drivers\Ndu.sys) с драйверами сетевого адаптера компьютера (чаще всего конфликтуют драйвера для сетевых карт Killer Network и MSI). Данный сервис можно отключить без особых потерь функционала Windows.
Службу можно остановить командной:
sc config NDU start= disabled
Либо через реестр:
- Откройте редактор реестра regedit.exe
- Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu\
- Измените значения параметра Start на 4.
После внесения изменений нужно перезагрузить компьютер
Отключение роли Hyper-V
В некоторых случаях утечку памяти в невыгружаемый пул вызывает установленная роль Hyper-V. Если эта роль не нужна, рекомендуем отключить ее.
В Windows Server Hyper-V роль можно отключить командой:
Remove-WindowsFeature -Name Hyper-V
Команда для Windows 10:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Поиск драйвера, вызвавшего утечку памяти с помощью Poolmon
Если описанные выше способы не помогли, можно попробовать определить драйвер, который вызвал утечку памяти в невыгружаемый пул.
Для этого нам понадобится консольная утилита Poolmoon.exe, входящая в комплект разработки Windows Driver Kit (WDK). Скачайте с сайта Microsoft и установите WDK для вашей версии Windows и запустите утилиту Poolmon.exe (в WDK для Windows 10 утилита находится в каталоге
C:\Program Files (x86)\Windows Kits\10\Tools\
).
После запуска утилиты Poolman.exe нажмите клавиши P. Во втором столбце останутся теги процессов, которые используют невыгружаемую память (атрибут Nonp) Затем нажмите клавишу B, чтобы выполнить сортировку по столбцу Bytes.
В левом столбце указаны теги драйверов. Ваша задача определить файл драйвера, использующего этот тег. В нашем примере видно, что больше всего RAM в невыгружаемом пуле используют драйвера с тегами Nr22, ConT и smNp.
Вы должны проверить драйвера на наличие найденных тегов с помощью утилиты strings.exe (от Sysinternals), с помощью встроенной команды findstr или с помощью PowerShell.
Следующие команды должны найти файлы драйверов, связанные с найденными вами тегами. данными процессами можно командами:
findstr /m /l /s Nr22 %Systemroot%\System32\drivers\*.sys
findstr /m /l /s ConT %Systemroot%\System32\drivers\*.sys
findstr /m /l /s smNp %Systemroot%\System32\drivers\*.sys
Также можно воспользоваться PowerShell:
Set-Location "C:\Windows\System32\drivers"
Select-String -Path *.sys -Pattern "Nr22" -CaseSensitive | Select-Object FileName -Unique
Select-String -Path *.sys -Pattern "Py28" -CaseSensitive | Select-Object FileName -Unique
Select-String -Path *.sys -Pattern "Ne40" -CaseSensitive | Select-Object FileName –Unique
Вы можете отобразить файлы драйверов непосредственно в poolmon.exe. Для этого убедитесь, что в каталоге утилиты находится файл pooltag.txt. Его можно скопировать из каталога установки WDK или найти в GitHub. Запустите утилиту:
Poolmon /g
Обратите внимание, что имя драйвера теперь отображается в столбце Mapped_driver.
Если поиск не дал результатов, проверьте возможно утечка памяти вызвана не системным процессом. Запустите Task Manager, перейдите на вкладку Details, добавьте колонку NP Pool и найдите процессы с большим размером памяти в невыгружаемом пуле.
Таким образом, мы получили список файлов драйверов, которые могут оказаться причиной проблемы. Теперь по именам файлов нужно определить, к каким драйверам и системным компонентам они относятся. Для этого можно воспользоваться утилитой sigcheck от Sysinternals.
sigcheck C:\Windows\System32\drivers\rdyboost.sys
Утилита возвращает имя драйвера, его свойства и информацию о версии.
Теперь можно попытаться удалить/обновить/переустановить проблемный драйвер или службу.
Если утечка памяти привела к BSOD, вы можете определить проблемный драйвер по файл дампа памяти.
- Загрузите дамп памяти в отладчик Windbg;
- Выполните команду:
!vm
- Если значение NonPagedPool Usage больше чем Max, это говорит о том, что невыгружаемый пул исчерпан;
- Проверьте содержимое пула командой (результаты будут отсортированы по использованию невыгружаемого пула):
!poolused 2
- После получение тега драйвера найдите файл с помощью findstr или strings как описано выше.
Данная инструкция применима как для Windows Server 2019/2016/2012R2, так и для клиентских Windows 10, 8.1.
Содержание
- Способ 1: Монитор использования сети
- Способ 2: Удаление или обновление драйверов
- Способ 3: Отключение Hyper-V
- Способ 4: Утилита Poolmon
- Вопросы и ответы
Способ 1: Монитор использования сети
Если размер невыгружаемого пула увеличивается во время работы в интернете, например при скачивании файлов большого размера, это может указывать на некорректное взаимодействие драйверов сети с сетевым монитором. В этом случае проблема решается отключением монитора использования сети.
- Запустите «Редактор реестра», для чего выполните в вызванном нажатием Win + R диалоговом окошке команду
regedit
. - Разверните ветку
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Ndu
, найдите справа параметр с названием «Srart» и откройте окошко редактирования его значения двойным кликом ЛКМ. - Установите в качестве значения параметра «4», сохраните настройки, закройте «Редактор реестра» и перезагрузите компьютер.
Также для остановки монитора сети можно использовать «Командную строку», выполнив команду sc config NDU start= disabled
.
Способ 2: Удаление или обновление драйверов
Если проблемы начались после обновления сетевых драйверов либо после установки сетевого драйвера, скачанного с сайта производителя сетевой карты или адаптера, в первом случае необходимо откатить драйвер к предыдущей версии, а во втором – удалить оригинальный драйвер и дать Windows 10 установить стандартный. И наоборот, в некоторых случаях проблему может решить установка оригинального драйвера, скачанного с сайта производителя сетевой карты. Общий алгоритм обновления/удаления сетевого драйвера следующий:
- Откройте «Диспетчер устройств» из контекстного меню «Пуск».
- Разверните пункт «Сетевые адаптеры», кликните правой кнопкой мыши по рабочему сетевому устройству и выберите в меню «Свойства».
- Переключитесь на вкладку «Драйвер» и выберите нужную опцию («Обновить драйвер» или «Откатить»), после чего проследуйте указаниям мастера.
Более подробные инструкции по установке, обновлению и удалению драйверов можно получить по ссылкам ниже.
Подробнее:
Программы для обновления драйверов
Программы для удаления драйверов
Установка драйвера для сетевого адаптера в Windows 10
Способ 3: Отключение Hyper-V
Увеличение невыгружаемого пула может быть вызвано неправильной работой компонента виртуализации Hyper-V. Чтобы исключить этот вариант, отключите компонент и понаблюдайте за поведением системы.
- Откройте «PowerShell» от имени администратора из контекстного меню кнопки «Пуск» .
- Выполните команду
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
илиDisable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
для отключения компонента виртуализации.
После выполнения команды перезагрузите компьютер.
Способ 4: Утилита Poolmon
Вызвать утечку памяти в невыгружаемый пул может не только сетевой драйвер, но и любой другой драйвер. Чтобы не обновлять/заменять все драйверы, можно попробовать выявить те из них, которые привели к появлению проблемы. Для этих целей понадобится утилита Poolmon, входящая в состав платформы Microsoft WDK.
Скачать Microsoft WDK с официального сайта
- Скачайте пакет Microsoft WDK соответствующей версии и установите.
- Зайдите в каталог
C:\Program Files (x86)Windows Kits\10\Tools\x86 (или x64)
, найдите там утилиту Poolmon и запустите ее от имени администратора. - Когда появится окно утилиты, нажмите английскую клавишу P, а затем B. В результате в списке будут оставлены только те записи, которые используют невыгружаемый пул. Запишите название тех из них, которые занимают больше всего байт в памяти. Указаны названия в первом столбце «Tag». Для сортировки записей по размеру памяти используйте столбец «Bytes».
- Откройте от имени администратора классическую «Командную строку».
- Перейдите командой
cd drivers
в расположениеC:\Windows\System32\drivers
. - Выполните команду
findstr /m /l /s Name *.sys
, где Name – название записи, полученной в результате сортировки в окне Poolmon.
В итоге вы получите список драйверов, которые с большей долей вероятности являются источником проблемы. Далее вам нужно принять решение, что именно делать с этими драйверами: удалять, обновлять или откатывать.
Еще статьи по данной теме:
Помогла ли Вам статья?
Windows 10 Upgrade from 8.1
NDU stands for Network Diagnostic Usage, it is a monitoring tool.
What is NDU Used For?
A nondisruptive upgrade NDU is an update to software or hardware that does not interrupt access to data or system service. An NDU does not require the system to be rebooted when the upgrade process completes.
Is it Safe to Disable NDU?
Yeah its safe to disable it, its for monitoring the data usage only useful in metered connections, anyways if youre data capped, your ISP should notify you when youre near limit.
Can I Remove NDU Sys?
sys error usually occurs when there is a hardware or driver incompatibility. If the error driver irql not less or equal Ndu. sys appear randomly after a few minutes , check for driver updates. Renaming the folder is the simplest solution to get rid of the Ndu.
What is NDU Sys Driver?
The Ndu. sys is known as Windows Network Data Usage Monitoring Driver. You may also automatically update your drivers or you can download the latest version of the driver from the network card manufacturers website.
Disable NDU for Windows 10
На чтение 4 мин Просмотров 17 Опубликовано
Одна из распространенных проблем пользователей Windows 10, особенно с сетевыми картами Killer Network (Ethernet и Wireless)— заполняющаяся оперативная память при работе в сети. Обратить на это внимание можно в диспетчере задач на вкладке «Производительность», выбрав RAM. При этом, заполняется невыгружаемый пул памяти.
Проблема в большинстве случаев вызвана неправильной работой сетевых драйверов в сочетании с драйверами монитора использования сети Windows 10 (Network Data Usage, NDU) и достаточно просто решается, о чем и пойдет речь в этой инструкции. В некоторых случаях, причиной утечек памяти могут быть и другие драйверы оборудования. Близкий по теме материал: Что такое память Кэшировано в Windows 10 и как очистить кэшированную память.
Исправление утечки памяти и заполнения невыгружаемого пула при работе в сети
Наиболее распространенной ситуацией является, когда невыгружаемый пул RAM Windows 10 заполняется при работе в Интернете. Например, легко заметить, как он растет при скачивании большого файла и после этого не очищается.
Если описанное — ваш случай, то исправить ситуацию и очистить невыгружаемый пул памяти можно следующим образом.
- Зайдите в редактор реестра (нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter).
- Перейдите к разделуHKEY_LOCAL_MACHINESYSTEMControlSet001ServicesNdu
- Дважды нажмите по параметру с именем «Start» в правой части редактора реестра и задайте значение 4 для него, для отключения монитора использования сети.
- Закройте редактор реестра.
По завершении, перезагрузите компьютер и проверьте, была ли исправлена проблема. Как правило, если дело действительно в драйверах сетевой карты, невыгружаемый пул больше не растет больше своих обычных значений.
Если шаги, описанные выше, не помогли, попробуйте следующее:
- Если драйвер сетевой карты и (или) беспроводного адаптера был установлен с официального сайта производителя, попробуйте удалить его и дать Windows 10 установить стандартные драйверы.
- Если драйвер был автоматически установлен Windows или был предустановлен производителем (и система после этого не менялась), попробуйте скачать и установить последнюю версию драйвера с официального сайта производителя ноутбука или материнской платы (если это ПК).
Заполняемый невыгружаемый пул оперативной памяти в Windows 10 не всегда бывает вызван драйверами именно сетевой карты (хотя чаще всего) и если действия с драйверами сетевых адаптеров и NDU не приносят результата, можно прибегнуть к следующим шагам:
- Установка всех оригинальных драйверов от производителя на ваше оборудование (особенно если на данный момент времени у вас установлены драйверы, автоматически установленные Windows 10).
- Использование утилиты Poolmon из состава Microsoft WDK для определения драйвера, вызывающего утечку памяти.
Как узнать, какой драйвер вызывает утечку памяти в Windows 10 с помощью Poolmon
Выяснить конкретные драйверы, приводящие к тому, что невыгружаемый пул памяти растет можно с помощью инструмента Poolmoon, входящим в состав Windows Driver Kit (WDK), скачать который можно с официального сайта Майкрософт.
- Загрузите WDK для вашей версии Windows 10 (не используйте шаги на предлагаемой странице, относящиеся к установке Windows SDK или Visual Studio, просто найдите пункт «Установите WDK для Windows 10» на странице и запустите установку) с сайта https://developer.microsoft.com/ru-ru/windows/hardware/windows-driver-kit.
- После установки, зайдите в папку с WDK и запустите утилиту Poolmon.exe (по умолчанию утилиты находятся в C: Program Files (x86)Windows Kits 10 Tools ).
- Нажмите латинскую клавишу P (так, чтобы второй столбец содержал только значения Nonp), затем — B (это оставит в списке только записи, использующие невыгружаемый пул и отсортирует их по количеству занимаемого пространства в памяти, т.е. по столбцу Bytes).
- Обратите внимание на значение столбца Tag для занимающей наибольшее количество байт записи.
- Откройте командную строку и введите команду findstr /m /l /s значение_столбца_tag C:WindowsSystem32drivers*.sys
- Вы получите список файлов драйверов, которые могут оказаться причиной проблемы.
Дальнейший путь — выяснить по именам файлов драйверов (с помощью Google, например), к какому оборудованию они относятся и пробовать установить, удалить или откатить в зависимости от ситуации.
Источник: remontka.pro