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

Что делать, если невыгружаемый пул в Windows 10 занимает всю память

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Просмотр запущенных приложений в Диспетчере задач — это первое, с чего всякий пользователь начинает поиск причин медленной работы компьютера. И вроде бы и с процессами всё нормально, и с дисками, но на вкладке «Производительность», если выбрать «Память», можно увидеть, что она практически вся занята и уходит в невыгружаемый пул памяти. Это означает, что имеет место утечка памяти и неважно какой объем ОЗУ имеется на ПК, в невыгружаемый пул она может уйти вся без остатка.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

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

Неполадка может показаться серьёзной, на самом же деле она легко устраняется. Способов исправления существует несколько. Самый простой заключается в отключении службы мониторинга сетевой активности. Для этого откройте командой regedit редактор реестра и перейдите по следующему пути:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Эту же настройку следует проверить в ключе:

Результат будет аналогичным.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

В обеих случаях для вступления новых настроек в силу потребуется перезагрузка компьютера. После этого утечка в невыгружаемый пул памяти должна прекратиться. Это самый простой и эффективный способ, но есть также и другие варианты. Например, можно установить приложение Killer Network Manager, найти в его настройках опцию управления пропускной способностью и отключить её.

Если драйвера для сетевой карты скачивались с сайта производителя, попробуйте их удалить и дать Windows 10 установить свои драйвера. Если проблема наблюдается с драйверами Microsoft, поступаем наоборот, скачиваем для карты Killer Network драйвера с официального ресурса производителя и устанавливаем их. Выше упоминалось, что утечку памяти могут вызывать не только сетевые драйвера. Определить проблемный драйвер можно с помощью утилиты Poolmon, но для этого потребуется установить набор инструментов разработки драйверов для Windows.

Скачав WDK для вашей версии Windows 10 с официальной страницы Microsoft.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Теперь откройте командную строку от имени администратора, перейдите в расположение C:\Windows\System32\drivers и выполните команду:

findstr /m /l /s Name *.sys

Где Name — имя, то есть тэг записи.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

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

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

2 комментария

Здравствуйте. в моем случае невыгружаемый пул остановился на 1,7 гб, это так и должно? У меня мат.плата от MSI

Смотря по тому, сколько у Вас имеется памяти. Если 8 Гб, то в общем терпимо. Ну и учитывайте, что невыгружаемый пул растет при скачивании чего-либо, проверьте, закрыв все программы, что используют интернет-соединение.

Источник

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

На компьютерах и серверах Windows могут возникать проблемы с исчерпанием свободной памяти, вызванной утечкой некого системного драйвера, хранящего свои данные в невыгружаемом пуле памяти системы. Невыгружаемый пул памяти (Non-paged memory) – это данные в оперативной памяти компьютера, используемые ядром и драйверами операционной системой, которая никогда не выгружается на диск (в своп/ файл подкачки), т.е. всегда находится в физической RAM памяти.

Текущий размер невыгружаемого пула памяти можно увидеть в диспетчере задач Windows на вкладке Perfomance (Производительность) в разделе Memory (Память). На скриншоте ниже видно, что практически вся память на сервере занята, и большая часть ее относится к невыгружаемому пулу 4,2 Гб (Non-paged pool / Невыгружаемый пул). В нормальном состоянии размер невыгружаемого пула редко превышает 200-400 Мб. Большой размер невыгружаемого пула часто указывает на наличии утечки памяти в каком-то системном компоненте или драйвере.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

При утечке памяти в невыгружаемом пуле на сервере, в системном журнале событий появится события:

В подавляющем большинстве случаев причиной такой утечки памяти является проблема со сторонними драйверами, установленными в Windows. Как правило, это сетевые драйвера. Обратите внимание, как ведет себя пул при скачивании больших файлов (скорее всего он при этом быстро растет).

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

Для очистки пула помогает только перезагрузка, и, если для домашнего компьютера это еще может быть приемлемо, то на круглосуточно работающем сервере желательно найти нормальное решение.

Установка последних версий драйверов сетевых адаптеров

Попробуйте скачать и установить последние версии драйверов ваших сетевых адаптеров с сайта производителя.

Если у вас в Windows включено автоматическое обновление драйверов, убедитесь не начались ли проблемы после установки новых драйверов. Попробуйте откатить версию драйвера на более старую и проверить, воспроизводится ли проблема. Если проблема решилась, отключите авто обновление драйверов.

Отключение драйвера мониторинга сетевой активности Windows

