Cómo "intercambiar" de nuevo la memoria del archivo de página a la memoria física en Windows a la vez (como el intercambio de Linux)

10

¿Hay alguna manera de volver a intercambiar (para volver a colocar todos los datos de memoria que se pusieron en el archivo de página (o intercambiar, lo que prefiera)) memoria en una PC con Windows?

En Linux, uno puede hacer esto fácilmente con swapoff / dev / sdaX, donde X es la partición de intercambio. En Windows, parece pedirme que reinicie cada vez ...

La razón por la que me gustaría hacer esto es que, aunque intercambiar los datos en el archivo de intercambio me permite jugar un juego lleno de recursos completamente en RAM física, cuando detengo el juego, todos los demás programas se ejecutan lento. Esto es, por supuesto, normal; Todos los programas se introdujeron en el archivo de la página porque mi RAM era demasiado pequeña, y todo el acceso a la memoria de esos programas después del juego se topa con fallas de página difíciles, con grandes retrasos y algo de frustración como consecuencia.

Sin embargo, esa frustración podría evitarse fácilmente, simplemente permitiendo que la PC copie todos los datos en la memoria física durante un minuto más o menos, ¡y luego continúe trabajando en una PC que funcione rápidamente! (en lugar de tener que soportar la lentitud mientras se trabaja)

Gracias de antemano por cualquier consejo sobre esto!

Saludos cordiales

Arnout
fuente
Lo que quiere es un "hipervisor" con múltiples copias de Windows ejecutándose en él. Suspende uno y desuspende el otro. Esto se hace bastante con otros sistemas, pero no estoy seguro de que haya un hipervisor que pueda hacer esto para Windows.
Daniel R Hicks

Respuestas:

6

Lamentablemente no. La forma en que funciona el sistema de memoria virtual de Windows, muchas de las páginas simplemente no se pueden asignar hasta que fallan y no se pueden almacenar en la memoria a menos que estén asignadas. Entonces Windows tiene que esperar hasta que se acceda a las páginas.

David Schwartz
fuente
¿Tal vez algún proceso de terceros suficientemente privilegiado podría intentar acceder a esas páginas para que puedan fallar?
badp
No sería bueno para otro proceso acceder a las páginas. Los necesita incluir en los procesos de las aplicaciones que está tratando de usar.
Jamie Hanrahan
Ahora que lo pienso, se podría hacer ... más o menos. Tendría que inyectar un hilo remoto en el proceso de destino. Ese hilo luego haría VirtualQuery en el espacio de direcciones y luego simplemente leería cada página privada del proceso. Sin embargo, no hay forma de distinguir entre las páginas que estaban en la RAM y luego fueron paginadas, frente a las páginas que nunca fueron paginadas en primer lugar. Tampoco habría forma de identificar páginas que el proceso nunca más necesitará. Entonces estarías buscando en muchas cosas que no tenías que hacerlo.
Jamie Hanrahan
@JamieHanrahan Parece que eso funcionaría.
David Schwartz
1

Lamentablemente no existe tal opción.

La única forma de disminuir el intercambio en Windows es aumentar la RAM física.

harrymc
fuente
O deshabilitar el intercambio por completo. No necesariamente es una cosa de Windows, pero en mis máquinas Linux / BSD, deshabilito cualquier forma de intercambio rotacional porque no sirve, y cuando las cosas comienzan a usarlo, en lugar de alcanzar un límite duro, ralentizan todo.
Killermist
1
Deshabilitar el archivo de paginación no deshabilitará la paginación al disco. Solo deshabilitará la salida del espacio de direcciones privadas confirmadas. El contenido del archivo mapeado en memoria seguirá siendo paginado dentro y fuera.
Jamie Hanrahan