Как разгрузить оперативную память в Windows 10?

Файл подкачки

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

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

Виртуальное адресное пространство

Общий объем памяти, доступной программе, равен сумме размера файла подкачки и размера оперативной памяти. Этот объем памяти называется виртуальным адресным пространством.

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

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

С точки зрения скорости трансляции адресов для ссылок на другие данные большие страницы имеют преимущества. Именно поэтому большие страницы используются операционной системой для проецирования файлов ntoskrnl.exe и hal.dll, а также базовых системных данных.

Проецирование системных файлов на большие страницы можно настроить при помощи параметра REG_DWORD типа LargePageMinimum ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

При значении данного параметра, равном 0xffffffff, диспетчеру памяти будет запрещено использовать большие страницы. Также при этом размер невыгружаемого пула будет уменьшен до 128 Мбайт.

Данный параметр определяет объем памяти, начиная с которого диспетчеру памяти будет разрешено проецировать файлы ntoskrnl.exe, hal.dll и загрузочные драйверы на большие страницы.

Также отключить проецирование файлов ntoskrnl.exe, hal.dll и загрузочных драйверов на большие страницы можно при помощи параметра REG_DWORD типа EnforceWriteProtection, расположенного в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

Данный параметр позволяет включить механизм защиты системного кода от записи (при значении, равном 1).

Побочным эффектом включения защиты системного кода от записи является то, что диспетчер памяти будет проецировать файлы ntoskrnl.exe, hal.dll и загрузочные драйверы на малые страницы (а не на большие). Это будет гарантировать, что конкретная страница памяти содержит только системный код (при использовании больших страниц есть вероятность, что страница будет содержать как системный код, так и обычный).

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

Для этого достаточно воспользоваться параметром REG_MULTI_SZ типа LargePageDrivers, расположенным в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

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

Операционным системам 32-разрядного типа доступно максимум 4 Гигабайт виртуальной памяти. По умолчанию 2 Гбайта из четырех отданы на нужды программ — остальные же используются операционной системой.

Как правило, 2 Гбайт, отданных под нужды программ, вполне достаточно. Если же вы работаете с программами, требующими огромных объемов виртуальной памяти, можно увеличить размер виртуальной памяти, отданный под нужды программ, до 3 Гбайт. Для этого используются опции загрузки операционной системы /3GB или /USERVA.

PAE и AWE

Без опции PAE размер файла подкачки для 32-разрядных операционных систем не может быть больше 4 Гбайт (это максимальный размер общего виртуального пространства). Опция PAE позволяет адресовать до 64 Гбайт виртуального пространства для 32-разрядных систем, и до 1024 Гбайт для 64-разрядных операционных систем.

Опция PAE является функцией диспетчера памяти и позволяет расширить максимальный доступный объем виртуальной памяти.

В 64-разрядных операционных системах кроме опции PAE используется механизм AWE. Данный механизм является набором API-интерфейсов, позволяющий программам резервировать большие области памяти.

Диалог Виртуальная память

Изменить размер файла подкачки, его расположение, а также создать сразу несколько файлов подкачки на разных разделах диска (или удалить один из них) можно при помощи диалога ВИРТУАЛЬНАЯ ПАМЯТЬ. Данный диалог отображается после нажатия на кнопку ИЗМЕНИТЬ, расположенную на вкладке ДОПОЛНИТЕЛЬНО диалога ПАРАМЕТРЫ БЫСТРОДЕЙСТВИЯ (этот диалог отображается при помощи кнопки ПАРАМЕТРЫ… поля БЫСТРОДЕЙСТВИЕ, расположенного на вкладке ДОПОЛНИТЕЛЬНО диалога СВОЙСТВА СИСТЕМЫ).

С помощью этого диалога изменяется значение параметра REG_MULTI_SZ типа PagingFiles, расположенного в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management. Данный параметр содержит в себе пути к файлам подкачки на разных разделах диска, а также минимальный и максимальный размер этих файлов подкачки.

Настройки файла подкачки

Также в ветви реестра HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management могут присутствовать дополнительные параметры настройки работы файла подкачки. Эти настройки содержатся в параметрах REG_DWORD типа.

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

