Уменьшить потребление оперативной памяти windows server

Проблема высокой загрузки памяти системным файловым кэшем на Windows Server 2008 R2

На одном из файловых серверов под управлением Windows Server 2008 R2 обнаружилась проблема с высокой загрузки оперативной памяти (RAM), выливающаяся в проблемы с производительностью сервера и запущенных на нем служб. Как оказалось, память забивалась системным файловым кэшем с метаданными файловой системы. Проблеме потенциально подвержены все файловые сервера с большим количеством файлов, к которым обращаются пользователя. Наиболее критична проблема для 64 битных версий Windows, на которых размер метафайла в памяти может занять практически всю емкость установленной оперативной памяти. В статье разберемся как проявляется проблема, выявим ее источники и способы решения.

Высокая загрузка оперативной памяти на файловом сервере Windows

Проблема проявляется следующим образом: в диспетчере задач (Task Manager) видим, что на сервере оперативная память занята на 95-99%.

Перейдя на вкладку процессов, не удастся найти какой-то утекший процесс с аномально высоким потреблением памяти. Кроме того, если навскидку сложить память, занятую всеми процессами, отображаемыми в диспетчере задач, даже близко не удается приблизиться к 50% физической памяти, установленной на сервере. Так кто же съел всю память?

Реальный расклад по использованию оперативной памяти может дать утилита RAMMap (Марка Руссиновича). Качаем архив с утилитой и запускаем из архива файл RAMMap.exe с правами администратора. На вкладке Use Counts, видим, что больше всего физической памяти использует объектом Metafile (в нашем случае на него приходится 11 из 25 Гб оперативной памяти сервера).

Что такое метафайл в Windows?

Метафайл (Metafile) — это часть системного кэша, который содержит метаданные файловой системы NTFS и используется для увеличения быстродействия файловой системы при доступе к файлам. Метаданные NTFS включают в себя данные таблицы MFT (Master File Table). Для каждого файла/папки, к которому обращались пользователи, в метафайле создается соответствующий блок, размером как минимум 1 Кб (запись об атрибуте каждого файла занимает 1кб, и каждый файл имеет как минимум один атрибут). Таким образом, на файловых серверах с большим количеством файлов, к которым идут постоянные обращения, размер системного кэша NTFS (метафайла) может достигать нескольких гигабайт.

Читайте также:  Как правильно устанавливать обновления windows

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

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

К примеру, оценить размер MFT таблицы можно с помощью еще одной утилиты Руссиновича – ntfsinfo. К примеру, в нашем примере для 2 Тб диска размер MFT таблицы составляет 13 Гб.

Быстрая очистка метафайла MFT в памяти

Утилита RAMMap предоставляет возможность быстрой очистки используемой памяти от мусора без необходимости перезагрузки сервера. Для этого нужно в меню выбрать раздел Empty -> Empty System Working Set. После этой операции размер памяти под metafile уменьшился в десятки раз, а процент использования RAM сервером упал с 95% до 26%.

Основной недостаток такого метода – процесс очистки ручной и никак не автоматизируется.

Служба Dynamic Cache Service для управления файловым кэшем

