La carga de confirmación está 100% llena, pero la memoria física es solo del 60% cuando no se utiliza ningún archivo de página

25

He desactivado el archivo de página en mi sistema (el disco duro es demasiado lento, no puedo comprar uno nuevo de inmediato, no puedo mover el archivo de página a otra partición). Cuando veo en el Monitor de recursos, usando aplicaciones que demandan memoria, el sistema muestra que la carga de confirmación está casi 100% llena. De hecho, si sigo exigiendo más memoria, los programas comienzan a fallar a medida que la carga de compromiso efectivamente alcanza el 100%.

Mientras tanto, el sistema dice que estoy usando solo 50-60% de memoria física y tengo alrededor de 1GB de memoria disponible (gratis + en espera).

Si commit charge es la memoria total realmente solicitada, ¿por qué el sistema dice que hay tanta memoria libre? ¿La memoria física no está siendo utilizada por Windows? ¿Está mal el gráfico de memoria? ¿Me estoy perdiendo de algo?

Confirmar gráfico de carga vs gráfico de memoria física Administrador de tareas

Jason Oviedo
fuente
2
Otra buena respuesta sobre el tema está aquí: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
cnst
@cnst Muy buen artículo. Me ayudó a entender mucho mejor este problema. ¿Por qué no lo publicas como respuesta?
Jason Oviedo
2
Por favor, no deshabilite las personas del archivo de página. Esta es una idea tonta
Milney
@Milney Estoy de acuerdo, por lo general no se debe deshabilitar el archivo de página. En el momento de la pregunta tenía sentido para mí, ya que el disco era demasiado lento, tanto que estaba paralizando mi sistema. En realidad, fue bastante útil, aparte de provocar esta pregunta, la capacidad de respuesta general del sistema mejoró muchas veces.
Jason Oviedo
@JasonOviedo Ese no debería ser el caso e indica que algo está muy mal. Darle más opciones al sistema NO debería hacerlo más lento. El sistema no tiene que usar el archivo de página solo porque tiene uno. (Lo que significa que esta es probablemente una pregunta XY. La pregunta correcta es precisamente por qué el archivo de página ralentizó su sistema).
David Schwartz

Respuestas:

26

Quedarse sin límite de confirmación mientras todavía tiene mucha RAM disponible no es nada inusual. Ni el límite de compromiso ni el cargo de compromiso están directamente relacionados con la RAM libre o disponible.

El límite de confirmación = tamaño de archivo de paginación actual + tamaño de RAM.

Como no tiene un archivo de página, el límite de confirmación es menor de lo que sería si tuviera un archivo de página. No importa cuánto RAM esté libre . Para el límite de confirmación, solo importa la cantidad de RAM instalada . Puede quedarse sin límite de compromiso incluso con el 90% de su RAM libre o disponible.

La carga de compromiso es un recuento de memoria virtual, no física. Supongamos que mi programa solicita 2 GB comprometidos, pero luego solo accede a .5 GB. Los 1,5 GB restantes nunca tienen fallas, nunca se asignan a RAM, por lo que el uso de RAM no refleja los 2 GB, solo .5 GB.

Aún así, el "compromiso del sistema" aumenta en 2 GB porque el sistema se ha "comprometido" de que habrá un lugar para guardar mis 2 GB, en caso de que realmente lo necesite todo. El hecho de que en cualquier ejecución del programa no intente usarlo todo necesariamente no ayuda. Pedí 2 GB y el regreso exitoso de esa llamada me dice que el sistema operativo "se comprometió", es decir, prometió, que puedo usar tanto espacio de direcciones virtuales. El sistema operativo no puede hacer esa promesa a menos que haya algún lugar para mantenerlo todo.

Entonces: vuelva a colocar su archivo de página, agregue más RAM o ejecute menos cosas a la vez. O alguna combinación de los tres. Estas son sus únicas opciones para evitar los errores de "poca memoria" y "falta de memoria".

Vea también mis respuestas aquí (más tiempo) y aquí (mucho más tiempo).

Jamie Hanrahan
fuente
3
Específicamente, antes de que Windows asigne memoria, quiere poder garantizar que puede cumplir con estas asignaciones cuando se usan. Incluso si las asignaciones no se utilizan por completo, Windows se negará a asignar más si no puede hacer esa garantía. Un archivo de página, se use o no, proporciona almacenamiento de respaldo adicional.
Bob
4

Como lo ilustra la prueba de asignación de memoria en el artículo en http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ , Windows es un tipo de sistema que fallaría en una asignación de memoria grande si dicha asignación, junto con todas las asignaciones anteriores (el concepto que Microsoft llama como "compromiso"), llevaría el "compromiso" total por encima de la suma de la memoria física y la suma de todos los archivos de página (intercambio).