Достаточно часто причиной утечки памяти в невыгружаемый пул является несовместимость драйвера мониторинга сетевой активности (Network Data Usage — NDU, %WinDir%\system32\drivers\Ndu.sys) с драйверами сетевого адаптера компьютера (чаще всего конфликтуют драйвера для сетевых карт Killer Network и MSI). Данный сервис можно отключить без особых потерей функционала Windows.

Службу можно остановить командной:

sc config NDU start= disabled

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

После внесения изменений нужно перезагрузить компьютер

Отключение роли Hyper-V

В некоторых случаях утечку памяти в невыгружаемый пул вызывает установленная роль Hyper-V. Если эта роль не нужна, рекомендуем отключить ее.

Команда для Windows 10:

Поиск драйвера, вызвавшего утечку памяти с помощью 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:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Обратите внимание, что имя драйвера теперь отображается в столбце Mapped_driver.

Если поиск не дал результатов, проверьте возможно утечка памяти вызвана не системным процессом. Запустите Task Manager, перейдите на вкладку Details, добавьте колонку NP Pool и найдите процессы с большим размером памяти в невыгружаемом пуле.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Таким образом, мы получили список файлов драйверов, которые могут оказаться причиной проблемы. Теперь по именам файлов нужно определить, к каким драйверам и системным компонентам они относятся. Для этого можно воспользоваться утилитой sigcheck от Sysinternals.

Утилита возвращает имя драйвера, его свойства и информацию о версии.
Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Теперь можно попытаться удалить/обновить/переустановить проблемный драйвер или службу.

Если утечка памяти привела к BSOD, вы можете определить проблемный драйвер по файл дампа памяти.

Данная инструкция применима как для Windows Server 2019/2016/2012R2, так и для клиентских Windows 10, 8.1.

Источник

Как исправить невыгружаемый пул Windows 10

Вот спустя время решил себе обновить компьютер, собрал, установил новую Windows 10. И горя не знал. Но заметил что он очень тормозит, после того как открыл диспетчер задач, увидел что невыгружаемый пул памяти постоянно увеличивается, и оперативная память не освобождается. Каждый раз чтобы выгрузить память с невыгружаемого пула приходилось выполнять перезагрузку компьютера.

В этой статье я Вам покажу несколько способов как избавится от проблемы с невыгружаемым пулом памяти. Разберемся что такое невыгружаемый пул и по каким причинам пользователи с ней встречаются. Решил написать статью так как сам часто встречаюсь после каждой чистой установки операционной системы Windows 10.

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

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

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Эта проблема появляется при активном использовании Интернета с включенным управлением полосой пропускания, происходит утечка памяти на материнских платах с сетевой картой от Killer. Не важно интегрированная это или дискретная сетевая карта. Драйвер netio.sys может забрать хоть всю оперативную память в системе. После перезагрузки компьютера по новой все происходило.

Возможно несколько вариантов устранения проблемы. Я же использовал первый или второй способ для отключения утечки памяти. Но не стоит исключать вариант обновления драйверов сетевой карты. Так как сейчас производители уже выпустили обновленные версии драйверов, автоматически исправляющие ошибки с невыгружаемым пулом памяти Windows 10.

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

Службы

Первый способ заключается в отключении службы мониторинга сетевой активности (Windows Network Data Usage Monitoring Driver) в Windows 10. Выполнением буквально одной команды проблема с невыгружаемым пулом памяти будет полностью решена.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Реестр

Перед внесением изменений в реестр рекомендуется создать резервную копию реестра Windows 10. Это предоставит возможность в любой момент при необходимости восстановить любые изменения в реестре.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Для применения изменений выполните перезагрузку компьютера. После включения компьютера память будет освобождаться в автоматическом режиме. Больше утечек оперативной памяти из-за не будет. Смотрите также инструкцию: Как очистить оперативную память на Windows 10.

Драйвера

В некоторых случаях исправить утечки оперативной памяти помогает настройка программного обеспечения к сетевой карте. При этом пользователь теряет весь функционал программы Killer Network Manager.

Сейчас уже с уверенностью можно сказать, что достаточно будет просто обновить драйвера производителя. Сегодня вместо программы Killer Network Manager пользователи получают обновленное средство управления Killer Control Center. В котором разработчики уже решили предыдущие ошибки и проблемы пользователей.

Как на меня самый удобный это первый способ, так как невыгружаемый пул памяти исчезает после отключения всего одной службы. Эта проблема актуальна и для пользователей предыдущих операционных систем.

