Windows que usa demasiada RAM, cómo diagnosticar el consumo de recursos

73

Tengo 16 GB de RAM del sistema. En el inicio sin aplicaciones abiertas, excepto el administrador de tareas, Windows usa aproximadamente 3 gb de RAM. Miré en la pestaña de procesos, pero nada parece estar fuera de lo común. ¿Cómo puedo averiguar por qué mi Windows está usando tanta RAM?

ingrese la descripción de la imagen aquí

todos los procesos de todos los usuarios

ingrese la descripción de la imagen aquí


Leyendo desde el poolmon parece que mi controlador de broadcom inalámbrico está usando aproximadamente 0.4GB de RAM. Incluso si lo elimino, seguiría usando 2.6GB en el inicio, lo que sigue siendo demasiado.

ingrese la descripción de la imagen aquí


Después de reinstalar el controlador inalámbrico asociado con la pérdida de memoria. Tengo una nueva captura de pantalla y me gustaría confirmar que realmente fue una pérdida de memoria.

ingrese la descripción de la imagen aquí

Vader
fuente
3
En primer lugar, solo tienes 12 GB. Cualquiera de sus cuatro unidades de 4 GB está mal o mal asentado, o su placa base no admite 16 GB. En segundo lugar, ¿ha intentado ejecutar algún programa de seguridad para detectar malware? Security Essentials está integrado, así que asegúrese de actualizar sus definiciones y ejecutar un análisis. Pruebe también algunos programas anti-rootkit ya que los rootkits se esconden específicamente (aunque también suelen tratar de mantener un perfil bajo para pasar desapercibido, y el uso de un par de gigabytes de RAM apenas se combina).
Synetech
Es posible que desee ver el rendimiento -> monitor de recursos
Journeyman Geek
Intente ejecutar el comando tasklist redirigiendo su salida a un archivo, C: \ blah> tasklist> aa, luego abra el archivo aa, verá los totales para cada proceso, por ejemplo, 15,100K, elimine la K después de ellos y sume el total con Excel. Vea si el total coincide con la cifra usada que el administrador de tareas le da cerca de su gráfico para usar. Para mí, el total de la lista de tareas es de 4 GB y el administrador de tareas dice 4,5 GB. No puedo explicar la discrepancia que tengo, pero no es enorme. Sería interesante si tienes una gran discrepancia.
barlop
No tengo excel
Vader
1
Las etiquetas NDxx son ndis.sys. Supongo que BRCM era Broadcom. Eso apuntaría a que su adaptador de red es el problema.
David Marshall

Respuestas:

82

Tiene una pérdida de memoria causada por un controlador. Mire el alto valor de la memoria del núcleo no paginada. En su caso, esto es más de 3.7 GB. Puede usar poolmon para ver qué controlador está causando el alto uso.

Instale el WDK de Windows , ejecute poolmon, ordénelo Pdespués del tipo de grupo para que no paginado esté en la parte superior y Bdespués de bytes para ver la etiqueta que usa más memoria. Ejecute poolmon yendo a la carpeta donde está instalado WDK, vaya a Herramientas (o C: \ Archivos de programa (x86) \ Windows Kits \ 10 \ Tools \ x64) y haga clic en poolmon.exe.

Ahora mire qué pooltag usa más memoria como se muestra aquí:

ingrese la descripción de la imagen aquí

Ahora abra un indicador de cmd y ejecute el comando findtr. Para hacer esto, abra el indicador de cmd y escriba "cd C: \ Windows \ System32 \ drivers", sin comillas. Luego, escriba "findtr / s __ . ", Donde __ es la etiqueta (nombre más a la izquierda en poolmon). Haga esto para ver qué controlador utiliza esta etiqueta:

ingrese la descripción de la imagen aquí

Ahora, vaya a la carpeta de controladores (C: \ Windows \ System32 \ drivers) y haga clic con el botón derecho en el controlador en cuestión (intmsd.sys en el ejemplo de la imagen anterior). Haga clic en Propiedades, vaya a la pestaña de detalles para encontrar el Nombre del producto. Busque una actualización para ese producto.