Tenga en cuenta que una asignación por sí sola no utiliza ninguna memoria real (ni física ni de intercambio), antes de que tenga lugar una lectura o escritura dentro del espacio de direcciones virtuales del proceso para la asignación mencionada anteriormente. Por ejemplo, una asignación de 2GB por sí sola solo afectaría los números de "Confirmación" (en Windows 7 talk), dejando solo "Memoria física" (hasta que ocurra la lectura / escritura dentro de dicha asignación).

En lo que respecta al diseño del sistema operativo, el enfoque alternativo sería permitir siempre la asignación de cualquier tamaño (a menos que la memoria disponible ya esté completamente agotada), y luego dejar que las aplicaciones fallen en la lectura / escritura. Consulte /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail para obtener más detalles.

cnst
fuente
2
Sí. El argumento para el enfoque de Windows: es razonable esperar que los programadores verifiquen el estado de un malloc (o, en Win32, VirtualAlloc). Una vez que esa llamada tiene éxito, el programa puede confiar en que el vas asignado es utilizable y seguirá siéndolo hasta que sea gratuito o VirtualFree correspondiente. La otra forma, las lecturas y escrituras de memoria ordinarias (es decir, la desreferenciación de punteros) puede aumentar las excepciones de acceso a la memoria. Pero ningún programador espera tener que verificar el estado después de cada desreferencia de puntero. De todos modos, no devuelven un estado, por lo que debería hacerse con un controlador de excepciones. Feo.
Jamie Hanrahan
2

La memoria disponible no es lo que crees que sería. No se utiliza sin ser realmente un caché de archivos de procesos terminados recientemente o procesos recortados que se han visto obligados a ceder algo de memoria a otros procesos. Podrían ser llamados de nuevo a su propósito original. ver para más detalles.

http://support.microsoft.com/kb/312628

Como no tener un archivo de página, esto es muy malo. Windows se degrada mal sin uno. Recuerde que incluso los archivos ejecutables se usan como archivos de intercambio cuando no hay un archivo de página. Incluso si la unidad es lenta, es mejor tener un archivo de página hasta que obtenga de 8 a 16 gigas de memoria. Algunas personas piensan que incluso Windows 7 puede ejecutarse sin uno entonces.

Regularmente le doy un impulso a la máquina vieja haciendo algunas cosas. Limpie el disco duro tanto como sea posible. Copie todo lo que pueda eliminar temporalmente de la unidad en una copia de seguridad. Eliminar aplicaciones que no necesita. Eliminar aplicaciones puede reinstalar.

Cuando todo eso esté hecho, desfragmente su disco duro. En ese momento, recrea el archivo de tu página. Será lo más cercano posible al frente de la unidad. Cree un tamaño fijo de aproximadamente 1,5 veces la memoria. Esa es mi regla, generalmente he visto tamaños entre 1 y 3 veces de memoria. Esto le dará un ligero aumento en la velocidad sobre los lugares habituales donde se colocaría.

Yo uso el defrager auslogico es gratis (anuncios para más herramientas sin embargo). Hay otros que hacen esto también. Echa un vistazo a los defragers en portableapps.com. Optimiza el disco colocando archivos a los que se accedió recientemente cerca de la parte frontal de la unidad para un acceso más rápido. Muestra dónde se coloca el archivo de página para que pueda ver si lo movió al 25% superior de la unidad.

Después de eso, reinstale las aplicaciones y vuelva a copiar sus datos.

Yo diría que obtienes un 10 o 20% de impulso. Pero el valor principal es que muchas de las dudas desaparecen para una experiencia más fluida.

Nelson Asinowski
fuente
3
Utilizando algunas pruebas, está claro para mí que cuando el disco es demasiado lento, no tener un archivo de página acelera el sistema. Puedo notar una diferencia de muchos segundos en tareas simples como el cambio de aplicación.
Jason Oviedo
@ Mark Estás equivocado. La gran mayoría de los sistemas Windows se ejecutan con un archivo de paginación (porque así es como Windows se ejecuta de manera predeterminada, por una razón buena y suficiente) y casi todos usan discos de velocidad similar. Y casi ninguno de ellos muestra tales problemas. El problema no es "el archivo de paginación", es que no tienes suficiente RAM. Tenga en cuenta que deshacerse del archivo de paginación no elimina la paginación hacia y desde el disco, simplemente elimina uno de los cientos de archivos que generalmente están involucrados en la paginación.
Jamie Hanrahan