В этой статье мы рассмотрели как исправить невыгружаемый пул Windows 10 и собственно разобрались что такое невыгружаемый пул памяти. Пишите в комментарии встречались ли Вы с этой проблемой, и как с ней боролись. Надеюсь эта статья была для Вас полезной.

Источник

Невыгружаемый пул занимает память Windows 10 — решение

Проблема в большинстве случаев вызвана неправильной работой сетевых драйверов в сочетании с драйверами монитора использования сети Windows 10 (Network Data Usage, NDU) и достаточно просто решается, о чем и пойдет речь в этой инструкции. В некоторых случаях, причиной утечек памяти могут быть и другие драйверы оборудования.

Исправление утечки памяти и заполнения невыгружаемого пула при работе в сети

Наиболее распространенной ситуацией является, когда невыгружаемый пул RAM Windows 10 заполняется при работе в Интернете. Например, легко заметить, как он растет при скачивании большого файла и после этого не очищается.

Если описанное — ваш случай, то исправить ситуацию и очистить невыгружаемый пул памяти можно следующим образом.

По завершении, перезагрузите компьютер и проверьте, была ли исправлена проблема. Как правило, если дело действительно в драйверах сетевой карты, невыгружаемый пул больше не растет больше своих обычных значений.

Если шаги, описанные выше, не помогли, попробуйте следующее:

Заполняемый невыгружаемый пул оперативной памяти в Windows 10 не всегда бывает вызван драйверами именно сетевой карты (хотя чаще всего) и если действия с драйверами сетевых адаптеров и NDU не приносят результата, можно прибегнуть к следующим шагам:

Как узнать, какой драйвер вызывает утечку памяти в Windows 10 с помощью Poolmon

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Выяснить конкретные драйверы, приводящие к тому, что невыгружаемый пул памяти растет можно с помощью инструмента Poolmoon, входящим в состав Windows Driver Kit (WDK), скачать который можно с официального сайта Майкрософт.

Дальнейший путь — выяснить по именам файлов драйверов (с помощью Google, например), к какому оборудованию они относятся и пробовать установить, удалить или откатить в зависимости от ситуации.

Источник

Преодолевая границы Windows: выгружаемый и невыгружаемый пулы

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

В этот раз я собираюсь поведать о двух фундаментальных ресурсах ядра, выгружаемом (от англ. paged) и невыгружаемом (от англ. nonpaged) пулах, которые основаны на первых двух ресурсах и которые имеют непосредственное влияние на многие другие ограничения системных ресурсов, включая максимальное число процессов, объектов синхронизации и дескрипторов.

Выгружаемый и невыгружаемый пулы представляют собой ресурсы памяти, которые операционная система и драйвера устройств используют для сохранения своих структур данных. Диспетчер пула работает в режиме ядра, используя области системного виртуального адресного пространства (которое описано в статье про виртуальную память) для памяти, которую он выделяет. Диспетчер пула ядра также работает с диспетчером C-runtime и диспетчером динамической памяти Windows, которые выполняются в пользовательском режиме. Поскольку минимальный размер выделяемой виртуальной памяти кратен размеру системной страницы (4KB для систем x86 и x64), эти вспомогательные диспетчеры памяти делят большие выделяемые участки памяти на маленькие части, чтобы память не расходовалась впустую.

Например, если приложению требуется 512-байтный буфер для хранения данных, диспетчер динамической памяти берет одну из областей, которые он может выделить, и отмечает, что первые 512 байт используются, возвращая указатель на этот участок памяти и помещает оставшуюся память в список, который он использует для хранения информации о свободных областях динамической памяти.

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

Выгружаемый пул
Выгружаемый пул, с другой стороны, получил свое название потому, что Windows может записать данные, которые он хранит, в файл подкачки, позволяя тем самым использовать физическую память, которая при этом освобождается, в других целях. Как и в случае с виртуальной памятью пользовательского режима, когда драйвер или система ссылается на выгружаемый пул памяти, которых находится в файле подкачки, и диспетчер памяти считывает данные обратно в физическую память. Самым большим потребителем выгружаемого пула, по крайней мере в Windows Vista и более поздних ОС, обычно является системный реестр, так как ссылки на ключи и другие структуры данных реестра хранятся в выгружаемом пуле. Структуры данных, которые представлены в виде отображаемых на память файлов, называемых секциями, также хранятся в выгружаемом пуле.

Просмотр информации об использовании выгружаемого и невыгружаемого пулов.

Есть три счетчика, показывающих информацию об использовании пула:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