Si la etiqueta de grupo solo muestra controladores de Windows o aparece en pooltag.txt ( "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")

ha usado xperf para rastrear qué causa el uso . Instale el WPT desde el SDK de Windows , abra un cmd.exe como administrador y ejecute esto:

xperf -on PROC_THREAD + LOADER + POOL -stackwalk PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C: \ pool.etl

captura 30 -60s del cultivo. Abra el ETL con WPA.exe, agregue los gráficos de Pool al panel de análisis.

Coloque la columna pooltag en primer lugar y agregue la columna de pila. Ahora cargue los símbolos dentro de WPA.exe y expanda la pila de la etiqueta que vio en poolmon.

ingrese la descripción de la imagen aquí

Ahora encuentre otros controladores de terceros que puede ver en la pila. Aquí la Threetiqueta (Hilo) es utilizada por AVKCl.exe de G-Data. Busque actualizaciones de controladores / programas para solucionarlo.

magicandre1981
fuente
1
Oh, lo siento. @Jebediah Kerman, ¿has ejecutado el comando findtr? Por el nombre, podría estar relacionado con el controlador de la tarjeta de red. Si aún tiene problemas, ejecute RAMMap, almacene los datos como RMP, comprima el archivo RMP y cargue el archivo zip.
magicandre1981
Esto puede sonar estúpido. Pero, ¿cómo comienzo poolmon? Solía ​​poder buscar "poolmon.exe" e iniciar
Vader
@JebediahKerman Creo que ya hiciste esto y encontraste las etiquetas. ¿La imagen de tu publicación no es tu poolmon?
magicandre1981
La foto es mía. Por alguna razón, el índice de búsqueda estaba incompleto.
Vader
@JebediahKerman, ¿has mirado qué es esta NDFT? También puede usar xperf para rastrear el uso del grupo: channel9.msdn.com/Shows/Defrag-Tools/…
magicandre1981
15

Bueno, lo primero, antes de entrar en una respuesta más detallada. En su primera captura de pantalla, su grupo no paginado (un tipo de uso de memoria del núcleo) está en 1.3GB. Eso me parece inusualmente alto, especialmente durante solo 30 minutos después del arranque. Supongo que podría ver que NP Pool se eleva tanto después de una gran cantidad de uso o con un programa que goteaba como un tamiz. Por el contrario, mi NP Pool generalmente está entre 100 y 200 megabytes, y mi pool paginado puede ser tan alto como 400 o 500 (y eso es después de que mi sistema se ejecute sin reiniciar durante semanas).


Puede habilitar algunas columnas adicionales en el Administrador de tareas haciendo clic con el botón derecho en los encabezados de las columnas y eligiendo seleccionar columnas. Se debe añadir Working Set (private), Working Set (shared), Commit, y NP Pool. Analizaría todos los procesos de todos los usuarios y vería si alguno de ellos tiene un NP Pool de más de aproximadamente 256 KB. Si ve alguno, especialmente alguno que sea considerablemente más alto, esa podría ser la fuente del problema, o al menos parte de él.

Su conjunto de trabajo total, la cantidad de memoria física utilizada por un proceso, es la combinación de los conjuntos de trabajo privados y compartidos (WS). El privado es generalmente más grande para la mayoría de los procesos, sin embargo, puede haber algunos que usan una mayor cantidad de WS compartido. Los dos normalmente deben sumar el total de WS. Confirmar es la cantidad de su conjunto de trabajo que se ha comprometido con el almacén de respaldo (en la mayoría de los casos, el archivo de página de Windows). Las aplicaciones en segundo plano con frecuencia tendrán un mayor compromiso que WS, lo que indica que gran parte de su grupo paginado se ha intercambiado de la memoria a su archivo de paginación (lo cual es bastante normal para las aplicaciones de escritorio que se han minimizado y no se han utilizado durante un tiempo).

