System Center 2022 DPM на Windows Server 2022 : Исчерпание оперативной памяти и аварийные перезагрузки. Тюнинг ReFS

System Center 2022 DPM on Windows Server 2022: RAM Exhaustion and Crashes. Tuning ReFSБыло замечено, что на сервере резервного копирования с ОС Windows Server 2022 и System Center 2022 DPM, и, как следствие, активным использованием Modern Backup Storage (MBS) поверх Resilient File System (ReFS), с небольшим объёмом ОЗУ (16GB) периодически по ночам во время активных задач резервного копирования система стала падать.

График утилизации ОЗУ показал, что в моменты падения уровень утилизации памяти подходит к критическим значениям.

Memory Exhaustion and Crashes on DPM server with MBS over ReFS

Проблема с исчерпанием памяти при использовании связки ReFS+DPM тянется со времён Windows Server 2016 и по моему опыту нет однозначного явного решения этой проблемы. Но есть некоторые рекомендации по тюнингу настроек, связанных с утилизацией памяти при использовании ReFS

Статья с рекомендациями для Windows Server 2016: Update resolves heavy memory use in ReFS on a computer that is running Windows Server 2016

Значения по умолчанию в Windows Server 2022 & System Center 2022 DPM и рекомендуемые значения:

HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\
RefsEnableLargeWorkingSetTrim не существует 1
RefsNumberOfChunksToTrim не существует 32
RefsDisableCachedPins не существует 1
RefsProcessedDeleteQueueEntryCountThreshold не существует 2048
RefsEnableInlineTrim 1 1
HKLM:\SYSTEM\CurrentControlSet\Services\Disk\
TimeOutValue 65 120
HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage\
DuplicateExtentBatchSizeinMB 100 100

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

Настройки ReFS влияют на поведение тримминга, кэша и inline операций:

  • RefsEnableLargeWorkingSetTrim - включает/выключает "агрессивный" трим ReFS.
  • RefsNumberOfChunksToTrim - сколько чанков ReFS будет триммить за раз.
  • RefsDisableCachedPins - отключает кэширование "pins" (оптимизация записи/чтения).
  • RefsProcessedDeleteQueueEntryCountThreshold - порог обработки очереди удалённых блоков.
  • RefsEnableInlineTrim - управляет inline trim (TRIM сразу при удалении).

Настройки драйвера Disk.sys:

  • TimeOutValue (в секундах) - время ожидания отклика диска до того, как Windows считает его "неотвечающим".

Настройки System Center DPM:

  • DuplicateExtentBatchSizeinMB - размер пакета (в мегабайтах) для операций с дубликатами extent’ов в DPM. Влияет на производительность deduplication / оптимизации хранения.

Пример PowerShell-команд для сбора информации об установленных значениях реестра:

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsEnableLargeWorkingSetTrim, RefsNumberOfChunksToTrim, RefsDisableCachedPins, RefsProcessedDeleteQueueEntryCountThreshold, RefsEnableInlineTrim | FL RefsEnableLargeWorkingSetTrim, RefsNumberOfChunksToTrim, RefsDisableCachedPins, RefsProcessedDeleteQueueEntryCountThreshold, RefsEnableInlineTrim
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Disk\" -Name TimeOutValue | FL TimeOutValue
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage\" -Name DuplicateExtentBatchSizeinMB | FL DuplicateExtentBatchSizeinMB

Пример команд настройки указанных значений реестра:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsEnableLargeWorkingSetTrim -PropertyType DWord -Value 1 -Verbose
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsNumberOfChunksToTrim -PropertyType DWord -Value 32 -Verbose
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsDisableCachedPins -PropertyType DWord -Value 1 -Verbose
NeW-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsProcessedDeleteQueueEntryCountThreshold -PropertyType DWord -Value 2048 -Verbose
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem\" -Name RefsEnableInlineTrim -Value 1 -Verbose
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Disk\" -Name TimeOutValue -Value 120 -Verbose
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage\" -Name DuplicateExtentBatchSizeinMB -Value 100 -Verbose

После настройки потребуется перезагрузка сервера.

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

Дополнительные источники информации:

Всего комментариев: 4 Комментировать

  1. Алексей /

    Добрый день.
    А какой объем у вас томов MBR? Я когда боролся именно с ним, в рекомендациях было на 1 ТБ выделять 1 Гб РАМ. + так же 3-5% пула должно было быть на ССД. Вроде бы это должно было решить все проблемы.
    Но после 2-3 лет борьбы, еще на WS 2016 + DPM 2016 бросил это бесперспективное занятие, и по советам из коментариев к вашей статье https://blog.it-kb.ru/2022/03/02/in-place-upgrade-system-center-2012-r2-data-protection-manager-to-system-center-2016-dpm-on-windows-server-2012-r2-with-update-sql-server-2012-to-sql-server-2016/, перевел все на старое MBR, и все работает как часы уже в связке WS 2019 + SCDPM 2022 на 2 серверах.

    1. Алексей Максимов / Автор записи

      Сейчас не вспомню какой точно был объём хранилища, но решающей роли это не сыграло. Для проверки ОЗУ увеличивалась сначала в два раза, а потом в четыре (до 64GB при том что объём хранилища был примерно вдвое меньше). В такой конфигурации приведённый здесь тюнинг позволил немного стабилизировать работу сервера, но полностью не решил проблему с периодическими падениями (они просто стали реже проявляться, но концептуально проблема не решилась). Всё это и кончилось, как я писал в комментариях ранее, на полный отказ от DPM и переход на Veeam Backup & Replication

  2. Alexander /

    Я потратил на этот кривой продукт довольно много времени, в том числе вел кейсы в Microsoft.
    1) ReFS у меня никогда не работало нормально, вернее так, скорость массива деградировала со временем (за месяц), отклик на разделе становился 100-200ms и выше, помогало полное форматирование диска и пересоздание бэкапов, и так до следующего раза.
    Был тред на technet, который MS удалил, назывался он "DPM performance downward spiral". Вот тут осталась ссылка на этот тред: https://learn.microsoft.com/en-us/answers/questions/403067/dpm-2019-slow-backup-performance
    Сам тред - https://social.technet.microsoft.com/Forums/en-US/7e4e4da4-1168-46cd-900f-9ca2bc364d5a/dpm-2016-mbs-performance-downward-spiral?forum=dataprotectionmanager
    Все припарки в registry не помогали, это первым делом рекомендовал саппорт MS.
    2) Рекомендации от MS - сделать тиринговй раздел для бэкапов, 10% от объёма диска сделать на SSD, деградация наступала ну не через месяц, а через два-три.
    3) Сам принцип хранения кучи vhdx на разделе ReFS ущербен, размер блока 4K на ReFS, я спрашивал у поддержки MS - могу я сам форматировать в 64K, ответ - нельзя. При этом тот же Veeam спокойно работает с 64К блоком.
    4) MS сдались, и рекомендовали на наших объёмах использовать NTFS. Связка W2012R2 и SCDPM 2016/2019. Мы так и делали, пока не стали переводить сервера с W2012R2.
    5) Я провёл эксперименты с разделом на чистом SSD, деградация скорости тоже наступает, ну не через месяц, а через пол-года.
    6) Объёмы RAM 256Gb на серверах. Я устанавливал и 512G RAM, это не помогает с проблемами.
    7) Командлет в posh: Copy-DPMDatasourceReplica с ключом -CheckReplicaFragmentation добавили в DPM 2019 UR1, после наших кейсов в MS, но мы столкнулись, что при работе на больших объёмах, пока идёт работа скрипта, новые точки восстановления не создаются. Работает на мелких объёмах.

    Мой вывод, что мы сервера SCDPM доиспользуем на NTFS, единственный минус это не эффективное расходывание места на разделах. ReFS нормально работает на очень маленьких объёмах бэкапов.

    После борьбы со скоростью ReFS, я наткнулся на один тред, где рекомендовали как отключить ReFS, но там был ключ один, 2й ключ я сам нашёл, смотрел procmon изменения в registry от процесса msdpm.exe.
    Вот ключи:
    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration\DiskStorage]
    "EnableLegacyStorage"="1"
    "DisableReFSStorage"="1"
    Проверено и работает на Windows 2016/2019/2022/2025 и SCDPM 2016/2019/2022/2025.
    Главное условие, не должно быть никогда создано на сервере раздела с ReFS, то есть нужна чистая установка SCDPM или нужно чистить таблицы в базе SCDPM.

    1. Алексей Максимов / Автор записи

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

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