Bueno, lo primero, antes de entrar en una respuesta más detallada. En tu primera captura de pantalla, tu Non-Paged Pool (un tipo de uso de memoria del kernel) está en 1,3GB. Eso me parece inusualmente alto, especialmente para sólo 30 minutos después del arranque. Supongo que podría ver el NP Pool llegar a ese nivel después de una cantidad prolongada de uso o con un programa que estuviera goteando como un colador. Por el contrario, mi NP Pool suele estar entre 100 y 200 megabytes, y mi pool paginado puede llegar a ser de 400 o 500 (y eso después de tener mi sistema funcionando sin reiniciar durante semanas).
Puede habilitar algunas columnas adicionales en el Administrador de Tareas haciendo clic con el botón derecho del ratón en los encabezados de las columnas, y eligiendo seleccionar columnas. Deberías añadir Working Set (private)
, Working Set (shared)
, Commit
y NP Pool
. Yo escanearía todos tus procesos de todos los usuarios, y vería si alguno de ellos tiene un NP Pool de más de unos 256KB. Si ves alguno, especialmente alguno que sea considerablemente más alto, ese podría ser el origen del problema, o al menos parte de él.
Su conjunto total de trabajo, la cantidad de memoria física en uso por un proceso, es la combinación de los conjuntos de trabajo privados y compartidos (WS). El privado suele ser mayor para la mayoría de los procesos, sin embargo puede haber algunos que utilicen una mayor cantidad de WS compartido. Normalmente, ambos deberían sumar el total de WS. El compromiso es la cantidad de su conjunto de trabajo que ha sido comprometido con el almacén de respaldo (en la mayoría de los casos, el archivo de páginas de Windows). Las aplicaciones en segundo plano suelen tener un Commit mayor que el WS, lo que indica que gran parte de su conjunto paginado ha sido intercambiado fuera de la memoria y dentro de su archivo de paginación (lo que es bastante normal para las aplicaciones de escritorio que han sido minimizadas y no se han utilizado durante un tiempo).
La reserva no paginada es la memoria que no puede, y nunca será, intercambiada fuera de la memoria física… que es efectivamente su uso mínimo de memoria física permanente. La memoria NP Pool a menudo contiene código de programa y secciones críticas que deben estar en la memoria física para que se comporten correctamente o de forma segura, montones especiales, etc. De 60 procesos, si todos ellos tienen 256KB de memoria NP Pool, entonces su uso mínimo absoluto de memoria física sería de alrededor de 15,360KB. En la mayoría de los casos, una o dos aplicaciones pueden tener un NP Pool de 256KB, mientras que la mayoría tienen menos, a menudo considerablemente menos (o ninguno). Es muy poco probable que el sistema pague la totalidad del conjunto de procesos de trabajo, así que no esperes nunca que el uso de la memoria sea tan bajo.
Finalmente, el objetivo de tener más memoria es evitar tener que paginar los datos desde y hacia el espacio de memoria extendido (swap, archivo de página) en un disco físico. La paginación es un proceso que implica mover bloques de memoria física asignada, empujando algunos al disco, y trayendo otros a la memoria física desde el disco. La paginación es, para simplificar, altamente indeseable. No es “malo” per se, pero puede ser un verdadero lastre para el rendimiento cuando ocurre con demasiada frecuencia. El objetivo final de aumentar la RAM física total en un sistema es permitir que más procesos mantengan más de su cometido en la memoria física (conjunto de trabajo más grande). El consumo de memoria no es un problema, y cuando más procesos en ejecución utilizan más memoria, el rendimiento total del sistema y el rendimiento de los procesos activos será normalmente mayor, ya que la actividad del disco físico relacionada con los accesos a la memoria (fallos de página, específicamente) será menor.
Windows gestiona la memoria por usted, y automáticamente pagina los datos dentro y fuera de la memoria hacia y desde el archivo de página (swap) por usted. Si ejecutas un proceso que necesita 9GB de memoria y tu sistema ya está usando 4GB (de 12GB), entonces el sistema averiguará automáticamente qué procesos no necesitan acceso inmediato a todo su conjunto de trabajo, y paginará parte o todo su pool paginado a swap para liberar ese 1GB extra. Si su proceso grande necesita eventualmente 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 nuevo bloque solicitado. Su proceso grande podría eventualmente consumir toda la memoria disponible, excepto NP Pool y tal vez alguna sobrecarga mínima adicional para los procesos que se ejecutan periódicamente y que no permiten a Windows liberar más de su conjunto de trabajo (es decir, tienen fallas de página pendientes que Windows intercambiaría de otra manera fuera de la memoria física, pero debido a que están siendo solicitadas, no pueden ser movidas).
Si un proceso necesita más memoria de la que se le permite acceder (los procesos de 32 bits normalmente pueden acceder a 2Gb, y algunos a algo menos de 4Gb con técnicas mejoradas, mientras que los procesos de 64 bits normalmente pueden acceder a unos 48Gb de memoria, cada uno), entonces windows a veces intentará virtualizar su memoria con espacio de intercambio. Si una aplicación de 32 bits quiere usar su máximo permitido de 2Gb de espacio, pero sólo hay 1,2Gb disponibles, windows reservará los 2Gb completos en el archivo de página, y moverá los datos propios del proceso dentro y fuera del archivo de página según sea necesario para soportar 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 va por Total Commit. El Total Commit suele alcanzar el tamaño máximo del archivo de página total, que cuando es gestionado por el sistema, suele ser 2-3 veces la cantidad de memoria física. En su caso, el Total Commit sería alrededor de 24Gb, o 2 veces su memoria física de 12Gb (y esto se indica en su primera captura de pantalla, donde dice: Commit (GB) 3 / 23).
Un último punto. Usted dijo en su respuesta que tenía 16Gb de RAM, mientras que el Administrador de Tareas sólo ve 12Gb de RAM. Una de dos cosas aquí. O bien su sistema realmente sólo tiene 12Gb de RAM, o uno de sus palos no se está registrando correctamente. Si un stick de RAM (estoy asumiendo 4x sticks de 4Gb), puede estar mal, puede no estar asentado del todo bien en tu placa base, o tu placa base puede tener un problema de detección de memoria.
Para comprobar si es esto último, primero deberías actualizar la BIOS de tu placa base a la última versión. Tuve un problema similar… mis seis barras de memoria DDR3 de triple canal (6x 2Gb) estaban todas bien según las pruebas individuales de cada una… pero mi placa base decidía aleatoriamente no contar una o dos de ellas de vez en cuando, dejándome a menudo con sólo 8Gb de memoria. Una actualización de la BIOS solucionó el problema, y ahora tengo acceso fiable a los 12Gb de mi memoria.