Другим, более кардинальным, решением проблемы высокой загрузки оперативной памяти метафайлом файловой системы является установка службы Dynamic Cache Service (http://www.microsoft.com/en-us/download/details.aspx?id=9258). Данная служба через системные API позволяет управлять параметрами выделяемого кэша.

Установка DynCache довольно простая (подробные инструкции есть в архиве с программой).

  1. Копируем файл в DynCache.exe в каталог %SystemRoot%\System32
  2. Создадим службу DynCache командой sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= «Dynamic Cache Service»
  3. Импортируем файл DynCache.reg в реестр (содержит дефолтные значения)
  4. Изменим значения следующих ключей реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters
    • MaxSystemCacheMBytes: 4096 (dec) – максимальный размер кэша
    • MinSystemCacheMBytes: 100 (dec) – минимальный размер

В нашем случае, после установки службы DynCache, использование памяти метафайлом перестало превышать заданного нами значения 4 Гб. Пользователи каких-либо проблем с ухудшением производительности файлового сервера не выявили.

Как устранить потребление памяти в Windows

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

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

Как найти потребление памяти с помощью монитора ресурсов Windows

Resource Monitor — отличный встроенный инструмент, который даст вам более четкое представление о том, как Windows управляет ресурсами вашего компьютера (оперативной памятью, процессором, жесткими дисками и т. д). Если вы подозреваете, что приложение или процесс не освобождают вашу резервную память, Resource Monitor является отличной утилитой для начала наблюдения. Следующие шаги показывают, как просмотреть использование памяти вашей системой в Windows 10, 8 и 7.

1. Нажмите клавишу «Windows + R», введите «resmon», затем выберите «OK».

2. Перейдите на вкладку «Память», затем выберите «Рабочий набор», чтобы изменить порядок в списке.

3. Контролируйте режим ожидания (синяя полоса) с приложениями, которые вы обычно используете.

Диагностика утечки памяти с помощью Windows ‘RaMMap

RaMMap — это бесплатный инструмент от Microsoft, который в режиме реального времени показывает данные о том, как Windows управляет и распределяет вашу оперативную память. Как и в Resource Monitor, RaMMap отображает использование резервной памяти и работает в Windows 10, 8 и 7. Следующие шаги иллюстрируют, как загрузить и запустить RaMMap.

1. Перейдите на страницу Sysinternals RaMMap, затем выберите «Загрузить / Download RaMMap».

2. Перейдите в папку «Загрузки», скопируйте архив RaMMap в папку по вашему выбору и распакуйте его.

3. Щелкните правой кнопкой мыши файл приложения RaMMap и выберите «Запуск от имени администратора». Выберите «Да».

4. Ознакомьтесь с УСЛОВИЯМИ ЛИЦЕНЗИИ НА ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ SYSINTERNALS, затем выберите «Согласен».

5. Перейдите на вкладку «Использовать счетчики», затем проследите за тем, как увеличивается объем памяти в режиме ожидания.

6. Вы также можете более подробно рассмотреть каждый процесс, который использует вашу физическую память, на вкладке «Процессы».

Проверьте оперативную память с помощью средства диагностики памяти Windows

Запуск Windows Diagnostics — отличный способ тщательно проверить физическую память вашего компьютера на наличие ошибок.

1. Нажмите клавишу «Windows + R», введите «mdsched.exe», затем выберите «ОК».

2. Выберите «Перезагрузить сейчас» и проверьте наличие проблем (рекомендуется).

3. Тест начнется и может занять несколько часов. Следуйте инструкциям на экране после завершения теста.

Пустая резервная память в Windows с RaMMap

В дополнение к мониторингу использования памяти, RaMMap может также использоваться для очистки вашего резервного списка вручную.

1. Щелкните правой кнопкой мыши файл приложения RaMMap и выберите «Запуск от имени администратора».

2. Выберите «Очистить», затем «Очистить резервный список».

3. Ваша резервная память теперь должна быть значительно ниже.

Очистка резервной памяти с интеллектуальным очистителем резервных списков

Intelligent Standby List Cleaner (ISLC) — это бесплатный инструмент, предлагаемый Wagnardsoft, который автоматически очищает резервную память вашего компьютера на основе нескольких редактируемых условий.

1. Откройте веб-браузер, перейдите на официальную страницу форума приложения, выберите «Официальная загрузка здесь», затем выберите «Сохранить файл».

2. Перейдите в папку «Загрузки», щелкните правой кнопкой мыши архив ISLC 7z и выберите «Запуск от имени администратора». Выберите «Да», когда появится окно контроля учетных записей. Перейдите в папку, выберите «ОК», затем «Извлечь».

3. После извлечения щелкните правой кнопкой мыши ISLC Intelligent Standby List Cleaner и выберите «Запуск от имени администратора». Выберите «Да», когда появится диалоговое окно UAC.

4. Выберите «Очистить резервный список», чтобы вручную очистить резервную систему. Измените значения для: Размер списка не менее, а объем свободной памяти меньше, чем соответствует вашим требованиям.

Исправьте утечку памяти, обновив драйверы

Хотя существует несколько инструментов для проверки устаревших драйверов, лучше проверять их по отдельности, чтобы убедиться, что все обновлено.

1. Введите диспетчер устройств в поиске Windows, затем выберите «Открыть», как только результаты появятся.

2. Откройте раздел оборудования.

3. Щелкните правой кнопкой мыши устройство, затем выберите «Обновить драйвер».

Читайте также:  Блокировка компьютера windows 10 по gpo
Оцените статью