Значение данного параметра можно изменить при помощи элемента ЗАВЕРШЕНИЕ РАБОТЫ: ОЧИСТКА ФАЙЛА ПОДКАЧКИ ВИРТУАЛЬНОЙ ПАМЯТИ подраздела КОНФИГУРАЦИЯ КОМПЬЮТЕРА/КОНФИГУРАЦИЯ WINDOWS/ПАРАМЕТРЫ БЕЗОПАСНОСТИ/ЛОКАЛЬНЫЕ ПОЛИТИКИ/ПАРАМЕТРЫ БЕЗОПАСНОСТИ оснастки РЕДАКТОР ОБЪЕКТОВ ГРУППОВОЙ ПОЛИТИКИ.

PagingFileQuota Значение данного параметра определяет квоту любого процесса на количество используемой памяти файла подкачки. Эта квота заносится в структуру квот процесса.

По умолчанию значение данного параметра равно 0. То есть, квота не установлена.

Служба предвыборки Superfetch

Тип запуска: автоматически. Учетная запись: система. Дополнительные привилегии: SETCBPRIVILEGE, SEPROFILESINGLEPROCESSPRIVILEGE, SETAKEOWNERSHIPPRIVILEGE, SEDEBUGPRIVILEGE. Файлы службы: sysmain.dll. Исполняемый файл: svchost.exe -k LocalSystemNetworkRestricted. Подраздел реестра: SysMain. Службы, необходимые для работы данной: УДАЛЕННЫЙ ВЫЗОВ ПРОЦЕДУР (RPC) (RpcSs), FILE INFORMATION FS MINIFILTER (Fileinfo).

Механизм предвыборки в операционной системе Windows Vista реализован в виде отдельной службы SUPERFETCH.

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

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

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

Настройки механизма предвыборки

Настройки механизма предвыборки можно изменить только при помощи реестра.

Настройки службы

Основные настройки механизма предвыборки хранятся в параметрах REG_DWORD типа ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters.

EnableBootTrace Значение данного параметра определяет, будет ли выполняться трассировка работы службы SUPERFETCH во время запуска операционной системы.

EnablePrefetcher Значение данного параметра определяет, будет ли использовать механизм предвыборки данных, реализованный в Windows XP.

Данный параметр может принимать следующие значения.

  • 0. Отключает механизм предвыборки, реализованный в Windows XP.
  • 1. Включает механизм предвыборки для программ на этапе работы операционной системы.

    При этом механизм предвыборки выполняет мониторинг обращений программы к файлу метаданных MFT в течение 10 секунд с момента запуска программы.

    Вся полученная информация заносится в файлы вида «программа»-«хэш строки пути к файлу».pf каталога %systemroot%\Prefetch.

  • 2. Включает механизм предвыборки на этапе запуска операционной системы.

    Механизм предвыборки выполняет мониторинг обращений к файлу метаданных MFT в течение 30 секунд после запуска оболочки операционной системы (explorer.exe), либо в течение 60 секунд после инициализации всех служб, либо после 120 секунд после входа в систему (в зависимости от того, какой из этих трех интервалов истечет первым).

    Вся полученная информация заносится в файл NTOSBOOT-B00DFAAD.pf каталога %systemroot%\Prefetch.

  • 3. Полностью включает механизм предвыборки, реализованный в Windows XP.

EnableSuperfetch Значение данного параметра определяет, будет ли использовать новый механизм предвыборки данных, реализованный в Windows Vista.

HostingAppList Данный параметр имеет строковый тип. Он содержит в себе список программ, которые считаются хостами для других процессов.

Имя файла %systemroot%\Prefetch, хранящего сведения о работе хостов для других процессов, формируется способом, отличным от способа создания имени файла для обычных программ («программа»-«хэш строки пути к файлу».pf).

При формировании имени для файла .pf хоста в хэш входит не только путь к программе, но и опции запуска хоста. Поэтому для хостов может существовать множество файлов, содержащих данные предвыборки — каждый файл для программы с собственными опциями.

Дополнительные настройки

Также настройки работы механизма предвыборки хранятся в параметрах REG_DWORD типа ветви реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Prefetcher.

  • BootFilesOptimized. Значение данного параметра определяет, будет ли выполняться оптимизация загрузки файлов при запуске операционной системы.
  • LastDiskLayoutTimeString. Данный параметр имеет строковый тип. Он определяет дату последнего изменения файла Layout.ini, расположенного в каталоге %systemroot%\Prefetch.

