2015-08-07 04:17:19 +0000 2015-08-07 04:17:19 +0000
82
82

Windows 10, el proceso de 'Sistema' toma cantidades masivas de RAM

Desde que actualicé a Windows 10, mi sistema ha estado consumiendo excesivamente la memoria RAM

He estado leyendo un poco y he determinado que probablemente sea un controlador que pierde memoria. Así que me conseguí el Windows Driver Kit y rastreé el uso de la memoria con poolmon:

Sin embargo, no sé muy bien cómo proceder a partir de aquí. ¿Es el elemento etiquetado “smNp” el culpable de este problema? ¿Cómo puedo pasar de ahí a identificar realmente el controlador?

He intentado algunas cosas como “C:\Windows\System32\drivers>findstr /s smnp .” pero no dio resultados. También eché un vistazo al archivo pooltag.txt y esta es la descripción que encontré para él:

Así que sí, cualquier ayuda sería apreciada. Gracias de antemano.

Respuestas (4)

93
93
93
2015-08-07 04:20:09 +0000

He mirado las trazas de xperf de varios usuarios y aquí la función ntoskrnl.exe!SmKmStoreHelperWorker del Kernel empieza a asignar memoria.

(Haz clic en la imagen para ampliarla)

He descubierto esto en sysinternals .

He preguntado a Microsoft sobre ello y la respuesta es que esto es por diseño. Está relacionado con la compresión de la memoria del sistema.

En el anuncio de la Build 10525 de Windows 10, Microsoft lo explicó un poco :

En Windows 10, hemos añadido un nuevo concepto en el Administrador de Memoria llamado almacén de compresión, que es una colección en memoria de páginas comprimidas. Esto significa que cuando el Administrador de Memoria siente la presión de la memoria, comprime las páginas no utilizadas en lugar de escribirlas en el disco. Esto reduce la cantidad de memoria utilizada por proceso, permitiendo a Windows 10 mantener más aplicaciones en la memoria física a la vez. Esto también ayuda a proporcionar una mejor capacidad de respuesta en todo Windows 10. El almacén de compresión vive en el conjunto de trabajo del proceso del sistema. Dado que el proceso del sistema mantiene el almacén en la memoria, su conjunto de trabajo crece exactamente cuando la memoria se pone a disposición de otros procesos. Esto es visible en el Administrador de Tareas y la razón por la que el proceso System parece estar consumiendo más memoria que las versiones anteriores.

Así que en lugar de escribir los datos de la memoria en el archivo de páginas los comprime. Y esta memoria comprimida se muestra en el proceso System.

Microsoft también publicó más detalles en el inside hub. Winbeta creó un artículo que incluye más detalles.

Aparentemente, la razón de esto tuvo que ver con que Microsoft eligió suspender las aplicaciones UWP cuando no estaban en primer plano, muy similar a la gestión de algunos sistemas operativos de los smartphones. Los usuarios de Windows 8 entendieron (tal vez no) que si las apps no estaban en pantalla, no se ejecutarían hasta que el usuario volviera a ellas. El enfoque de “todo o nada” se está actualizando con Windows 10 introduciendo una capa entre el archivo de páginas y la actividad normal de paginación. Ahora, cuando se enfrenta a problemas de presión de memoria, MM determinará qué páginas deben ser movidas a la lista modificada en un proceso llamado recorte. La lista modificada es una lista secundaria de archivos de página que respalda una lista de archivos de página de reserva. Una lista de respaldo es capturada en caso de que la memoria sea recuperada de la lista en espera por otro proceso, y el proceso original venga a buscar su página. En lugar de todo o nada, Windows 10 MM comprimirá las páginas no utilizadas en lugar de escribirlas en el disco. Con menos escritura, el resultado debería ser menos operaciones de disco - gracias a la compresión - y ahora se pueden almacenar más datos en la memoria.

Según el equipo de Windows, “ En la práctica, la memoria comprimida ocupa alrededor del40% del tamaño sin comprimir, y como resultado de un dispositivo típico que ejecuta una carga de trabajo típica, Windows 10 escribe páginas en el disco sólo el 50% de las veces que las versiones anteriores del sistema operativo. ” Si todo va según lo previsto, Los usuarios de Windows podrían experimentar una reducción de los tiempos de espera en todos los dispositivos, así como una mayor vida útil en los sistemas que tienen discos duros basados en flash.

La descompresión también es algo que Windows 10 está diseñado para hacer bien. Windows 10 utiliza la combinación de la paralelizabilidad y las lecturas secuenciales para producir páginas en la memoria una vez llamadas. La nueva descompresión debería resultar en una experiencia más rápida, ya que Windows 10 está descomprimiendo los datos y leyéndolos simultáneamente en paralelo usando múltiples CPUs. Las versiones anteriores de Windows pueden haberse sentido lentas debido a las tasas de transferencia entre el disco.

Microsoft también ha publicado un vídeo en el canal9 que explica la función.

Compresión de memoria en Windows 10 RTM https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

