Cómo controlar el uso de RAM / intercambio

18

¿Hay alguna forma (aplicación) de controlar la política de uso de RAM / intercambio a nivel de aplicación?

Tengo algunas aplicaciones que uso todo el tiempo y quiero que permanezcan en la RAM todo el tiempo y también hay aplicaciones que utilizo muy raramente y podrían lanzarse para intercambiar a pedido. Sé que las ventanas configuradas por defecto deberían darme el mejor rendimiento, pero quiero verificar si puedo obtener más :).

Yo uso Windows 7.

Darqer
fuente
2
+1. Estoy interesado en un método que funcione para XP.
Xavierjazz

Respuestas:

9

Sí, hay: haga que el programa llame a la función VirtualLock :

Las páginas que un proceso ha bloqueado permanecen en la memoria física hasta que el proceso las desbloquea o finaliza. Se garantiza que estas páginas no se escribirán en el archivo de paginación mientras estén bloqueadas.

Creo que la función SetProcessWorkingSetSize también podría ser útil.


Para aquellas personas que piensan que soy un hereje por incluso sugerir que esto podría ser útil:

Tenga en cuenta que puede haber razones válidas para bloquear páginas en la memoria. Una razón válida podría ser que el usuario está ejecutando una grabadora de CD, y la grabadora de CD sale constantemente de las páginas y, por lo tanto, causa una falta de memoria intermedia, creando una montaña rusa. En esa situación, sería válido bloquear los búferes de memoria para que no se paginen, incluso si eso significa que el resto de la computadora se ralentiza, porque eso es aún mejor que darle al usuario una montaña rusa. También puede haber otras razones válidas: mi punto es que, aunque generalmente no se recomienda bloquear páginas en la memoria, todavía existen situaciones válidas y no creo que matar la idea ayude al OP aquí.


Actualización: Echa un vistazo a laReduce Working Setopción de menú de Process Hacker .

Mehrdad
fuente
Quizás citar este fragmento del artículo lo pondría en contexto: "El bloqueo de páginas en la memoria puede degradar el rendimiento del sistema al reducir la RAM disponible y forzar al sistema a intercambiar otras páginas críticas en el archivo de paginación. Cada versión de Windows tiene un límite en el número máximo de páginas que un proceso puede bloquear. Este límite es intencionalmente pequeño para evitar una degradación severa del rendimiento ". (Mi énfasis)
1
@Randolph: Nunca lo recomendé , solo mencioné que, a diferencia de lo que la mayoría de las personas parecen pensar, es posible . Personalmente, odio decirle al OP "Vamos a matar tu idea". Creo que el OP ha entendido que no debería hacer esto, pero si todavía quiere hacerlo, creo que tiene derecho a saber cómo hacerlo. (Hay una razón por la que crearon estas funciones, y yo no soy la persona para juzgar si el OP debe usarlas o no.)
Mehrdad
Hay mucho código en Windows que se dejó por compatibilidad con versiones anteriores. Si hay una razón para tenerlo, esa sería. Se podría comparar con la función Shrink en SQL Server, que no debe usarse bajo ninguna circunstancia, pero se dejó por razones de compatibilidad. Windows 7 es un sistema operativo moderno con una gestión de memoria adecuada, y el archivo de página no debe eliminarse, ni los programas deben tratar de permanecer en la memoria fuera de las "reglas". Es una práctica muy pobre y puede resultar en un sistema inestable y / o inutilizable.
1
@Randolph: (Veo que abandonaste la analogía.:]) Haz un pequeño programa (no debe tener más de ~ 10 líneas) para abrir el otro proceso y llamar SetProcessWorkingSetSize. Esa es una forma. Por supuesto, si no sabes lo que eso significa porque no eres un desarrollador, entonces obviamente no hay mucho que puedas hacer. Pero aún es posible, y decir que es imposible sigue siendo incorrecto, solo requiere más conocimiento del que podría tener el OP.
Mehrdad
1
@Randolph, puede descargar varias aplicaciones de software gratuito que obligan a todas las aplicaciones en ejecución a ir al archivo de paginación (llamando a SetProcessWorkingSetSize en cada proceso).
Chris O
5