После того, как вы настроите символы, откройте диалоговое окно System Information (кликните на пункте System Information меню View или нажмите Ctrl+I), чтобы увидеть информацию о пуле в секции Kernel Memory. Вот как это выглядит в системе Windows XP с 2Гб памяти:

Как я упоминал в предыдущей статье, в 32-битной Windows системное адресное пространство по умолчанию составляет 2Гб. По сути, это значение устанавливает границу для невыгружаемого пула (или любого типа системной виртуальной памяти) в 2Гб, но он должен делить это пространство с другими типами ресурсов, такими как собственно ядро, драйвера устройств, системные входы таблицы страниц (PTE) и представления системных файлов.

До Vista диспетчер памяти в 32-битных Windows вычислял, сколько адресного пространства назначать каждому типу ресурсов во время загрузки. Его формулы принимали во внимание множество факторов, главным из которых являлось количество физической памяти в системе. Объем адресного пространства, выделяемого им для невыгружаемого пула, начинается с 128Мб для системы с 512Мб системной памяти и достигает 256Мб для систем с 1Гб памяти и более. На системе, загруженной с опцией /3GB, которая расширяет адресное пространство пользовательского режима до 3Гб за счет адресного пространства ядра, максимальный размер невыгружаемого пула составляет 128Мб. На предыдущем снимке Process Explorer отображается максимум в 256Мб на системе Windows XP с 2Гб системной памяти, загруженной без флага /3GB.

Диспетчер памяти в Windows Vista и в более поздних версиях системы, включая Server 2008 и Windows 7 (32-битной версии Windows Server 2008 R2 нет) не реализует статическое разделение системного адресного пространства; вместо этого, он динамически назначает диапазоны адресов различным типам памяти согласно изменяющимся требованиям. Однако, он все еще назначает максимальный размер невыгружаемого пула, который основывается на количестве физической памяти, равный чуть больше чем 75% от физической памяти или двум гигабайтам, в зависимости от того, что меньше. Вот максимум для системы Windows Server 2008 с 2Гб оперативной памяти:

64-х битные системы Windows обладают гораздо большим адресным пространством, так что диспетчер памяти может спокойно распределять его статически, не беспокоясь о том, что какому-то типу данных не будет хватать места. 64-битная Windows XP и Windows Server 2003 устанавливают максимальный размер невыгружаемого пула немногим более 400Кб на каждый мегабайт оперативной памяти или в 128Гб, в зависимости от того, что меньше. Вот снимок из системы с 64-битной Windows XP и 2Гб памяти:

Диспетчеры памяти 64-битных Windows Vista, Windows Server 2008, Windows 7 и Windows Server 2008 R2, так же как и их 32-битные аналоги (за исключением Windows Server 2008 R2, у которого, как уже упоминалось ранее, нет 32-битной версии) устанавливают ограничение на размер невыгружаемого пула приблизительно в 75% от RAM, однако максимальное значение для него равно 128Гб вместо 2Гб. Вот скриншот системы с 64-битной Windows Vista с 2Гб системной памяти, для которой ограничение на размер невыгружаемого пула равно таковому для системы с 32-битной Windows Server 2008, снимок которой приведен ранее:

И наконец, вот данное ограничение для системы с 64-битной Windows 7 с 8Гб памяти:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Вот сводная таблица ограничений на размер невыгружаемого пула для различных версий Windows:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Ограничения на размер выгружаемого пула
Ядро и драйверы устройств используют выгружаемый пул для хранения любых структур данных, которые никогда не будут вызываться изнутри DPC или ISR, или когда спинлок (spinlock) занят. Именно поэтому содержимое выгружаемого пула может либо находиться в физической памяти, либо, если алгоритмы работы диспетчера памяти решат использовать данную физическую память для других целей, быть записано в файл подкачки, откуда его, если это понадобиться, можно возвратить обратно в физическую память. Потому ограничение на размер выгружаемого пула прежде всего зависит от объема системного адресного пространства, выделяемого для выгружаемого пула диспетчером памяти.

Для 32-х битной Windows XP данный предел вычисляется исходя из того, сколько адресного пространства выделено другим ресурсам, в особенности таблице PTE, с максимальным значением в 491Мб. Для системы с Windows XP и 2Гб системной памяти данное ограничение равно 360Мб:

32-х битный Windows Server 2003 резервирует для выгружаемого пула больше места, так что верхний предел в этом случае равен 650Мб.