El conjunto no paginado es una memoria que no se puede intercambiar, y nunca se intercambiará, de la memoria física ... que es efectivamente su uso mínimo permanente de memoria física. La memoria de NP Pool a menudo contiene código de programa y secciones críticas que deben estar en la memoria física para comportarse de manera correcta o segura, montones especiales, etc. De 60 procesos, si todos tienen 256KB de memoria de NP Pool, entonces su uso mínimo absoluto de memoria física rondaría los 15.360 KB. En la mayoría de los casos, una o dos aplicaciones pueden tener un conjunto NP de 256 KB, mientras que la mayoría tiene menos, a menudo considerablemente menos (o ninguna). Es muy improbable que el sistema pueda localizar la totalidad de todos los procesos del conjunto de trabajo, por lo que nunca espere que el uso de memoria sea tan bajo.


Finalmente, el punto de tener más memoria es evitar tener que buscar datos desde y hacia un espacio de memoria extendido (intercambio, archivo de página) en un disco físico. La paginación es un proceso que implica mover bloques de memoria física asignada, empujar algunos al disco y llevar otros a la memoria física desde el disco. La paginación es, para que sea simple, altamente indeseable. No es "malo" en sí, pero puede ser un verdadero lastre para el rendimiento cuando ocurre con demasiada frecuencia. El punto final de aumentar la RAM física total en un sistema es permitir que más procesos mantengan más de su confirmación en la memoria física (conjunto de trabajo más grande). El consumo de memoria no es un problema, y ​​cuando más procesos de ejecución usan más memoria, el rendimiento total del sistema y el rendimiento del proceso activo generalmente serán mayores,

Windows administra la memoria por usted, y automáticamente pagina datos dentro y fuera de la memoria hacia y desde el archivo de página (intercambio) por usted. Si ejecuta un proceso que necesita 9GB de memoria y su sistema ya está usando 4GB (de 12GB), entonces el sistema descubrirá automáticamente qué procesos no necesitan acceso inmediato a todo su conjunto de trabajo, y buscará una parte o la totalidad de su grupo paginado para intercambiar a fin de liberar ese 1GB adicional. Si su proceso grande finalmente necesita más memoria, Windows reducirá aún más el conjunto de trabajo de otros procesos hasta que tenga suficiente espacio libre para asignar el bloque recién solicitado. Su gran proceso podría eventualmente consumir toda la memoria disponible, excepto NP Pool y quizás una sobrecarga mínima adicional para ejecutar periódicamente procesos que no permiten que Windows libere más de su conjunto de trabajo (i. mi. tienen fallas de página pendientes que Windows de otro modo cambiaría de la memoria física, pero debido a que se solicitan, no se pueden mover).

Si un proceso necesita más memoria de la que se le permite acceder (los procesos de 32 bits generalmente pueden acceder a 2 Gb, y algunos un poco menos de 4 Gb con técnicas mejoradas, mientras que los procesos de 64 bits generalmente pueden acceder a alrededor de 48 Gb de memoria, cada uno), a veces Windows intentará para virtualizar su memoria con espacio de intercambio. Si una aplicación de 32 bits quiere usar su máximo permitido de 2 Gb de espacio, pero solo 1.2 Gb están disponibles, Windows reservará los 2 Gb completos en el archivo de la página y moverá los propios datos del proceso dentro y fuera del archivo de la página según sea necesario para admite el uso de memoria de la aplicación. El uso total de "memoria" en este caso puede parecer mayor que la memoria física disponible, cuando se utiliza Total Commit. Total Commit generalmente se maximiza en el tamaño total de archivo de página total, que cuando es administrado por el sistema, generalmente es 2-3 veces la cantidad de memoria física. En tu caso,