La única forma que encontré es deshabilitar el archivo de página. Sin embargo, no es una solución perfecta: recibirá mensajes de error si se acerca o supera su límite de RAM, y es posible que no guarde los volcados de memoria correctamente, así que actívelo nuevamente si necesita solucionar problemas. Aparte de eso, he estado usando Win7 sin archivo de paginación durante meses sin problemas.

Mi experiencia: tuve este problema con un software de piano (uso de 1 GB de RAM) que sería intercambiado después de no usarse por un tiempo. Tocar una tecla del piano unas horas más tarde daría lugar a un desorden glitchy ya que el intercambio no se volvería a cargar lo suficientemente rápido como para reproducir el sonido. (¡Entonces pondría todo mi brazo en cada tecla para forzar una recarga!)

Si le preocupa la RAM, le sugiero que compre más (por ejemplo, de 8 a 12 GB con Windows 7 x64). Para los conscientes de RAM, tener abundante RAM es un regalo del cielo.

Pero antes, debe considerar obtener una unidad SSD y poner su intercambio en ella. Acelerará en gran medida la recuperación de intercambio, además de proporcionar muchos otros beneficios del sistema. RAM no proporciona beneficios cuando no está en uso.

mtone
fuente
3
Hacer. No. Eliminar. Los. Página. Archivo. Nunca.
77
Yo tengo. Estado. Utilizando. Win7. Con. No. archivo de paginación. Por. Meses. Sin. A. Enganche.
mtone
1
También uso Win7 sin archivo de página todo el tiempo, sin embargo, me parece que podría no ser suficiente para mi trabajo actual :(
Darqer
3
@Randolph: MS sabe de lo que están hablando, porque saben que sus clientes no son exactamente profesionales de la informática. Pero para aquellas personas que realmente saben exactamente qué hace y qué no hace el archivo de paginación, no hay razón para obligarlos a una práctica que no necesitan.
Mehrdad
2
@Randolph: si conduce por encima del límite de velocidad sin cinturón de seguridad, puede morir y también matar a otras personas, sin mencionar el aumento de los costos de seguro para otros. Lo peor que puede pasar si la computadora extrae páginas de su memoria es que solo perderá un poco de tiempo, dependiendo de la situación. ¿No ves algo un poco (léase: mucho) mal con la analogía aquí? Además, ¿has usado Linux / Unix? ¿Alguna vez has notado que te dan una cuerda más que suficiente para ahorcarte, a diferencia de Windows? La gente todavía los usa, ¿es eso como conducir bajo influencia o algo así?
Mehrdad
2

El uso del archivo de página depende de muchos factores. Si usa muchos programas y no tiene suficiente RAM para todos al mismo tiempo, entonces parte de ellos (o todos) pueden cambiarse al archivo de la página.

Si tiene 4 GB de RAM y, digamos, alrededor de 3 GB está disponible debido a que las tarjetas de video y otros usuarios de recursos bloquean partes de los 4 GB, y solo usa algunos programas que no ocupan mucha memoria, en teoría usted nunca debería necesitar un archivo de intercambio. Sin embargo, Windows Vista y 7 son notoriamente agresivos en su intercambio de programas al disco.

Solía ​​tener una configuración que reducía el intercambio de Windows 7 (intercambio es un término de Linux pero también se aplica a Windows, y dado que hay una configuración de registro para domar la agresividad del intercambio de Windows, parece que Microsoft acepta de mala gana, aunque en un pozo de manera oculta), pero parece que ya no puedo encontrarlo. Al buscarlo es como terminé aquí. La mejor alternativa a esta configuración que he encontrado es asegurarme de que use un archivo de intercambio de tamaño fijo (voy por 4096-4096 en sistemas operativos de 32 bits y 12 GB en sistemas operativos de 64 bits, ya que tengo 6 GB de RAM del sistema) en una partición dedicada. Con una unidad de disco de 7200 rpm de 200 GB, coloco todas mis particiones de intercambio (Windows XP, 7, 7 de 64 bits y varias Linux) en esta unidad. Parece funcionar para mí, pero YMMV.

Pablo
fuente
1

Vale la pena mencionar: cuando Windows detecta que estás usando ciertas aplicaciones con frecuencia, tiene la superfetch para poner esas aplicaciones en la memoria para que se carguen más rápido. Creo que confiar en Windows para hacer lo suyo aquí.

CreeDorofl
fuente