CORRECCIÓN: uso intensivo de memoria en ReFS en Windows

Se aplica a: Windows 10, version 2004, all editionsWindows Server, version 2004, all editionsWindows 10, version 1909, all editions

Síntomas


Observa el uso intensivo de la memoria en un equipo que ejecuta Windows 10, Windows Server 2016, Windows Server 2019, Windows Server, 1903 o Windows Server, versión 1909.

Causa


Para proporcionar mayor resiliencia para sus metadatos, el sistema de archivos resistente (ReFS) en Windows Server 2016 usa la semántica de asignación en escritura para todas las actualizaciones de metadatos. Esto significa que ReFS nunca realiza actualizaciones in-Place a metadatos. En su lugar, hace todas las escrituras en las regiones recién asignadas. 
Sin embargo, la asignación a la escritura hace que las referencias emitan más e/s de metadatos a las nuevas regiones del volumen que los sistemas de archivos que sí lo hacen.Además, ReFS usa lógica de almacenamiento en caché de bloque para almacenar sus metadatos en la RAM. Esto no es tan eficaz como la lógica de almacenamiento en caché de archivos.
En conjunto, la semántica de almacenamiento en caché del bloque ReFS y la semántica de asignar en escritura provoca que las transmisiones de metadatos ReFS sean grandes. ReFS usa el administrador de caché para crear las transmisiones de metadatos y el administrador de caché, que desasigna las vistas inactivas de forma inactiva. En algunos casos, esta desasignación aplazada hace que el conjunto de trabajo activo en el servidor crezca. Esto genera presión de memoria que puede dar lugar a un bajo rendimiento.

Resolución


Este problema se trata en la actualización acumulativa 4013429, publicada el 14 de marzo de 2017. La actualización presenta tres parámetros del registro ajustables. (Consulte la sección "solución").
La actualización acumulativa 4013429 está disponible a través de Windows Update. También puede descargarlo directamente desde el Catálogo de Microsoft Update
Para obtener más información, consulte el artículo siguiente de Microsoft Knowledge Base:

Cómo establecer los parámetros ajustables


Esta actualización proporciona tres parámetros del registro que se puede ajustar para tratar las grandes secuencias de metadatos ReFS. Puede usar los siguientes métodos opcionales para establecer los parámetros. Estos parámetros se pueden usar en cualquier combinación porque no se superponen funcionalmente. 
Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.
Importante
  • Es necesario reiniciar para que estos cambios de parámetros surtan efecto.
  • Estos parámetros deben establecerse de forma coherente en todos los nodos de un clúster de conmutación por error.

Opción 1

Esta opción hace que ReFS pruebe un desbloqueo mm completo de todas las transmisiones de metadatos en cada punto de comprobación. Esta opción producirá el resultado esperado solo si el volumen está inactivo y no tiene ninguna página asignada. 
Especifique los valores indicados en la siguiente subclave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nombre del valor : RefsEnableLargeWorkingSetTrimSet RefsEnableLargeWorkingSetTrim = 1
Tipo de valor: REG_DWORD

Opción 2

ReFS tiene una lógica de desasignación de MM de diferido. Por lo tanto, cuando ReFS recorre todo el espacio de nombres para completar una asignación de las MM, se anula la asignación a una granularidad determinada. La cantidad de espacio de direcciones virtuales que se ha desasignado se determina mediante la siguiente fórmula:
RefsNumberOfChunksToTrim * 128 MB (para el volumen de tamaño > 10 TB)
RefsNumberOfChunksToTrim * 64MB (para el volumen de tamaño < 10 TB)
Esta opción funciona si el rango VA cuya asignación no tiene ninguna referencia activa (es decir, páginas de metadatos asignados).
Especifique los valores indicados en la siguiente subclave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nombre del valor: RefsNumberOfChunksToTrim
Tipo de valor: REG_DWORD
Predeterminado (si no se establece o es 0): 4
Nota: Configuración RefsNumberOfChunksToTrim a valores superiores hace que ReFS se recorte de forma más agresiva. Esto reduce la cantidad de memoria que se está usando. Establezca el valor de recorte en un número adecuado: 8, 16, 32, etc.

Opción 3

En esta opción, ReFS envía un recorte MM en línea mientras anula la asignación de su página de metadatos. Esta es la opción más agresiva porque puede provocar una regresión de rendimiento si se usa ReFS en un medio de alto rendimiento, como SSD o NVMe. 
Especifique los valores indicados en la siguiente subclave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Nombre del valor: RefsEnableInlineTrim
Tipo de valor: REG_DWORD
Establecer RefsEnableInlineTrim = 1
Recomendación
Si un gran conjunto de trabajo activo produce un bajo rendimiento, primero intente establecer RefsEnableLargeWorkingSetTrim = 1. Si esta configuración no produce un resultado satisfactorio, pruebe diferentes valores para RefsNumberOfChunksToTrim, como 8, 16, 32, etc. Si aún así no se proporciona el efecto deseado, establezca RefsEnableInlineTrim = 1

Más información


Para actualizar sus metadatos, ReFS usa la asignación en lugar de escritura para mejorar su resistencia a los daños.
La escritura en contexto es susceptible a las escrituras rasgadas. Esto sucede si un error de alimentación o un desmontaje inesperado provoca que una escritura se complete parcialmente.
Asignar a la escritura permite a las referencias mantener la coherencia de los metadatos después de un corte de suministro eléctrico o un desmontaje inesperado. Esto se debe a que ReFS aún puede hacer referencia a la copia de metadatos coherente anterior.