Файл Layout.ini

Файл Layout.ini используется операционной системой для записи в него оптимальной последовательности расположения файлов на диске (с точки зрения повышения скорости запуска программ).

Периодически при простое операционной системы выполняется дефрагментация на основе данных оптимального расположения файлов, находящихся в файле Layout.ini.

Вы можно настроить параметры использования файла Layout.ini, расположенного в каталоге %systemroot%\Prefetch. Для этого нужно воспользоваться параметрами REG_DWORD типа, расположенными в ветви реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout.

  • LayoutFilePath. Данный параметр имеет строковый тип. Он определяет путь к файлу Layout.ini.
  • EnableAutoLayout. Значение данного параметра определяет, будет ли выполняться автоматическое изменение содержимого файла Layout.ini.

Настройки оперативной памяти

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

Выгружаемый и невыгружаемый пул

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

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

Настройки выгружаемого и невыгружаемого пула содержатся в параметрах REG_DWORD типа, расположенных в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

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

По умолчанию значение данного параметра равно 0. То есть, квота не установлена.

PagedPoolQuota Значение данного параметра определяет квоту любого процесса на количество используемой подкачиваемой памяти. Эта квота заносится в структуру квот процесса.

По умолчанию значение данного параметра равно 0. То есть, квота не установлена.

PagedPoolSize Определяет начальный размер выгружаемого пула, используемый при его создании.

Если значение данного параметра будет равно 0xffffffff, тогда в качестве начального значения будет использоваться максимальный размер пула.

NonPagedPoolSize Определяет начальный размер невыгружаемого пула, используемый при его создании.

Если значение данного параметра будет равно 0xffffffff, тогда в качестве начального значения будет использоваться максимальный размер пула.

Настройки памяти

Настройки взаимодействия с оперативной памятью содержатся в параметрах REG_DWORD типа, расположенных в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

IOPageLockLimit Данный параметр определяет количество оперативной памяти, которую операционная система будет резервировать для операций I/O (операций чтения/записи). Чем больше памяти будет резервироваться, тем быстрее будут выполняться операции работы с файлами и папками.

По умолчанию резервируются следующие объемы оперативной памяти: 16 Мб для 128 Мб оперативной памяти, 64 Мб для 256 Мб оперативной памяти, 128 Мб для 512 Мб оперативной памяти.

DisablePagingExecutive Если значение данного параметра равно 1, тогда операционная система будет хранить свое ядро в оперативной памяти, не помещая его в файл подкачки. Это позволяет повысить быстродействия работы операционной системы, но, если оперативной памяти недостаточно, снизить работу других программ.

LargeSystemCache Если значение данного параметра равно 0, тогда операционная система будет настроена для оптимизации работы приложений. Если же значение данного параметра равно 1, тогда будет выполнена настройка для оптимизации работы служб.

При установке значения в 1 4 Мбайт оперативной памяти будет дополнительно зарезервировано для кэша файловой системы. То есть, операционная система будет предоставлять приоритет системному рабочему набору, а не рабочему набору процессов.

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

Чем больше значение данного параметра, тем более эффективно будет работать диспетчер куч. Например, для 1 Гбайт оперативной памяти рекомендуется использовать значение параметра 0x00040000.

SystemPages Значение данного параметра определяет максимально возможное количество записей таблицы страниц.

Значение данного параметра определяет количество системных PTE (системное виртуальное адресное пространство), создаваемых по умолчанию. Системное PTE используется для динамического проецирования системных страниц.

AllocationPreference Если значение данного параметра будет равно 0x100000, тогда выделение памяти будет начинаться со старших адресов (по умолчанию используется выделение с младших адресов).

SessionImageSize Изменяет размер области в сеансовом пространстве (находится в системном адресном пространстве), описываемой переменной ядра MMSESSIONIMAGESIZE.

SessionPoolSize Изменяет размер области в сеансовом пространстве (находится в системном адресном пространстве), описываемой переменной ядра MMSESSIONPOOLSIZE.

