Usar o cache de leitura na memória do CSV

Aplica-se a: Azure Stack HCI, versões 22H2 e 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016

Este tópico descreve como usar a memória do sistema para aumentar o desempenho do Azure Stack HCI e do Windows Server armazenando em cache leituras frequentes. As gravações não podem ser armazenadas em cache na memória.

O Azure Stack HCI e o Windows Server são compatíveis com o cache de leitura na memória do CSV (Volume Compartilhado Clusterizado). Usar a memória do sistema para armazenar em cache as leituras pode melhorar o desempenho de aplicativos como o Hyper-V, que usa a E/S não armazenada em buffer para acessar arquivos VHD ou VHDX. (E/Ss não armazenadas em cache são todas as operações que não são armazenadas em cache pelo Gerenciador de Cache do Windows.)

Como o cache na memória é local do servidor, ele melhora a localidade dos dados. As leituras recentes são armazenadas em cache na memória no mesmo host em que a VM (máquina virtual) está em execução, reduzindo a frequência com que as leituras passam pela rede. Isso resulta em menor latência e melhor desempenho de armazenamento.

Observe que o cache de leitura na memória do CSV é diferente do cache do pool de armazenamento.

Considerações sobre o planejamento

O cache de leitura na memória é mais eficaz para cargas de trabalho com uso intensivo de leitura, como a VDI (Virtual Desktop Infrastructure). Por outro lado, se a carga de trabalho for extremamente intensiva em gravação, o cache poderá introduzir mais sobrecarga do que valor e deve ser desabilitado.

Você pode usar até 80% da memória física total para o cache de leitura na memória do CSV. Tenha cuidado para deixar memória suficiente para suas VMs!

Observação

Determinadas ferramentas de microbenchmarking, como DISKSPD e Frota de VM, podem produzir resultados piores com o cache de leitura na memória do CSV habilitado do que sem ele. Por padrão, a Frota de VM cria um VHDX de 10 GiB por VM – aproximadamente um total de 1 TiB para 100 VMs – e executa leituras e gravações uniformemente aleatórias neles. Ao contrário das cargas de trabalho reais, as leituras não seguem um padrão previsível ou repetitivo, portanto, o cache na memória não é eficaz e apenas incorre em sobrecarga.

Como configurar o cache de leitura na memória

O cache de leitura na memória do CSV está disponível no Azure Stack HCI, no Windows Server 2019 e Windows Server 2016 com a mesma funcionalidade. No Azure Stack HCI e no Windows Server 2019, ele está ativado por padrão com 1 gibibyte (GiB) alocado. No Windows Server 2016, está desativado por padrão.

Versão do SO Tamanho do cache CSV padrão
Azure Stack HCI 1 GiB
Windows Server 2019 1 GiB
Windows Server 2016 0 (desabilitado)

Configurar o cache usando Windows Admin Center

Para configurar o cache usando Windows Admin Center, faça o seguinte:

  1. Em Windows Admin Center, conecte-se a um cluster e selecione Configurações no painel Ferramentas à esquerda.
  2. Selecione Cache na memória em Armazenamento no painel Configurações .
  3. No painel direito, uma caixa de seleção habilita ou desabilita o cache e você também pode especificar a memória máxima por servidor a ser alocada ao cache.
  4. Ao terminar, escolha Salvar.

Em Windows Admin Center, uma caixa de seleção habilita ou desabilita o cache. Você também pode especificar a memória máxima por servidor a ser alocada para o cache.

Configurar o cache usando o PowerShell

Para ver a quantidade de memória alocada usando o PowerShell, execute o seguinte como administrador:

(Get-Cluster).BlockCacheSize

O valor retornado está em MiB (mebibytes) por servidor. Por exemplo, 1024 representa 1 GiB.

Para alterar a quantidade de memória alocada, modifique esse valor usando o PowerShell. Por exemplo, para alocar 2 GiB por servidor, execute:

(Get-Cluster).BlockCacheSize = 2048

Para que as alterações entrem em vigor imediatamente, pause e retome os volumes CSV ou mova-os entre servidores. Por exemplo, use esse fragmento do PowerShell para mover cada CSV para outro nó de servidor e retornar:

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

Próximas etapas

Para informações relacionadas, confira também: