Pensé que toda la esencia del intercambio era actuar como una red de seguridad de almacenamiento temporal cuando la RAM estaba llena, pero mi partición de intercambio se usa constantemente a pesar de que a veces tengo hasta 3 GB de RAM libre. ¿Esto es normal?
kernel
swap
memory-usage
Mysterio
fuente
fuente
free -m
,top -b 1
Respuestas:
Puede intentar cambiar su valor de "intercambio":
De las preguntas frecuentes sobre el intercambio de Ubuntu :
También puede consultar: https://askubuntu.com/a/103916/54187
fuente
sudo sysctl --load=/etc/sysctl.conf
después de editar el archivo para aplicar los cambiosHay algunos aspectos diferentes a su pregunta.
En primer lugar, cuál es su definición de "gratis". En realidad, no es tan simple como parece en Linux (o en cualquier sistema operativo moderno).
Cómo Linux usa RAM (muy simplificado)
Cada aplicación puede usar parte de su memoria. Linux usa toda la memoria no ocupada (excepto los últimos Mb) como "caché". Esto incluye el caché de página, los cachés de inodo, etc. Esto es algo bueno: ayuda a acelerar las cosas. Tanto la escritura en el disco como la lectura desde el disco se pueden acelerar enormemente mediante el caché.
Idealmente, tiene suficiente memoria para todas sus aplicaciones y todavía le quedan varios cientos de Mb para caché. En esta situación, siempre y cuando sus aplicaciones no aumenten el uso de memoria y el sistema no tenga problemas para obtener suficiente espacio para la memoria caché, no es necesario realizar ningún intercambio.
Una vez que las aplicaciones reclaman más RAM, simplemente entra en parte del espacio utilizado por el caché, reduciendo el caché. La desasignación de la memoria caché es barata y lo suficientemente fácil como para que se realice simplemente en tiempo real: todo lo que se encuentra en la memoria caché es solo una segunda copia de algo que ya está en el disco, por lo que puede desasignarse al instante, o es algo que haríamos De todos modos, he tenido que descargar el disco en los próximos segundos .
Esta no es una situación específica de Linux: todos los sistemas operativos modernos funcionan de esta manera. Los diferentes sistemas operativos podrían informar RAM libre de manera diferente: algunos incluyen el caché como parte de lo que consideran "libre" y otros no.
Cuando hablamos de RAM libre, es mucho más significativo incluir caché, porque prácticamente es gratis, está disponible si alguna aplicación lo solicita. En Linux, el
free
comando informa en ambos sentidos: la primera línea incluye caché en la columna RAM utilizada, y la segunda línea incluye caché (y buffers) en la columna libre.Cómo Linux usa el intercambio (aún más simplificado)
Una vez que haya usado suficiente memoria para que no quede suficiente para un caché que funcione sin problemas, Linux puede decidir reasignar parte de la memoria de la aplicación no utilizada de la RAM para intercambiar.
No hace esto de acuerdo con un límite definido. No es como si alcanzas un cierto porcentaje de asignación, entonces Linux comienza a intercambiarse. Tiene un algoritmo bastante "difuso". Tiene en cuenta muchas cosas, que se pueden describir mejor por "cuánta presión existe para la asignación de memoria". Si hay mucha "presión" para asignar nueva memoria, entonces aumentará las posibilidades de que algunas sean intercambiadas para hacer más espacio. Si hay menos "presión", disminuirá estas posibilidades.
Su sistema tiene una configuración de "intercambio" que le ayuda a ajustar cómo se calcula esta "presión". Normalmente no se recomienda alterar esto en absoluto, y no recomendaría que lo altere. El intercambio es en general algo muy bueno, aunque hay algunos casos extremos en los que perjudica el rendimiento, si se observa el rendimiento general del sistema, es un beneficio neto para una amplia gama de tareas. Si reduce la capacidad de intercambio, permite que la cantidad de memoria caché se reduzca un poco más de lo que lo haría de otra manera, incluso cuando realmente sea útil. Depende de usted si esto es una compensación suficiente para cualquier problema que tenga con el intercambio. Deberías saber lo que estás haciendo, eso es todo.
Existe una situación bien conocida en la que el intercambio realmente perjudica el rendimiento percibido en un sistema de escritorio, y eso es lo rápido que las aplicaciones pueden responder a la entrada del usuario nuevamente después de permanecer inactivo durante mucho tiempo y tener procesos en segundo plano pesados en E / S (como un copia de seguridad durante la noche). Esta es una lentitud muy visible, pero no suficiente para justificar la desactivación del intercambio y es muy difícil de evitar en cualquier sistema operativo. Apague el intercambio y esta lentitud inicial después de la copia de seguridad / escaneo de virus puede no ocurrir, pero el sistema puede funcionar un poco más lento durante todo el día. Esta tampoco es una situación limitada a Linux.
Al elegir lo que se va a intercambiar en el disco, el sistema intenta elegir la memoria que realmente no se está utilizando: leer o escribir. Tiene un algoritmo bastante simple para calcular esto que elige bien la mayor parte del tiempo.
Si tiene un sistema en el que tiene una gran cantidad de RAM (al momento de escribir, 8 GB es una gran cantidad para una distribución típica de Linux), entonces rara vez se encontrará con una situación en la que sea necesario el intercambio. Incluso puede intentar desactivar el intercambio. Nunca recomiendo hacerlo, pero solo porque nunca se sabe cuándo una mayor cantidad de RAM puede salvarlo de algún bloqueo de la aplicación. Pero si sabe que no lo va a necesitar, puede hacerlo.
Pero, ¿cómo puede el intercambio acelerar mi sistema? ¿El intercambio no ralentiza las cosas?
El acto de transferir datos de la RAM al intercambio es una operación lenta, pero solo se toma cuando el núcleo está bastante seguro de que el beneficio general superará esto. Por ejemplo, si la memoria de su aplicación ha aumentado hasta el punto de que casi no le queda memoria caché y su E / S es muy ineficiente debido a esto, en realidad puede obtener mucha más velocidad de su sistema liberando algo de memoria, incluso después del gasto inicial de intercambio de datos para liberarlos.
También es un último recurso si sus aplicaciones realmente solicitan más memoria de la que realmente tiene. En este caso, el intercambio es necesario para evitar una situación de falta de memoria que a menudo provocará que una aplicación se bloquee o tenga que ser eliminada por la fuerza.
El intercambio solo se asocia con momentos en los que su sistema funciona mal porque sucede en momentos en que se está quedando sin RAM utilizable, lo que ralentizaría su sistema (o lo haría inestable) incluso si no tuviera el intercambio. Entonces, para simplificar las cosas, el intercambio ocurre porque su sistema se está estancando, en lugar de al revés.
Una vez que los datos se intercambian, ¿cuándo vuelven a salir?
Transferir datos fuera de intercambio es (al menos para los discos duros tradicionales) tan lento como ponerlo allí. De manera comprensible, su núcleo será tan reacio a eliminar datos del intercambio, especialmente si en realidad no se está utilizando (es decir, leído o escrito). Si tiene datos en el intercambio y no se está utilizando, entonces es realmente bueno que permanezca en el intercambio, ya que deja más memoria para otras cosas que se están utilizando, lo que puede acelerar su sistema.
fuente
free -m
.Establecer el valor de intercambio no funciona en todas las situaciones. Si te funciona, genial. Si no, he escrito un script para limpiar periódicamente el intercambio apagándolo y volviendo a encenderlo.
Cambiar el intercambio es un poco arriesgado si no tienes cuidado. Si no tiene suficiente RAM libre para guardar todo en RAM más todo en el intercambio, intentar deshabilitar el intercambio hará que su sistema deje de responder. Mi script primero comprueba si hay suficiente RAM libre (lo que requiere un poco de trabajo, ya que la cantidad real de RAM libre es diferente de lo que se
free
informa como libre), luego solo alterna el intercambio si es así. Pero, si tiene poca RAM, no inicie otro proceso importante mientras se ejecuta el script. Aquí está:Debe ejecutar este script como root (por ejemplo, con
sudo
). Este script no dejará su sistema sin respuesta; Si tiene RAM insuficiente, se negará a alternar el intercambio. He usado este script sin problemas durante casi cinco años.fuente
En general, el intercambio no se utiliza en los sistemas actuales. En mi experiencia, los procesos que se ejecutan durante mucho tiempo sin operaciones intensivas se cambian para ser intercambiados por Linux.
Hace que algunos programas afectados se ejecuten lentamente.
Si tiene mucho ram libre, puede apagar el intercambio ejecutando el comando:
swapoff -av
(necesitarásudo
derechos para ello).Si no le gusta el intercambio, puede encenderlo, usando el comando simétrico:
swapon -av
( de nuevosudo
requerido).fuente
Una vez que se ha utilizado el intercambio para un programa, tiende a permanecer mapeado durante la vida del programa. Muchos programas tienen código (y datos) que rara vez se usan. Una vez que se intercambia la memoria, es poco probable que se intercambie.
Una forma de forzar estas páginas en la memoria es apagar el dispositivo de intercambio. Si tiene dos, puede apagar uno, volver a encenderlo y luego apagar el segundo. Si realmente se necesita el intercambio, se moverá entre dispositivos. Simplemente puede apagar el dispositivo de intercambio (o archivo), pero si realmente necesita espacio de intercambio, pueden ocurrir cosas drásticas.
Además de las cosas normales en la memoria, tempfs usa el espacio de intercambio, y se intercambiará como el resto de la memoria. Si ejecuta algo que requiere mucho disco temporal, puede forzar el intercambio de páginas. Una vez creados, los archivos temporales ya no pueden usarse después de un par de minutos y son buenos candidatos para ser trasladados al dispositivo de intercambio.
En caso de necesidad, puede usar un archivo como dispositivo de intercambio. Esto es útil si necesita espacio de intercambio adicional temporalmente.
fuente
Edité el guión de Scott Severance para que coincida con las versiones más recientes de free que ya incluyen un campo de memoria total disponible.
fuente