Так как 32-битная Windows Vista и все последующие системы реализуют динамическое адресное пространство ядра, для них данное ограничение просто установлено в 2Гб. Потому увеличение размера выгружаемого пула прекратится тогда, когда системное адресное пространство заполнится, либо когда будет достигнут установленный системой предел.

64-х битные Windows XP и Windows Server 2003 устанавливают этот максимум равным ограничению на размер невыгружаемого пула, умноженного на четыре, либо 128 Гб, в зависимости от того, что окажется меньше. Вот снимок системы с 64-битной версией Windows XP, на котором предел размера выгружаемого пула равен как раз четырем размерам невыгружаемого пула:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

И наконец, 64-битные версии Windows Vista, Windows Server 2008, Windows 7 и Windows Server 2008 R2, просто устанавливают данный максимум в 128Гб, позволяя тем самым с помощью ограничения на размер выгружаемого пула определить системное ограничение. Вот скриншот системы с 64-битной Windows 7:

Вот сводная таблица ограничений на размер выгружаемого пула для различных операционных систем:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Я запускал Notmyfault на множестве тестовых систем на виртуальных машинах, чтобы увидеть, как как они поведут себя и не встретятся ли с какими-нибудь системными ошибками. После того, как невыгружаемый пул на системе с 64-битной Windows XP бы исчерпан, попытка запуска командной строки завершилась следующим диалоговым окном:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

В 32-битной Windows Server 2008 с уже запущенной командной строкой после того, как невыгружаемый пул был исчерпан, даже простые операции, такие как изменения текущей директории или вывод списка директорий, завершались с ошибкой:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

На одной из тестовых систем я увидел сообщение об ошибке, в котором была указано, что, возможно, данные были потеряны. Надеюсь, вы никогда не увидите подобного диалогового окна на вашей реальной системе!

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Такие же ошибки возникали и в случае исчерпания выгружаемого пула. Вот результаты попытки запуска Блокнота из командной строки на системе с 32-битной Windows XP, после того как выгружаемый пул был исчерпан. Обратите внимание на то, что Windows не смогла запустить перерисовку заголовка окна, а также выдавала различные ошибки при каждой новой попытке запуска приложения:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

А вот пример того, как на системе с 64-битной Windows Server 2008 после исчерпания выгружаемого пула в папке Стандартные меню Start не оказалось ни одного пункта:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

На данном снимке вы можете видеть максимальный уровень занимаемой памяти (который также отображается в диалоговом окне System Infomations программы Process Explorer), который стремительно повышается по мере того, как Notmyfault совершает утечку крупных участков выгружаемого пула и достигает максимума в 2Гб на системе, работающей по управлением 32-битной версии Windows Server 2008 с 2Гб оперативной памяти:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Причина, по которой Windows не зависает после того, как пул был исчерпан, даже при том, что система неработоспособна, состоит в том, что подобная ситуация может быть временной, возникшей вследствие пика рабочей нагрузки, после которого пул будет освобожден и система сможет вернуться в нормальный режим работы. Однако, если пул опустошает драйвер (или ядро), причина такой утечки становится важной. В этом случае важную роль играют теги пула, описанные в начале этой статьи.

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

После того, как вы нашли искомый тег в левой колонке (в данном случае это «Leak»), следующим шагом будет нахождение драйвера, использующего этот тег. Так как эти теги хранятся в образе драйвера, вы можете просканировать данный образ на наличие рассматриваемого тега. Утилита String от Sysinternals сохраняет искомые строки в указанном вами файле (искомая строка по умолчанию должна быть не короче 3-х символов, и, так как большинство образов драйверов находятся в директории %Systemroot%\System32\Drivers, вы можете открыть командную строку, изменить текущую директорию на указанную и выполнить команду «strings * | findstr «. После того, как вы найдете соответствия, вы можете получить информацию о версии драйвера с помощью утилиты Sigcheck Sysinternals. Вот как выглядит процесс поиска драйвера, использующего тег «Leak»:

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Что такое невыгружаемый пул. Смотреть фото Что такое невыгружаемый пул. Смотреть картинку Что такое невыгружаемый пул. Картинка про Что такое невыгружаемый пул. Фото Что такое невыгружаемый пул

Используйте утилиту Strings для поиска в дампе информации о драйвере, использующем тег, определенный вами как причина утечки.

На данный момент в этой серии статей я рассказал вам о самых фундаментальных ограничениях Windows, включая физическую память, виртуальную память, выгружаемый и невыгружаемый пулы. В следующий раз я расскажу об ограничениях на количество процессов и потоков, поддерживаемого Windows, которые основываются на этих основных системных ограничениях.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *