¿Por qué Windows 7 usa el archivo de página cuando hay RAM física libre?

43

Estoy usando Windows 7 64 bit con 8G ram. Después de algún uso, siento que Windows se está volviendo lento. La unidad está dando vueltas. Cuando miro el monitor de recursos y la actividad del disco, veo algunas instancias de uso del archivo de página (c: \ pagefile.sys). Compruebo la memoria física y veo aproximadamente 2.3G de memoria disponible y 700M de memoria libre.

¿Por qué Windows no usa más memoria libre y menos archivo de página? ¿Necesita dejar una cantidad x de ram libre, cuánto sería? ¿Es un porcentaje de carnero físico?

Mi plan es obtener más memoria RAM y un SSD para la unidad principal. Mientras tanto, estoy sufriendo de un rendimiento lento.

Tony_Henrich
fuente
1
El hecho de que esté escribiendo / leyendo en el archivo de la página no significa que lo usemos, solo puede estar actualizándolo para que pueda volcar la memoria más rápido si hay una demanda repentina. Recomiendo ejecutar el monitor de rendimiento o hacer un diagnóstico profundo y ver qué está causando la lentitud.
Scott Chamberlain el
Tener más de 8 GB de RAM no aumentará el rendimiento en el 99. (9)% de los casos. ¿Has llenado tu mobo de chips RAM baratos de baja frecuencia / alta latencia? Reemplazarlos sería una mejor idea que agregar más.
kotekzot
3
@kotekzot Eso depende. En general, he encontrado que la latencia de RAM es algo insignificante en la mayoría de los cuellos de botella. Si tiene suficiente memoria como para no tener que esperar a que se paguen las aplicaciones cuando las alterna entre todas, entonces el siguiente cuello de botella más grande en varios órdenes de magnitud es casi siempre el disco duro, y un SSD lo solucionará correctamente arriba.
Darth Android
@ si tengo más ram, puedo poner el archivo de página en un disco ram que es mucho más rápido que el acceso a HD. Es un nivel de estación de trabajo portátil Dell, así que estoy seguro de que los componentes no son baratos. Soy consciente de que las computadoras portátiles tienen discos duros más lentos y subsistemas de E / S que las computadoras de escritorio.
Tony_Henrich
1
No coloque el archivo de su página en un disco RAM. Eso solo hará que el sistema incurra en más fallas de página. Sí, si están en el disco de paginación en RAM, se resolverán más rápidamente que si se hubiera ido a un disco real, pero no tenerlos todavía es mucho más rápido; Además, muchos de los fallos de página aumentados serán a archivos asignados, y el RAMdisk no los ayudará en absoluto.
Jamie Hanrahan

Respuestas:

33

Primero, no coloque su archivo de página en un SSD. Si bien los SSD han mejorado con respecto a la nivelación del desgaste, el archivo de la página se escribe con frecuencia y degradará su SSD mucho más rápido que el uso general.

Lo que mucha gente no entiende es que Windows nunca tiene memoria libre. Hay algunos MB que se mantienen libres para demandas de ráfaga, pero de lo contrario, la diferencia entre la memoria de aplicación activa en uso y la memoria total generalmente es consumida por lo que se conoce como memoria "en espera".

Memoria del sistema

Estas son páginas de memoria que se pueden volcar si es necesario (la memoria en espera es una gran caché grande), por lo que desde el punto de vista de la aplicación, está disponible, pero de ninguna manera no se están utilizando. Por lo general, funcionan como caché de disco o caché de archivo de paginación.

El objetivo de Windows es mantener los datos con mayor probabilidad de ser utilizados en esta caché en espera, según los patrones de uso. Para usar un ejemplo artificial, comparemos el valor relativo de la memoria privada de un programa como Windows Update (generalmente configurado para ejecutarse una vez por semana), sobre el almacenamiento en caché de los contenidos de su escritorio en esta memoria en espera:

Para una buena mayoría de las veces, Windows Update está inactivo. Está reteniendo memoria y, en su mayor parte, no hace absolutamente nada de valor mientras espera que llegue el horario. El contenido de su carpeta de escritorio, por otro lado, puede consultarse constantemente, especialmente si desea guardar archivos en él.

