Windows 10, proceso 'Sistema' que toma grandes cantidades de RAM

83

Desde que actualicé a Windows 10, mi sistema ha estado consumiendo RAM en exceso

ingrese la descripción de la imagen aquí

He estado leyendo un poco y he determinado que es probable que el controlador pierda memoria. Así que obtuve el Kit de controladores de Windows y rastreé el uso de memoria con poolmon:

ingrese la descripción de la imagen aquí

Sin embargo, realmente no sé cómo proceder desde aquí. ¿El elemento etiquetado como "smNp" es el culpable de este problema? ¿Cómo paso desde allí para identificar realmente al conductor?

He intentado algunas cosas por el estilo "C: \ Windows \ System32 \ drivers> findstr / s SMNP . " Pero no hay ningún resultado. También eché un vistazo al archivo pooltag.txt y esta es la descripción que encontré:

ingrese la descripción de la imagen aquí

Entonces, sí, cualquier ayuda sería apreciada. Gracias por adelantado.

Nayncore
fuente
1
ok, agregué la información que pude encontrar. Compruébalo
magicandre1981
1
Esta es una característica del sistema para mantener más cosas en la RAM mediante el uso de compresión en lugar de paginación en el disco. @ magicandre1981 tiene la información correcta aquí que debe ser aceptada como la respuesta correcta.
Mani Gandham el
Los 14 megabytes que poolmon muestra están asociados con la etiqueta smNp es una cantidad puramente trivial. Le preocupan 1,3 GB en el conjunto de trabajo privado del proceso del sistema: ¿por qué centrarse en 14 MB de grupo no paginado (que no está en el conjunto de trabajo de ningún proceso, en absoluto)?
Jamie Hanrahan

Respuestas:

13

Al entrar en services.msc(via Win+R) y deshabilitar Superfetch se resuelve completamente esto. No estoy seguro si Superfetch está roto por ahora o si 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 .

guarida
fuente
1
Esto realmente funcionó. El uso de memoria para el sistema ha vuelto a ~ 0.1MB incluso después de horas de uso. ¡Gracias!
Nayncore
26
Si bien, por lo general, el uso tan alto de la memoria sería una señal de alerta para una pérdida de memoria, esta memoria se está utilizando legítimamente como una CARACTERÍSTICA de Windows 10 (consulte la respuesta de magicandre a continuación).
Bigbio2002
77
no es un error y no debe deshabilitarse
phuclv
66
Si la función causa advertencias constantes de poca memoria, no es una buena función. Ahora mi Surface Pro con 4 GB de RAM es completamente inutilizable para el desarrollo e incluso en una computadora portátil con 8 GB de RAM recibo constantemente esas advertencias. Pulgar hacia arriba para la solución!
Oleg I.
94

Observé los rastros de xperf de varios usuarios y aquí la función ntoskrnl.exe!SmKmStoreHelperWorkerdel Kernel comienza a asignar memoria.

Captura de pantalla
(Haga clic en la imagen para ampliarla)

Descubrí esto en sysinternals .

Le pregunté a Microsoft al respecto 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 Windows 10 Build 10525, Microsoft lo explicó un poco :

En Windows 10, hemos agregado 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 Memory Manager siente presión de memoria, comprimirá las páginas no utilizadas en lugar de escribirlas en el disco. Esto reduce la cantidad de memoria utilizada por proceso, permitiendo que Windows 10 mantenga más aplicaciones en la memoria física a la vez. Esto también ayuda a proporcionar una mejor capacidad de respuesta en 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 la tienda en la memoria, su conjunto de trabajo aumenta exactamente cuando la memoria está disponible para otros procesos. Esto es visible en el Administrador de tareas y la razón por la cual el proceso del sistema parece estar consumiendo más memoria que las versiones anteriores.

Entonces, en lugar de escribir datos de memoria en el archivo de paginación, los comprime. Y esta memoria comprimida se muestra en el proceso del Sistema.

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

Aparentemente, la razón de esto sucedió con Microsoft eligiendo suspender las aplicaciones de UWP cuando no estaban en primer plano, muy similar a la administración de algunos SO de teléfonos inteligentes. Los usuarios de Windows 8 entendieron (tal vez no) que si las aplicaciones no estuvieran en la 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 paginación y la actividad de paginación normal. Ahora, cuando se enfrentan problemas de presión de memoria, MM determinará qué páginas se deben mover a la lista modificada en un proceso llamado recorte.La lista modificada es una lista secundaria de archivos de paginación que respaldan una lista de archivos de paginación en espera. Se captura una lista de respaldo en caso de que otro proceso recupere la memoria de la lista de espera, y el proceso original viene buscando 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.

ingrese la descripción de la imagen aquí

Según el equipo de Windows, “ en la práctica, la memoria comprimida ocupa aproximadamente el 40% 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 solo un 50% tan a menudo como las versiones anteriores de El sistema operativo. "Si todo va según lo planeado, los usuarios de Windows podrían experimentar tiempos de espera reducidos para todos los dispositivos, así como una vida útil prolongada en sistemas que tienen discos duros basados ​​en flash .

La descompresión también es algo que Windows 10 está diseñado para funcionar bien. Windows 10 está utilizando la combinación de paralelización y lecturas secuenciales para producir páginas en la memoria una vez llamadas. La nueva descompresión debería dar como resultado una experiencia más rápida, ya que Windows 10 descomprime simultáneamente los datos y los lee en paralelo utilizando múltiples CPU. Las versiones anteriores de Windows pueden haberse sentido lentas debido a las velocidades de transferencia entre el disco.