SessionViewSize Изменяет размер области в сеансовом пространстве (находится в системном адресном пространстве), описываемой переменной ядра MMSESSIONVIEWSIZE.

ModifiedPageLife Данный параметр определяет интервал (в секундах) записи на диск проецированных измененных страниц памяти.

LowMemoryThreshold Определяет порог свободного объема памяти, при достижении которого будет возникать уведомление о малом объеме памяти. Операционная система предоставляет процессам пользовательского режима возможность ожидания таких уведомлений.

HighMemoryThreshold Определяет порог свободного объема памяти, при достижении которого будет возникать уведомление о большом объеме памяти. Операционная система предоставляет процессам пользовательского режима возможность ожидания таких уведомлений.

Утечка памяти

Утечкой памяти называется состояние, при котором какой-либо процесс резервирует дополнительный объем оперативной памяти, не используя ее, и не освобождая ее (в основном, из-за возникновения каких-либо ошибок). Таким образом, физически оперативная память может не использоваться, но с точки зрения операционной системы она вся будет отдана для работы одного процесса.

Механизм обнаружения утечки

Операционная система Windows Vista поддерживает механизм обнаружения утечки памяти. Для этого используется ветвь реестра вида HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\»название программы».

Также в данной ветви реестра могут присутствовать следующие параметры.

debugger Данный параметр имеет строковый тип. Значение данного параметра определяет программу (по умолчанию отладчик), в которой будет запущена соответствующая программа.

Для примера создайте в подразделе Image File Execution Options подраздел cmd.exe, а в нем параметр debugger со значением notepad.exe. После этого при попытке запуска программы cmd.exe будет запускаться программа notepad.exe, в ней уже программа cmd.exe.

ExecuteOptions Данный параметр имеет тип REG_DWORD. Его значение определяет, включен ли механизм DEP для соответствующей программы.

Диспетчер проверки драйверов

Расположение: %systemroot%\system32\verifier.exe.

Также в стандартную поставку операционной системы Windows Vista входит программа, с помощью которой можно обнаружить утечку памяти при работе драйверов.

Работа с данной программой состоит из трех этапов: выбора условий, по которым нужно проверять драйверы, выбор списка проверяемых драйверов, перезагрузка компьютера. На этапе запуска операционной системы smss.exe обнаружит в реестре параметры, требующие включения проверки драйверов, и задействует механизм верификации. После повторного запуска программы ДИСПЕТЧЕР ПРОВЕРКИ ДРАЙВЕРОВ вы сможете просмотреть состояние работы драйверов, за которыми выполняется слежение.

При включении механизма верификации программа ДИСПЕТЧЕР ПРОВЕРКИ ДРАЙВЕРОВ использует следующие параметры REG_DWORD типа, расположенные в ветви HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

VerifyDriverLevel Данный параметр является битовой маской, определяющей типы проверок работы драйверов, которые должны использоваться механизмом верификации.

VerifyDrivers Данный параметр имеет строковый тип. Он содержит имена драйверов, работу которых нужно проверить. Для проверки всех драйверов используется значение *.

PoolTagOverruns Если значение данного параметра равно 0, тогда программа ДИСПЕТЧЕР ПРОВЕРКИ ДРАЙВЕРОВ будет размещать буфер драйвера не в конце, а в начале страницы.

Это позволяет обнаружить в работе драйвера ошибки типа underrun errors.

PoolTag Данный параметр содержит набор тэгов использования особого пула.

Например, если значение данного параметра будет равно 2a (или символ *), тогда операционная система будет пытаться выделять всю память для драйверов из особого пула.

Продолжение следует

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

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

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

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

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

Службы

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

  1. Откроем окно Выполнить нажатием на клавиши Win+R.
  2. Вводим команду: sc config NDU start= disabled и нажимаем кнопку ОК.

Реестр

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

  1. Нажимаем Win+R и выполняем команду regedit, чтобы открыть редактор реестра.
  2. Перейдем по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndu.
  3. Значение параметра Start изменяем на 4.

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

Драйвера

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

  • Установите Killer Network Manager и отключить Управление пропускной способностью в настройках менеджера.
  • Установить драйвера без программы управления возможностями сетевой карты Killer Network Manager.

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

Выводы

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

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

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