En este caso, lo que Windows hará es localizar la memoria asignada a Windows Update (aunque la memoria no esté "llena" y usar el espacio disponible en la RAM para almacenar en caché el contenido de su escritorio. Esto da como resultado un mejor rendimiento para tú.

Windows está tomando miles de estas decisiones y administrando un caché de disco para cientos de archivos que los servicios en segundo plano escriben constantemente mientras intenta equilibrar esto con las demandas de memoria de las aplicaciones activas. A veces se equivoca por un momento, y es posible que tengamos que esperar a que regrese los datos a la memoria cuando cambiemos a una aplicación que ha estado inactiva durante un tiempo. Pero lo que tiene que pensar es que si hubiera mantenido esa aplicación completamente en la memoria, ¿cuántas otras aplicaciones estarían atascadas a la espera de que se completaran las escrituras y lecturas del disco, o se vieran obligados a salir? ¿Qué pasaría si esas fueran aplicaciones que estaba usando mientras tanto?


Las aplicaciones con frecuencia asignan páginas de memoria que se usan muy raramente, como el código de inicio (usado una vez y luego no es necesario), el código de apagado (usado una vez y luego no es necesario) o el código de actualización. No es práctico mantener todo esto en la memoria cuando hay usos mucho más importantes, por lo que una vez que Windows identifica las secciones de código que no se han necesitado para el funcionamiento actual de una aplicación, felizmente distribuye esas secciones en el archivo de paginación, incluso si técnicamente podría retenerlos en la memoria.

(Y en realidad, dependiendo de las aplicaciones, los sistemas con frecuencia pueden asignar más memoria de la que realmente tienen, esperando que la mayor parte termine paginada. Si está viendo un desglose detallado de la memoria, el cargo "Commit" o "Commit" es la cantidad de memoria que Windows ha asignado a varias aplicaciones. El archivo de paginación se utiliza para proporcionar garantías para esta memoria, incluso si no tiene suficiente RAM física para cubrirla).


Acabo de notar que hizo una distinción entre memoria disponible y libre en su pregunta; Mis disculpas si te sientes dictado y ya sabías la diferencia Idealmente, la memoria libre siempre es 0. Sin embargo, aunque la memoria en espera es la memoria que se puede liberar, no siempre la memoria se puede liberar rápidamente. Si intento escribir un archivo de 1GB en el disco, Windows lo pegará en un caché de disco en la memoria si es posible, y luego lo escribirá lentamente en el disco duro en el fondo. Si una aplicación necesita solicitar 50 MB de memoria adicional, pero no hay ninguna disponible porque este enorme caché de disco todavía se está vaciando, entonces la aplicación se bloqueará hasta que esté disponible. Mantener un pequeño búfer a mano le permite al sistema resolver este problema con un retraso mínimo desde el punto de vista del usuario.

Darth Android
fuente
66
@FrankComputer Vea la captura de pantalla que publiqué para mi sistema de trabajo de 8GB: 6300MB en uso, 1700MB en disco / caché en espera, 42MB gratis. Mirando mi sistema doméstico (memoria de 32 GB), en realidad está en lo correcto, pero justo en el umbral incorrecto: 9.2 GB en uso, caché de disco de 14.5 GB, 8.6 GB libre. Tendrá memoria libre si Windows simplemente se ha quedado sin cosas para almacenar en caché, pero ese umbral es bastante alto. Windows no se intercambia constantemente porque la memoria caché del disco no es espacio de intercambio; se almacena en caché pasivamente cuando se solicitan archivos y no en la memoria caché. No notas las veces que se extrae del caché y no hay actividad de HDD.
Darth Android
8
@FrankComputer: Si su sistema está funcionando bien, no es por la memoria libre. La memoria libre es la memoria que el sistema no está utilizando, y no puede tener más efecto en el rendimiento que la memoria que se encuentra en su escritorio. La única forma de mejorar el rendimiento con memoria es usarlo , por lo que si es gratuito, no se está utilizando para mejorar el rendimiento. Hacer más memoria libre significa usar menos, empeorando el rendimiento.
David Schwartz
1
@Tony_Henrich Deshabilitar el archivo de página es malo. Muy mal. (Mover el archivo de paginación a un disco ram es efectivamente lo mismo que deshabilitarlo. Windows no puede mover datos que no necesita inmediatamente de la memoria). Muchos programas solicitan memoria que no necesitan de inmediato, pero que podrían necesitar en el futuro. Por lo general, Windows asigna esta memoria en el archivo de página y no hace nada. Por ejemplo. El servidor MSSQL asigna 8 GB de RAM cuando se inicia. Incluso para 0 bases de datos. Simplemente porque. Si coloca su archivo de paginación en un disco RAM, desperdiciará considerables cantidades de RAM que de otro modo podrían usarse para caché
Darth Android
1
@Tony_Henrich Actualmente, Windows está administrando de manera óptima su archivo de página y su RAM, dada la forma en que usa su sistema. Las únicas mejoras que puede hacer son: agregar más memoria o mover su sistema operativo a un SSD. Jugar con su archivo de paginación degradará el rendimiento general de su sistema en el mejor de los casos o afectará la estabilidad de su sistema en el peor.
Darth Android el
1
Estás explicando qué hace Windows con la memoria. Si tengo mucha memoria libre, Windows debería usarla, independientemente de si una aplicación está inactiva o no hace nada. ¿Cuál es el daño en mantenerlo en la memoria cuando hay memoria disponible? Una vez que la memoria se agota, Windows puede hacer uso del archivo de la página. Usar el archivo de página está causando desgaste en la unidad. No hay desgaste al usar la memoria. En segundo lugar, uso un SSD para mi archivo de página. Si bien las vidas de los SSD son más pequeñas que los discos duros y se desgastan con mucha escritura, eso no ocurre hasta dentro de unos meses. Todavía está en años.
Tony_Henrich
4

Se llama planificación anticipada.

Escribir páginas de memoria en el archivo de paginación cuando todavía hay mucha RAM es algo bueno. Tan pronto como un programa solicite más memoria de la que hay libre, el sistema operativo puede comenzar a liberar espacio lo antes posible. Mejor prepararse ahora que más tarde.

Si el sistema operativo esperara, entonces se encuentra con un cuello de botella de rendimiento. Si un programa solicita más memoria de la que está disponible, ahora debe esperar hasta que el sistema operativo escriba el bloque de memoria modificado y luego liberarlos.

surfasb
fuente
Con 16G + y con programas ligeros, los momentos en que un programa solicita más memoria de la que es gratuita es mucho menor que el uso frecuente del archivo de página. Entonces, en esos casos, es mejor usar parte de la memoria libre y menos del archivo de página. No hay una solución única que se adapte a todos los casos.
Tony_Henrich
1
No creo que lo entiendas. No tiene que ser uno u otro. Windows puede escribir en la memoria libre y escribir en el archivo de paginación. No es como escribir en el archivo de la página o escribir en la memoria.
surfasb
1
Pero al tratar de planificar con anticipación, ¿no está Windows llenando potencialmente el caché en chip del HDD / SDD, lo que hace que las operaciones concurrentes de escritura / carga de archivos sean más lentas? Este intercambio previo de RAM suena como una buena idea, pero parece que incidentalmente carga el sistema en los malos momentos.
binki
1
@binki: Sí, interfiere con los tiempos de lectura / escritura del disco, pero si recuerdo, están usando una prioridad más baja, por lo que otras lecturas-escrituras deberían ir primero en general.
Mooing Duck
2

He tenido el archivo de página desactivado durante los últimos 7 años. En realidad es lo primero que hago después de una nueva instalación. Nunca tuve ningún problema con eso. (En realidad, tuve un juego llamado "Titan Quest" que realizó una comprobación muy estúpida al inicio, así que creé un archivo de paginación de 4 MB solo para hacerlo feliz y apagué PF más tarde). En cuanto a la pregunta original. Windows usa nuestra RAM para caché de E / S de disco. Por alguna razón, cree que la memoria caché del disco es igualmente importante para el código y los datos de los programas activos. Y no hay forma de limitar el tamaño del caché del disco. Está ahí por diseño y no podemos hacer nada al respecto ... ¡Oh, espera! ¡Podemos! Simplemente apague el archivo de paginación. ¿Ejecuta aplicaciones pesadas en RAM? Compre más RAM o cierre una aplicación antes de iniciar otra. Puede usar Process Explorer para ver cuánta memoria se usa en un momento dado.

Anton Duzenko
fuente
1
Deshacerse del archivo de paginación no desactivará el almacenamiento en caché del disco.
Jamie Hanrahan
1
Usted escribió: "[El almacenamiento en caché de disco] está ahí por diseño y no podemos hacer nada al respecto. ¡Oh, espera! ¡Podemos! Simplemente apague el archivo de paginación". Bueno, apagar el archivo de paginación no hace nada sobre el almacenamiento en caché del disco, entonces, ¿qué estás diciendo? De todos modos, es una idea estúpida, ya que obliga al sistema operativo a mantener toda la confirmación privada en RAM para siempre una vez que se ha tocado. Esto deja menos espacio para la memoria virtual asignada (como el código), por lo que las cosas deben ser paginadas más. El caché de disco proactivo (superfetch) usa lo que queda después de todo lo anterior, por lo que no aumenta la paginación de ninguno de los dos.
Jamie Hanrahan
1
Nunca dije (o pensé) que apagar el archivo de paginación fue idea tuya, así que no dije nada sobre "tu idea". Ah, mientras estoy aquí: "Por alguna razón [Windows] piensa que la memoria caché del disco es igualmente importante para el código y los datos de los programas activos" es totalmente erróneo. Superfetch solo usa páginas que están en la lista de espera y, por lo tanto, ya forman parte de " RAM disponible; no toma páginas del código y los datos de los programas. Y esas páginas permanecen disponibles, es decir, inmediatamente disponibles para el código y los datos de los programas, incluso después de que contengan datos almacenados en caché de los archivos.
Jamie Hanrahan
1
No estoy diciendo nada por el estilo. (¿De dónde sacas esto?) Sin embargo, estoy diciendo que Windows nunca pagina nada para dejar espacio para el caché de disco. Por el contrario, la memoria caché utiliza páginas que actualmente no son parte de los procesos y, por lo tanto, se desperdiciarían. Tales restos RAM inmediatamente disponibles para código y datos que necesita para paginación cosas en , por lo que no está "agotado" por la caché, simplemente "prestadas". Por lo tanto, el caché no reduce la cantidad de código y datos que se pueden paginar o guardar en la RAM. Ref: Windows Internals por Solomon, Russinovich e Ionescu.
Jamie Hanrahan
1
Ya respondí en la respuesta de DA. Pero lo que acabas de decir no es lo que dijo. Dijo que Windows eliminará los procesos inactivos durante mucho tiempo (verdadero). Y también dijo que el caché del disco podría usar las páginas liberadas (también cierto). Pero eso no significa que la caché del disco tenga necesariamente prioridad. El caché de disco solo usa esas páginas si no las necesita ninguna otra de mayor prioridad. Una gran cantidad de pruebas ha demostrado que esta es una buena compensación.
Jamie Hanrahan
1

Los argumentos ( aquí y aquí ) para mantener y usar el archivo de página, incluso si hay suficiente RAM son:

  • Incluso si hay memoria libre ahora, la máquina puede quedarse sin memoria más tarde. Es mejor dejar caer pequeñas partes de memoria usadas en el disco de antemano.
  • También hay memoria "en espera" que aparece como libre pero que en realidad se usa para el almacenamiento en caché del disco. También es importante para el rendimiento, mejor tener algunos.
  • Si te quedas sin RAM con el archivo de página deshabilitado, es el bloqueo duro.
  • Si bien 2, 4, 16 o cualquier otro número de GB de RAM puede parecer "mucho", esto puede no ser tan cierto como cree. Necesitas un perfil.

Con el monitor de recursos de Windows es posible ver cuánta RAM se usa para el almacenamiento en caché (se muestra como "En espera").

Si ve que su RAM se usa realmente o está en espera, el archivo de página es útil para usted. Si la combinación de sus tareas y la RAM disponible es tal que una parte importante de la memoria aparece como no utilizada ("Gratis"), creo que no hay necesidad de moler el disco duro solo por respeto a alguien que "sabe mejor y lo dijo aquí ".

h22
fuente
-2

Faltan todos estos comentarios y la respuesta correcta. Apague su archivo de página. No es necesario con 8GB de RAM, y si necesita más RAM, cómprelo. Bastante simple en realidad.

a2552308
fuente
44
Windows es bastante inteligente para determinar qué (no) poner en el archivo de página. Con la excepción de algunos escenarios casi puramente teóricos, apagarlo dañará el rendimiento, incluso con 8 GB de RAM. Incluso si faltara la respuesta correcta, ciertamente no es así.
Marcks Thomas
44
¿Tiene alguna evidencia que respalde su reclamo de "desempeño de daños"?
Presento
66
En pocas palabras: los archivos de página solo pueden aumentar la actividad del disco ... y Windows no es lo suficientemente inteligente como para no usarlo en absoluto si tiene mucha RAM. En un sistema SSD esto puede no ser demasiado notorio, en un sistema de husillo esto puede afectar mucho el rendimiento de la aplicación. Consulte el póster original.
a2552308
2
Sección relevante del artículo de MS: "Sin embargo, a medida que se agrega más RAM a una computadora, la necesidad de un archivo de página disminuye. Si tiene suficiente RAM instalada en su computadora, es posible que no necesite un archivo de página, a menos que sea necesario por una aplicación específica ". No pude encontrar las secciones relevantes de los muchos artículos que vinculó, ¿tal vez podría citar las secciones relevantes?
a2552308
2
Suena bien en teoría, no es lo que he observado en la práctica.
a2552308