¿Cómo le digo a Windows 7/8/10 que sea menos agresivo al hacer copias de RAM en el archivo de paginación?

4

Muchas personas preguntan cómo deshabilitar el archivo de paginación, porque sienten los efectos del problema sobre el que preguntaré. En cambio, quiero solucionar el problema, sin desactivar el archivo de paginación.

Windows tiene la capacidad de almacenar en la RAM del archivo de paginación que cree que podría necesitar paginar, aunque en teoría esto ayuda a evitar la basura en una emergencia, es profundamente molesto para las personas con sistemas que tienen discos duros lentos, por ejemplo, computadoras portátiles baratas.

Por ejemplo, mi computadora actual: en este momento tiene 4,8 gb de RAM en uso, pero tiene aproximadamente 8 gb de "carga de compromiso" actual

Utilizando herramientas internas, descubro que la mayor parte del contenido de los archivos de la página son copias preventivas de cosas en la RAM, eso sí parece que es bajo (tengo 8 gb de ram, por lo tanto, está en uso en un 61%), pero usando RamMap Noté que la mayor parte del uso de RAM es memoria "en espera", y la mayor parte de esa memoria "en espera" es el caché de Windows (el que hace que los archivos se carguen más rápido). con una gran parte de ser un archivo binario que son los archivos de sonido de un juego.

Entonces, lo que sucede actualmente: juego un juego ... Windows lo carga en la RAM y copio otras cosas en el archivo de paginación (haciendo que el rendimiento del juego sea pobre), luego dejo de jugar, Windows deja los archivos del juego en caché en la RAM, ya que el El uso de RAM es alto, sigue poniendo más cosas en el archivo de página, esperando que se quede sin RAM, esto lo hace lento, ya que constantemente está haciendo E / S en mi HDD de muy mala calidad.

Pero si solo miro el uso real de RAM por las aplicaciones, el cargo de compromiso de las aplicaciones, procesos, kernel y elementos compartidos actualmente utilizados, el uso real de RAM debería ser de 2.5 gb, RAM y archivo de paginación incluidos.

Por lo tanto, quería intentar en lugar de decirle a Windows que no guarde en caché (el almacenamiento en caché es bastante bueno), o deshabilitar el archivo de paginación, quería decirle que NO use el archivo de paginación a menos que realmente lo necesite (por ejemplo, si el uso de memoria ram física está en espera) uso de ram físico> 80% del ram físico).

Alguien sabe como hago eso?

