CORREÇÃO: Uso de memória pesada no ReFS no Windows

Este artigo fornece uma solução para problemas de pressão de memória e desempenho que ocorrem no ReFS (Sistema de Arquivos Resiliente) no Windows.

Aplica-se a: Windows 10 - todas as edições, Windows Server 2016, Windows Server 2019
Número de KB original: 4016173

Sintomas

Você observa o uso de memória pesada em um computador que está executando Windows 10, Windows Server 2016, Windows Server 2019, Windows Server, 1903 ou Windows Server, versão 1909.

Motivo

Para fornecer maior resiliência para seus metadados, o ReFS (Sistema de Arquivos Resiliente) em Windows Server 2016 usa a semântica allocate-on-write para todas as atualizações de metadados. O que significa que o ReFS nunca faz atualizações in loco para metadados. Em vez disso, ele faz todas as gravações em regiões recém-alocadas.

No entanto, alocar na gravação faz com que o ReFS emita mais E/S de metadados para novas regiões do volume do que os sistemas de arquivos de gravação no local. Além disso, o ReFS usa a lógica de cache de bloco para armazenar em cache seus metadados na RAM. Não é tão eficiente em recursos quanto a lógica de cache de arquivo.

Juntos, a lógica de cache do bloco ReFS e a alocação em semântica de gravação fazem com que os fluxos de metadados reFS sejam grandes. O ReFS usa o gerenciador de cache para criar os fluxos de metadados e o gerenciador de cache preguiçosamente desacompacta exibições inativas. Em algumas situações, esse desmamamaamento lento faz com que o conjunto de trabalho ativo no servidor cresça. Isso cria uma pressão de memória que pode causar um desempenho ruim.

Resolução

Esse problema é resolvido na atualização cumulativa 4013429 lançada em 14 de março de 2017. A atualização apresenta três parâmetros de registro ajustáveis.

A 4013429 de atualização cumulativa está disponível por meio de Windows Update. Você também pode baixá-lo diretamente por meio do Catálogo de Atualizações da Microsoft.

Para obter mais informações, confira 14 de março de 2017 — KB4013429 (Build 14393.953 do sistema operacional)

Como definir os parâmetros ajustáveis

Esta atualização fornece três parâmetros de registro ajustáveis para atender a grandes fluxos de metadados reFS. Você pode usar os seguintes métodos opcionais para definir os parâmetros. Esses parâmetros podem ser usados em qualquer combinação porque não se sobrepõem funcionalmente.

Importante

  • Uma reinicialização é necessária para que essas alterações de parâmetro entrem em vigor.
  • Esses parâmetros devem ser definidos consistentemente em cada nó de um cluster de failover.

Opção 1

Essa opção faz com que o ReFS experimente um unmap de mm completo de todos os fluxos de metadados em cada ponto de verificação. Essa opção produzirá o resultado esperado somente se o volume estiver ocioso e não tiver páginas mapeadas.

Especifique os valores indicados na subchave a seguir:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nome do valor: RefsEnableLargeWorkingSetTrim
Definir RefsEnableLargeWorkingSetTrim = 1
Tipo de valor: REG_DWORD

Opção 2

O ReFS tem uma lógica de unmap de MM preguiçosa. Portanto, quando o ReFS ciclos todo o namespace para concluir um unmap MM, ele não émaps em uma determinada granularidade. A quantidade de espaço de endereço virtual que não é mapeada é determinada pela seguinte fórmula:

RefsNumberOfChunksToTrim 128 MB (para volume de tamanho > 10 TB) RefsNumberOfChunksToTrim 64 MB (para volume de tamanho < 10 TB)

Essa opção funcionará se o intervalo de VA que está sendo não mapeado não tiver nenhuma referência ativa (ou seja, páginas de metadados mapeadas).

Especifique os valores indicados na subchave a seguir:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nome do valor: RefsNumberOfChunksToTrim
Tipo de valor: REG_DWORD
PADRÃO (se não definido ou 0): 4

Observação

Definir RefsNumberOfChunksToTrim como valores mais altos faz com que o ReFS corte mais agressivamente. Reduz a quantidade de memória que está sendo usada. Defina o valor de corte como um número apropriado: 8, 16, 32 e assim por diante.

Opção 3

Nesta opção, o ReFS envia um corte MM embutido enquanto desmamaia sua página de metadados. Essa é a opção mais agressiva porque pode causar regressão de desempenho se o ReFS for usado em mídia de alto desempenho, como um SSD ou NVMe.

Especifique os valores indicados na subchave a seguir:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nome do valor: RefsEnableInlineTrim
Tipo de valor: REG_DWORD
Definir RefsEnableInlineTrim = 1

Recomendação:

Se um grande conjunto de trabalho ativo causar um desempenho ruim, primeiro tente definir RefsEnableLargeWorkingSetTrim = 1.

Se essa configuração não produzir um resultado satisfatório, experimente valores diferentes para RefsNumberOfChunksToTrim, como 8, 16, 32 e assim por diante.

Se isso ainda não fornecer o efeito desejado, defina RefsEnableInlineTrim = 1.

Mais informações

Para atualizar seus metadados, o ReFS usa alocar na gravação em vez de escrever no local para melhorar sua resiliência à corrupção.

Escrever no local é suscetível a gravações rasgadas. Ela ocorre se uma falha de energia ou um desmonte inesperado fizer com que uma gravação seja concluída apenas parcialmente.

A alocação na gravação permite que o ReFS mantenha de forma confiável a consistência de metadados após uma falha de energia ou uma desmontagem inesperada. Isso ocorre porque o ReFS ainda pode referenciar a cópia de metadados anterior e consistente.

Referências