Поделиться через


Используйте кэш чтения CSV, расположенный в памяти

Область применения: Azure Stack HCI, версии 22H2 и 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016

В этом разделе описывается, как использовать системную память для повышения производительности Azure Stack HCI и Windows Server путем кэширования частых операций чтения. Записи нельзя кэшировать в памяти.

Azure Stack HCI и Windows Server совместимы с кэшем чтения общего тома кластера (CSV) в оперативной памяти. Использование системной памяти для кэширования операций чтения может повысить производительность приложений, таких как Hyper-V, которая использует неуправляемый ввод-вывод для доступа к файлам VHD или VHDX. (Операции ввода-вывода без буферизации — это любые операции, которые не кэшируются диспетчером кэша Windows.)

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

Обратите внимание, что кэш чтения в памяти CSV отличается от кэша пула хранения.

Рекомендации по планированию

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

Вы можете использовать до 80% общей физической памяти для кэша чтения в оперативной памяти CSV. Будьте осторожны, чтобы оставить достаточно памяти для виртуальных машин!

Заметка

Некоторые средства микробнчмаркинга, такие как DISKSPD и парк виртуальных машин, могут привести к худшим результатам с включенным кэшем чтения в памяти CSV, чем без него. По умолчанию VM Fleet создает один VHDX размером 10 ГиБ для каждой виртуальной машины (что составляет примерно 1 ТиБ для 100 виртуальных машин), а затем выполняет равномерно случайные чтения и записи на них. В отличие от реальных рабочих нагрузок, операции чтения не соответствуют каким-либо прогнозируемым или повторяющимся шаблонам, поэтому кэш в памяти не является эффективным и просто несет издержки.

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

Кэш чтения в памяти CSV доступен в Azure Stack HCI, Windows Server 2019 и Windows Server 2016 с теми же функциями. В Azure Stack HCI и Windows Server 2019 по умолчанию включен с выделением 1 гибибайта (GiB). В Windows Server 2016 он отключен по умолчанию.

Версия ОС Размер кэша CSV по умолчанию
Azure Stack HCI 1 ГиБ
Windows Server 2019 1 ГиБ
Windows Server 2016 0 (отключено)

Настройка кэша с помощью Windows Admin Center

Чтобы настроить кэш с помощью Windows Admin Center, сделайте следующее:

  1. В Windows Admin Center подключитесь к кластеру, а затем выберите Параметры в области Инструментов слева.
  2. Выберите кэш в памяти в разделе Хранилище на панели "Параметры".
  3. В правой области флажок включает или отключает кэш, а также можно указать максимальный объем памяти на сервер, выделенный для кэша.
  4. По завершении выберите Сохранить.

в Windows Admin Center флажок включает или отключает кэш. Можно также указать максимальный объем памяти на сервер, который будет выделен для кэша.

Настройка кэша с помощью PowerShell

Чтобы узнать, сколько памяти выделено с помощью PowerShell, выполните следующую команду от имени администратора:

(Get-Cluster).BlockCacheSize

Возвращаемое значение выражено в мебибайтах (MiB) на сервер. Например, 1024 представляет 1 ГиБ.

Чтобы изменить объем выделенной памяти, измените это значение с помощью PowerShell. Например, чтобы выделить 2 ГиБ на сервер, выполните следующую команду:

(Get-Cluster).BlockCacheSize = 2048

Чтобы изменения вступили в силу немедленно, приостанавливайте и возобновляйте тома CSV или перемещайте их между серверами. Например, используйте этот фрагмент PowerShell для перемещения каждого CSV-файла на другой узел сервера и снова:

Get-ClusterSharedVolume | ForEach {
    $Owner = $_.OwnerNode
    $_ | Move-ClusterSharedVolume
    $_ | Move-ClusterSharedVolume -Node $Owner
}

Дальнейшие действия

Дополнительные сведения см. также: