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

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

После того, как я увеличил объем памяти на своем компьютере, невыгружаемый пул стал действительно большим (увеличился с 96 МБ при 2 ГБ оперативной памяти до 715 МБ при 16 ГБ).

Слева направо: измерение выгружаемого пула по Rammap составляет 715 МБ, диспетчер задач с функцией «Просмотреть все процессы» не превышает 1 МБ (столбец NP), а параметры реестра составляют 192 МБ, которые просто игнорируются.

Это не понятно, так как диспетчер задач сообщает о менее чем 1 МБ невыгружаемого пула из-за процессов. А Poolmon сообщает о 35 МБ для самого большого использования памяти невыгружаемого пула.

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

Эти скриншоты были сделаны сразу после запуска, так что это не утечка памяти в драйвере или что-то в этом роде. Создание образа и запуск его в виртуальной машине, после запуска используется только 350 МБ памяти!

Microsoft указывает значение в реестре для ограничения размера невыгружаемого пула:https://technet.microsoft.com/en-us/library/cc976155.aspxно это и перезапуск не решают проблему. Я пробовал задавать значения в байтах (так написано в документации), в КБ и МБ. Не повезло.

На Linux я могу рендерить 3D сцены, занимающие до 15,2 ГБ. На Windows, из-за некоторой защиты и этого огромного пула, я могу использовать только 12 ГБ, а затем начинается подкачка на диск, из-за чего один рендер занимает > 20 минут вместо 1 мин 24 с на Linux.

Так как же ограничить размер невыгружаемого пула?

решение1

Запуск программы, требующей большого объема памяти (например, 3D- или фотоприложения), и предоставление ей достаточного объема памяти для начала использования файла подкачки приведет к освобождению невыгружаемой памяти.

Понятия не имею, почему, но в тот самый момент, когда начинает использоваться файл подкачки, невыгружаемый пул падает с 750 МБ до 200 МБ и после этого остается на этом уровне (проверено в течение нескольких часов интенсивной работы с большим количеством запущенных программ, использующих большой объем памяти).

В моем случае это заставляет windows7 блокировать только 350 МБ памяти из 16 ГБ (по сравнению с 1 ГБ при запуске). Конечно, используется гораздо больше памяти, но это хорошее использование за счет кэширования, которое делает ее доступной, одновременно ускоряя запуск программы и считывая данные из ОЗУ, а не с диска. Такой огромный невыгружаемый пул по умолчанию — это просто потерянная память, заставляющая систему начинать подкачку гораздо раньше, чем следовало бы.

Эта ошибка огромного начального невыгружаемого пула не возникает в версиях Windows до 7.

Связанный контент