Использование кэша 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 и vm Fleet , могут давать худшие результаты при включенном кэше чтения CSV в памяти, чем без него. По умолчанию парк виртуальных машин создает 10 ГиБ VHDX для каждой виртуальной машины ( всего около 1 ТиБ для 100 виртуальных машин), а затем выполняет в них равномерно случайные операции чтения и записи. В отличие от реальных рабочих нагрузок, операции чтения не соответствуют прогнозируемому или повторяющимся шаблону, поэтому кэш в памяти не является эффективным и просто вызывает накладные расходы.

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

Кэш чтения CSV в памяти доступен в Azure Stack HCI, Windows Server 2019 и Windows Server 2016 с теми же функциями. В Azure Stack HCI и Windows Server 2019 он включен по умолчанию с выделенным 1 гибибайтом (ГиБ). В 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

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

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

(Get-Cluster).BlockCacheSize = 2048

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

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

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

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