Speeder
fuente
actualización a Windows 10: superuser.com/a/952142/174557 aquí la RAM se comprime y se almacena en el proceso del SISTEMA para reducir la paginación
magicandre1981
Sinceramente, espero que nunca tenga que instalar win 10 en mi PC personal. Aunque saber sobre win 10 ayuda de todos modos (hay un montón de máquinas win 10 aquí, y cuando se rompen, soy yo quien tiene que arreglarlas).
Speeder
"Utilizando herramientas internas, descubro que la mayor parte del contenido de los archivos de la página son copias preventivas de cosas en la RAM" . ¿Qué es lo que estás viendo que te dice esto? ¿Cómo sabes que es "preventivo", y qué quieres decir exactamente con eso? Nota: Windows nunca "escribe de manera preventiva en el archivo de paginación". Las escrituras en el archivo de página ocurren cuando se mueven páginas de la lista de páginas modificadas a la lista de espera. Y las páginas solo se colocan en el MPL cuando se han eliminado de los conjuntos de trabajo debido a la presión de la memoria. No hay nada "preventivo" o "predictivo" al respecto.
Jamie Hanrahan
Y el nuevo mecanismo de "memoria comprimida" trata realmente de evitar las escrituras de archivos de paginación por más tiempo, antes de escribir en el archivo de páginas. (pero debido a la compresión, toma menos RAM de la que tendría que dejarlo donde estaba. Y si realmente tiene que escribirse, menos tiene que escribirse, o leerse más tarde si es necesario.
Jamie Hanrahan
He leído un montón de artículos, que Windows escribe en el archivo de paginación para evitar tener que hacerlo en una emergencia cuando realmente necesita RAM.
Speeder

Respuestas:

2

Después de mucha investigación, aprendí que lo que pedí es literalmente imposible, no se puede modificar Windows para que se comporte mejor, lo mejor que se puede hacer es, literalmente, desactivar el archivo de página por completo.

Desactivar el archivo de la página me ayudó, solucionó la mayoría de mis problemas de rendimiento (y causó algunos otros problemas), pero valió la pena.

Speeder
fuente
1

Esto empeorará el rendimiento, me temo. Como lo reconoce, su disco es lento. Esto significa que es esencial tener tanta memoria como sea posible disponible para usar como caché de disco. Esto solo es posible eliminando cosas a las que no se accede desde la RAM, y eso requiere escribirlas en el archivo de paginación.

Si Windows no utilizó el archivo de paginación para generar más RAM para el almacenamiento en caché, se necesitaría aún más E / S de disco debido a la reducción del almacenamiento en caché. Eso empeoraría el rendimiento.

Windows está sacando lo mejor de una mala situación. Las personas que diseñaron el sistema de administración de memoria de Windows (desde Vista en adelante) sabían exactamente lo que estaban haciendo y son expertos líderes en el diseño de sistemas de paginación en hardware moderno. Ni tú ni yo sabemos mejor que ellos. No hicieron nada gravemente incorrecto que se pueda solucionar accionando un interruptor. Lo sentimos, no hay un botón mágico "ir más rápido".

Por cierto, los SSD modernos tienen una resistencia de escritura significativa. Entonces, si no puede agregar más RAM, agregar un SSD pequeño y barato para su archivo de paginación no es irrazonable. Obviamente, mantener sus archivos principales en un SSD marcaría una gran diferencia.

David Schwartz
fuente
1
Entonces, ¿cómo tener un archivo binario gigantesco con un juego de música en la RAM y las aplicaciones reales que estoy usando en el archivo de página (en lugar de la RAM) ayuda a que mi sistema funcione más rápido?
Speeder
@speeder Ayudó a que su sistema fuera más rápido en el pasado. Paginar los fragmentos de la música del juego según se necesitaban, leer cada uno una y otra vez en lugar de mantenerlos en la RAM, puede haber hecho que el juego no se pueda reproducir. Ahora el sistema necesita adaptarse al cambio de uso, y será lento mientras lo hace. Esa es solo la naturaleza de los sistemas con disco lento.
David Schwartz
Re "aplicaciones reales que estoy usando en el archivo de la página (en lugar de la RAM" - lo siento, pero el código casi nunca se encuentra en el archivo de la página. La razón es que el código se comparte entre los procesos y casi siempre es de solo lectura. no hay razón para escribirlo en el archivo de paginación. Si la presión de la memoria es alta, el código al que no se accedió recientemente simplemente se elimina de la RAM, ya que siempre se puede volver a generar desde el exe o dll en primer lugar. La excepción es si está depurando el código y establece puntos de interrupción en él, pero eso solo se aplicaría a las páginas individuales en las que los configuró.)
Jamie Hanrahan
@JamieHanrahan Entendí que se refería a páginas asignadas, modificadas y accedidas por aplicaciones reales que está usando en lugar de los propios archivos ejecutables / bibliotecas. Por supuesto, las páginas limpias y no modificadas de las asignaciones de archivos son descartables y no necesitan escribirse en el archivo de página.
David Schwartz
@DavidSchwartz Ok. En cualquier caso, la memoria virtual respaldada por un archivo de paginación, que consiste principalmente en vas privados de proceso y el grupo paginado, no se escribe en el archivo de paginación de forma preventiva (es decir, mientras todavía está en conjuntos de trabajo). Um, excepción: si un proceso usa FlushViewOfFile en una sección respaldada por un archivo de página, las páginas se escriben mientras todavía están en el (los) conjunto (s) de trabajo de los procesos. Pero eso es poco común, y es el código en esos procesos, no el sistema operativo, lo que lo hace. (Nota: si sucediera alguna escritura "preventiva", lo llamaría "predictivo". No estoy seguro de lo que se supone que es "preventivo".)
Jamie Hanrahan