Uno de los servidores de archivos la ejecución de Windows Server 2008 R2 encontró un problema de alta carga de RAM que resultó en problemas con el servidor y el rendimiento de las aplicaciones. Resultó que la memoria estaba inundada por la caché de archivos del sistema que contiene el sistema de archivos metadatos. El problema afecta potencialmente a todos los servidores de archivos con una gran cantidad de archivos a los que acceden los usuarios. Es el más crítico para las versiones x64 de Windows, en las que el tamaño del archivo de metadatos en la memoria puede ampliarse casi al tamaño total de la RAM.
Alta carga de RAM en el servidor de archivos de Windows
El problema se manifiesta de la siguiente manera: en el Administrador de tareas vemos que la memoria física está ocupada por 95-99%.
En el Procesos pestaña, no hay ningún proceso filtrado con un consumo de memoria anormalmente alto. Además, si suma los valores aproximados de la memoria utilizada por todos los procesos, ni siquiera obtendrá el 50% de la memoria física que tiene en su servidor. ¿Qué está comiendo la memoria entonces?
Los datos reales sobre el uso de RAM se pueden obtener con la ayuda de una pequeña utilidad: RAMMap (por Mark Russinovich). Descargue el archivo que contiene la herramienta y ejecute RAMMap.exe con privilegios de administrador. En el Usar recuentos pestaña, vemos eso Metarchivo utiliza la mayor cantidad de RAM. (En nuestro caso, está usando 11 de 25 GB de la RAM del servidor).

¿Qué es un metarchivo en Windows?
Un metarchivo es una parte del caché del sistema que contiene metadatos NTFS y se utiliza para aumentar el rendimiento del sistema de archivos al acceder a los archivos. Los metadatos NTFS incluyen los datos de MFT (Master File Table). Para cada archivo o carpeta, al que acceden los usuarios, se crea en el metarchivo un bloque correspondiente de al menos 1 KB (el registro de un atributo de cada archivo es de 1 KB y cada archivo tiene al menos un atributo). Por tanto, en servidores de archivos con una gran cantidad de archivos, el tamaño del metarchivo (caché NTFS) puede superar varias decenas de gigabytes.
Es imposible deshabilitar este caché o administrarlo con las herramientas integradas de Windows. Como solución, puede aumentar el tamaño de la memoria en el servidor, pero no siempre es posible.
Para liberar memoria, puede reiniciar el servidor, pero en algún momento el tamaño del metarchivo en la memoria comienza a crecer increíblemente.
Por ejemplo, puede estimar el tamaño de la MFT utilizando otra herramienta de Russinovich: ntfsinfo. En nuestro caso, el tamaño de la MFT en un disco de 2 TB es de 13 GB.
Cómo limpiar rápidamente el metarchivo
RAMMap permite borrar rápidamente la memoria utilizada de la basura MFT sin reiniciar el servidor. Para hacerlo, seleccione Vacío -> Conjunto de trabajo del sistema vacío en el menú.

Después de eso, el tamaño del metarchivo en la memoria se redujo decenas de veces y el porcentaje de uso de RAM por parte de la CPU se redujo del 95% al 26%.

La principal desventaja de este método es que la limpieza es manual y no se puede realizar automáticamente.
Servicio de caché dinámico para administrar el caché de archivos
Otra solución, más cardinal, de alta carga de memoria por el metarchivo del sistema de archivos es la instalación de Dinámica Cache Servicio (http://www.microsoft.com/en-us/download/details.aspx?id=9258). Este servicio permite administrar los parámetros de la caché MFT dedicada utilizando las API del sistema.
Importante. Utilice esta solución solo si se produce el problema descrito anteriormente. La instalación de este servicio no será una solución universal para otras causas de alto uso de memoria en sus servidores.
Es bastante fácil instalar DynCache (hay instrucciones detalladas en el archivo).
- Copia el archivo DynCache.exe a % SystemRoot% System32 carpeta
- Crear DynCache Servicio usando este comando:
sc create DynCache binpath= %SystemRoot%System32DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
- Importar DynCache.reg al registro (contiene valores predeterminados)
- Cambie los valores de las siguientes claves de registro: HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services DynCache Parameters
- MaxSystemCacheMBytes: 4096 (dec) – el tamaño máximo de caché (Mb)
- MinSystemCacheMBytes: 100 (dec) – el tamaño mínimo de caché (MB)

Nota. Estas y otras configuraciones del servicio DynCache deben editarse de acuerdo con el tamaño de la RAM, la carga del servidor, el rendimiento requerido, etc. Como regla general, no se recomienda establecer el tamaño de la caché en más de la mitad de la RAM física instalada en el servidor. Una vez realizados los cambios, no es necesario reiniciar DynCache, ya que todos los cambios se aplican de forma dinámica.
- Ejecute el servicio con este comando:
sc start DynCache
En nuestro caso, después de instalar el servicio DynCache, el uso de memoria por el metarchivo dejó de superar los 4 GB que habíamos establecido. Los usuarios no han informado de problemas de rendimiento en el servidor de archivos.