En este video Mehmet Iyigun pasó algún tiempo discutiendo por qué el proceso de Sistema en Windows 10 está tomando un poco más de memoria y por qué es algo bueno. Un proceso que toma más memoria suena como algo malo - eso es hasta que entendí más sobre la gestión de la memoria, la paginación, y los fallos de página duros / suaves. Resulta que el sistema operativo está haciendo algunas optimizaciones inteligentes que permiten a sus procesos recortar parte de la memoria pero no necesariamente paginarla al disco. No sólo se conserva la memoria en la RAM, sino que también se comprime - haciendo que los fallos de página duros sean más raros. El resultado debería ser una experiencia más rápida.

En las últimas compilaciones de TH2, Microsoft actualizó la descripción en el administrador de tareas y ahora también muestra que el proceso SYSTEM alberga el compressed memory:

para evitar confusiones sobre el uso “elevado”.

En la actualización de Window 10 Anniversary Update que fue lanzada en agosto de 2016, Microsoft extrajo la Compresión en ahora se muestra en un pseudo proceso llamado Memory Compression para no confundir más a los usuarios por qué SYSTEM tiene un uso de memoria tan grande:

Pero parece que Taskmgr no muestra este proceso, sólo ProcessExplorer/ProcessHacker son capaces de mostrarlo. El Taskmgr sólo muestra la cantidad de memoria comprimida en la vista general:

Si pasa el ratón por encima del gráfico de memoria utilizada en Taskmgr verá un tooltip que muestra la cantidad de datos que están comprimidos.

En esta demostración se comprimen 388MB a 122MB por lo que se ahorran 267MB con la compresión.

13
13
13
2015-08-09 23:24:30 +0000

Entrando en services.msc (a través de Win+R) y desactivando Superfetch se soluciona completamente. No estoy seguro de si el Superfetch está roto a partir de ahora o es “por diseño”.

Además, aparentemente deshacerse del archivo de paginación tendrá el mismo efecto pero la solución anterior es una apuesta más segura.

0
0
0
2019-08-31 16:21:39 +0000

Encontré un caso atípico que causa un alto uso de la memoria del Sistema, y quería incluirlo por si esta información beneficia a alguien.

Si utiliza mucho las Instantáneas de Volumen de Microsoft (la instantánea de software, no la de hardware), cuantas más instantáneas mantenga combinadas con grandes cambios de datos, entonces el Sistema consumirá más RAM.

Normalmente la cantidad de RAM utilizada por las Instantáneas de Volumen es pequeña y no se notará, a menos que tenga un volumen gigante (por ejemplo, 64 TB) con deltas de varios terabytes entre las instantáneas. Por defecto, las instantáneas simplemente se borrarán a sí mismas si las IO’s de escritura son demasiado altas, pero hay formas de evitarlo, permitiéndote alcanzar deltas masivos.

A continuación se muestra un caso extremo en el que el proceso de Sistema de un servidor utiliza 13GB de RAM. Este servidor tiene sólo dos Instantáneas de Volumen, tomadas con 15 días de diferencia, con alrededor de 10 TB de datos escritos entre cada instantánea.

El proceso System de arriba estaba previamente a 24GB de uso, y se observaron los siguientes tres comportamientos:

  1. Después de reiniciar y volver a iniciar sesión, el sistema se quedaba colgado durante un periodo de tiempo en una pantalla en blanco hasta que aparecía el escritorio.
  2. Durante este cuelgue, al abrir el Administrador de Tareas (CTRL-SHIFT-ESC) se mostraba que el uso de la memoria del sistema crecía.
  3. Durante este cuelgue, el disco con los Volume Snapshots realizó muchas lecturas que no se mostraron en el Performance Monitor. Aunque, debido a que el disco utilizaba iSCSI, la tarjeta de red mostraba un flujo de lectura constante alrededor de 200 Mbps.

Sospeché de los Volume Snapshots, así que probé a borrar el snapshot más antiguo, lo que redujo instantáneamente el uso de memoria del sistema de 24 GB a 13 GB.

En estas circunstancias puede ser un comportamiento normal, aunque no lo he confirmado con Microsoft. Mientras tanto, voy a añadir 32 GB adicionales de RAM a este servidor para manejar la sobrecarga de las instantáneas.

(Nota: este es un servidor de copia de seguridad de alto volumen que ejecuta Windows 2016 con una unidad iSCSI SSD de 64 TB conectada. Mantiene una media de tres instantáneas de volumen en cualquier momento, con una nueva creada cada 15 días. Hay alrededor de 10 TB de datos escritos entre cada instantánea).

-1
-1
-1
2015-08-20 11:08:59 +0000

Deshabilite el prefetcher en la clave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters probablemente tiene Enable Prefetcher en un valor de 2 o 3 así que cámbielo a 0

A continuación necesita deshabilitar Superfetch en los servicios

  1. Busque services.msc

  2. Busque superfetch haga clic en properties luego póngalo en disabled y detenga el servicio también.

Hago estos pasos y cuando estoy jugando y usando normalmente el PC y el proceso system solo usa 28k