Un punto final. Dijiste en tu respuesta que tenías 16 Gb de RAM, mientras que el Administrador de tareas solo ve 12 Gb de RAM. Una de las dos cosas aquí. O su sistema realmente solo tiene 12 Gb de RAM o uno de sus dispositivos no se está registrando correctamente. Si un palo de ram (supongo 4x 4Gb sticks), puede ser malo, puede no estar completamente asentado en su placa base, o su placa base puede tener un problema de detección de memoria.

Para verificar si es lo último, primero debe actualizar el BIOS de su placa base a la última versión. Tuve un problema similar ... mis seis palos de ram DDR3 de Tripple-Channel (6x 2Gb) fueron buenos en base a pruebas individuales cada uno ... pero mi placa base decidió al azar no contar uno o dos de ellos de vez en cuando, a menudo me deja con solo 8 Gb de ram. Una actualización del BIOS solucionó el problema y ahora tengo acceso confiable a todos los 12 Gb de mi memoria.

jrista
fuente
interesante ... y acabo de darme cuenta de que su memoria no paginada es muy grande ... la mía tiene 539 MB de paginación, 139 MB de paginación. Claramente sabes más que yo sobre esto ... Pero, te equivocas en la confirmación total. escribe "Total Commit normalmente se maximiza en el tamaño total del archivo de página total" Mi RAM es de 12 GB. Configuré mi archivo de página en 4000 MB (3,8 GB?) min y 1.5-2x memoria como máximo. Mi máximo compromiso es de 15 GB (commit = 7 / 15 actualmente), mi archivo de paginación es de aproximadamente 4 GB o probablemente un poco menos de 3,8 GB. La confirmación máxima es más como el tamaño de archivo de página + tamaño de RAM. Cuando mi archivo de página era de 12 GB, mi confirmación máxima era de aproximadamente 24 GB. El archivo de paginación de casi 3,8 GB o 4 GB de confirmación máxima es de 15 GB
barlop el
@barlop: Bueno, de alguna manera no entiendes qué es commit. Técnicamente hablando, la carga de compromiso es el "espacio de memoria prácticamente direccionable" total, incluido el espacio soportado por los administradores de memoria extendida y el reconocimiento de direcciones grandes. La confirmación máxima no sería un archivo de página + RAM, sino que se describiría como el espacio total de direcciones virtuales administrado por el sistema. El archivo de página generalmente debe cubrir, como mínimo, el tamaño total de la memoria física y, además, extenderlo más allá del tamaño total de la memoria física. En su caso, hubiera esperado que el compromiso fuera de al menos 18Gb (1.5x) o 24Gb (2x), sin embargo eso ...
jrista
... sería el caso de un archivo de página administrado por el sistema. Parece que ha ajustado manualmente la configuración de su archivo de página, en cuyo caso tendría que saber más sobre su configuración específica para decirle por qué su confirmación actual es de 15 Gb (ya que el archivo de página de 3.8 / 4 Gb indicaría una confirmación de 16 Gb, no de 15 Gb .) Es completamente posible configurar manualmente ningún archivo de página, o un archivo de página que sea demasiado pequeño, y que pueda conducir a problemas de rendimiento extraños y problemas de asignación de memoria. La mejor recomendación, a menos que tenga una configuración de servidor altamente específica (es decir, una base de datos), es permitir que Windows administre su archivo de página.
jrista
Una nota final. Para un rendimiento máximo, es mejor dejar que Windows asigne el tamaño máximo de archivo de página con anticipación. Esto generalmente se realiza en configuraciones de servidor como una base de datos de SQL Server, donde puede preasignar 64 Gb o más (generalmente 2 veces el tamaño de ram físico, por lo que tal vez incluso 128 Gb o 256 Gb) a un archivo de página que se distribuye de manera uniforme entre múltiples discos físicos para obtener el máximo rendimiento . Los archivos de página distribuidos, especialmente cuando se asignan previamente al tamaño máximo, permiten lecturas / escrituras intercaladas en todos los discos participantes, lo que permite un mejor rendimiento de paginación a través de E / S paralelas.
jrista
Como ejemplo de una gran carga de memoria, mi sistema actualmente tiene: uso de memoria física de 7.5 / 12Gb; 14.7 / 23.3Gb commit; Piscina paginada de 491mb; Piscina de 145mb np. Esto es para 146 procesos, grupo paginado máximo 2276k grupo máximo np 263k. El tamaño de confirmación más grande 696,396k, y para el mismo proceso WS es 714,256k (un proceso de pestaña Opera). (Mi conteo de proceso alto se debe al navegador web ... en la actualidad aíslan pestañas a través del proceso, y soy un hiperactivo ... docenas se abren a la vez, así que docenas de procesos adicionales.)
jrista
12

¿Cómo puedo averiguar por qué mi Windows está usando tanta RAM?

Está usando mucha RAM porque está diseñado para hacerlo. No hay absolutamente ningún costo asociado con el uso de RAM. De hecho, la RAM utilizada es mejor que la RAM libre porque el sistema operativo no tiene que hacer nada para usarla. El uso de RAM libre requiere que se use, lo que requiere esfuerzo.

Si estás pensando "Quiero mi RAM libre ahora para poder usarla más tarde", olvídalo. RAM no tiene que ser libre ahora para usarlo más tarde. Puede usarlo ahora y usarlo más tarde. No hay compensación aquí, no hay absolutamente ningún inconveniente en usar RAM.

La RAM se usa y se cambia directamente de un uso a otro sin tener que pasar por el esfuerzo de liberarla solo para tener que volver a usarla. Los sistemas operativos modernos dejan RAM libre solo cuando no tienen otra opción.

David Schwartz
fuente
12
Si mi sistema windows7 usa 3 gb de ram en el inicio, sin aplicaciones abiertas, algo debe estar mal
Vader
55
@JebediahKerman ¿Por qué dices eso? Puse un poco de esfuerzo en tratar de explicarle por qué ese no es el caso y por qué Windows está diseñado para hacerlo. ¿No entendiste mi explicación? O, si no está de acuerdo con esto, ¿podría explicar dónde cree que estoy equivocado?
David Schwartz
11
@DavidSchwartz respuesta totalmente incorrecta. Tiene una pérdida de memoria por parte de un conductor
magicandre1981
9
@DavidSchwartz: El comportamiento que usted describe (asignaciones de RAM que se pueden reutilizar) necesariamente debe hacerse desde la memoria paginable. La cifra preocupante es 1.3 GB de memoria no paginada. No se puede liberar eso para otros recursos, ¿a dónde irían esos 1.3 GBbytes? Ser "no paginado" significa que el propietario dijo "estos bytes son tan importantes que ni siquiera puede ponerlos en el disco, y mucho menos descartarlos".
MSalters
25
¿Por qué esta "respuesta" es tan votada? Se pierde completamente el punto. Independientemente de las palabras específicas utilizadas (que para empezar eran perfectamente claras), la pregunta no lo es “Why is Windows using RAM?”, la pregunta es “Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”Esta publicación debe ser un comentario en el mejor de los casos porque no aborda la pregunta real ni intenta responderla; solo interviene con un poco de consejo, y un mal consejo ya que si el OP lo hubiera ignorado como se sugiere, la pérdida de memoria no se descubriría.
Synetech
2

Una razón no mencionada anteriormente es Hyper-V.

Pude identificarlo con la excelente utilidad RamMap :

ingrese la descripción de la imagen aquí

La captura de pantalla es de después. Antes de que la memoria "Driver Locked" superara los 6 GB, más del 80% de la RAM en esta máquina en particular. Tuve que ir al Administrador de Hyper-V y desactivar "Memoria dinámica". Curiosamente, incluso después de volver a habilitarlo, la memoria "Driver Locked" se mantuvo baja: solo puedo suponer que las instancias anteriores la aumentaron y que Hyper-V no reduce automáticamente su memoria asignada:

ingrese la descripción de la imagen aquí

Dagelf
fuente