Microsoft también lanzó un video en el canal 9 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ó un tiempo discutiendo por qué el proceso del Sistema en Windows 10 está tomando un poco más de memoria y por qué es algo bueno. Un proceso que requiere más memoria suena como algo malo, es decir, hasta que entendí más sobre la administración de memoria, la paginación y las fallas de página de hardware / software. Resulta que el sistema operativo está haciendo algunas optimizaciones inteligentes que permiten que sus procesos recorten parte de la memoria pero no necesariamente la paguen en el disco. La memoria no solo se conserva en la RAM, sino que también está comprimida, lo que hace que las fallas de página sean una ocurrencia más rara. Los resultados deberían ser una experiencia más ágil.

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 aloja compressed memory:

ingrese la descripción de la imagen aquí

para evitar confusiones sobre el uso "alto".

En la Actualización del aniversario de Windows 10 que se lanzó en agosto de 2016, Microsoft extrajo la compresión que ahora se muestra en un pseudo proceso llamado Memory Compressionpara no confundir a los usuarios por qué SYSTEM tiene un uso de memoria tan grande:

ingrese la descripción de la imagen aquí

Pero parece que Taskmgr no muestra este proceso, solo ProcessExplorer / ProcessHacker puede mostrarlo. El Taskmgr solo muestra la cantidad de memoria comprimida en la descripción general:

ingrese la descripción de la imagen aquí

Si pasa el cursor sobre el gráfico de memoria usado en Taskmgr, verá una información sobre herramientas que muestra la cantidad de datos comprimidos.

ingrese la descripción de la imagen aquí

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

magicandre1981
fuente
99
@Zaibis: Creo que la idea es que no estás "bajando 1GB". Windows ha reservado 1 GB y se utilizará para las asignaciones. No has perdido la memoria.
Carreras de ligereza en órbita el
12
"La memoria no utilizada es memoria desperdiciada" ha sido durante mucho tiempo el mantra de OS X. Parece que Windows también se incorporó.
deceze
1
@ magicandre1981 ¿Qué quieres decir conSystem Memory compression
user2284570
2
No puedo responder esto en detalles. Solo obtuve la información de que es por diseño, tiene algo que ver con una compresión de memoria y esto se explicará en una publicación de blog. Cuando reciba nueva información, actualizaré mi publicación.
magicandre1981
2
@JosiahKeller El cuadro de diálogo "poca memoria" se trata de poca memoria virtual. No tiene casi nada que ver con el uso o la disponibilidad de la memoria física (RAM). Se contabilizan por separado en todos los sistemas operativos de escritorio modernos.
David Schwartz
0

Encontré un caso atípico que causa un alto uso de memoria del sistema, y ​​quería incluirlo en caso de que esta información beneficie a alguien.

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

Normalmente, la cantidad de RAM utilizada para las instantáneas de volumen es pequeña y no se notará, a menos que tenga un volumen gigante (es decir, 64 TB) con deltas de varios terabytes entre las instantáneas. De forma predeterminada, las instantáneas simplemente se eliminarán si las E / S de escritura son demasiado altas, pero hay formas de evitarlo, lo que le permite alcanzar deltas masivos.

A continuación se muestra un caso extremo que muestra el proceso del sistema de un servidor con 13 GB de RAM. Este servidor tiene solo dos instantáneas de volumen, tomadas con 15 días de diferencia, con alrededor de 10 TB de datos escritos entre cada instantánea.

Uso de memoria del sistema a 13 GB

El proceso del sistema mencionado anteriormente tenía 24 GB de uso y se observaron los siguientes tres comportamientos:

  1. Después de reiniciar y volver a iniciar sesión, el sistema se bloqueará por un período de tiempo en una pantalla en blanco hasta que aparezca el escritorio.
  2. Durante este bloqueo, al abrir el Administrador de tareas (CTRL-SHIFT-ESC) se observó un aumento en el uso de la memoria del sistema.
  3. Durante este bloqueo, el disco con las instantáneas de volumen realizó muchas lecturas que no aparecían en el Monitor de rendimiento. Sin embargo, debido a que el disco utilizaba iSCSI, la tarjeta de red mostró un flujo de lectura constante de alrededor de 200 Mbps.

Sospeché las instantáneas de volumen, así que intenté eliminar la instantánea más antigua que instantáneamente redujo el uso de memoria del sistema de 24 GB a 13 GB.

En estas circunstancias, este puede ser un comportamiento normal, aunque no lo he confirmado con Microsoft. Mientras tanto, agregaré 32 GB adicionales de RAM a este servidor para manejar la sobrecarga de Instantánea.

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

Brain2000
fuente
-1

Deshabilite el prefetcher en la clave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersprobablemente tenga Enable Prefetcherun valor de 2o 3así cámbielo a0

A continuación, debe deshabilitar los Superfetchservicios.

  1. Busque services.msc

  2. superfetchHaga clic en Buscar, propertiesluego configúrelo disabledy detenga también el servicio.

Realizo estos pasos y cuando juego y normalmente uso una PC y el systemproceso usa solo 28k

Grzesiek Grzychu Góra
fuente
12
Esta es una idea horrible. Prefetch / superfetch se utilizan por alguna razón. Si cree que puede administrar la memoria mejor que su sistema operativo, lamentablemente se equivoca.
b1nary.atr0phy
Deshabilitar la captación previa (o "limpiar la carpeta de captación previa") es una idea muy tonta. La captación previa no hace que el sistema use más RAM. Acelera la carga de exe y dll una vez que los inicias , y solo entonces. Re SuperFetch, Microsoft deshabilita SuperFetch de forma predeterminada en sistemas con un SSD para la unidad de Windows; sienten que el beneficio no vale la pena. Personalmente, lo mantengo habilitado porque tengo otras unidades, que no son SSD, en las que quiero que SF siga funcionando.
Jamie Hanrahan