Porque la mayoría cree que el intercambio = malo y que si no reduce el intercambio, el sistema cambiará cuando realmente no sea necesario. Ninguno de los dos es realmente cierto. Las personas asocian el intercambio con los momentos en que su sistema se atasca; sin embargo, es principalmente un intercambio porque el sistema se atasca, no al revés. Cuando el sistema cambia, ya habrá incluido el costo de rendimiento en su decisión de cambiar, y decidió que no hacerlo tendría una penalización general mayor en el rendimiento o la estabilidad del sistema.
En general, la configuración predeterminada da como resultado un buen rendimiento general y estabilidad. Recomiendo dejarlo en el valor predeterminado. Existen otras vías para que Linux mejore su administración de memoria para resolver algunos casos extremos, pero en general el control de intercambio no es una buena solución: ajústelo en una dirección y puede solucionar un problema y crear otros problemas. Si es posible, simplemente instalando más RAM física (y dejando solo el intercambio) eclipsa todos los demás remedios.
Cómo Linux usa RAM
Cualquier RAM que no esté siendo utilizada por las aplicaciones puede usarse como "caché". La memoria caché es importante para un sistema rápido y sin problemas, ya que acelera las lecturas y escrituras en el disco.
Si sus aplicaciones aumentan el uso de su memoria hasta el punto de que están usando casi toda su RAM, su caché se reducirá y, como resultado, las operaciones de disco en promedio se ralentizarán. No es suficiente tener solo decenas de megabytes, o menos, para caché hoy en día.
Si las aplicaciones aumentan aún más su uso de memoria, suponiendo que no tenga espacio de intercambio, no solo no tendrá espacio para la memoria caché, sino que eventualmente se quedará sin memoria y su sistema tendrá que eliminar los procesos en ejecución. Los procesos de eliminación son peores que la desaceleración, ya que le proporciona un sistema inestable e impredecible.
Cómo Linux usa el intercambio
Para combatir estos dos problemas, su sistema puede reasignar alguna memoria de aplicación poco utilizada al espacio de intercambio en su disco, liberando RAM. La RAM adicional puede evitar que los procesos se mueran debido a la falta de memoria, y puede recuperar un poco de caché para que las operaciones del disco puedan funcionar sin problemas.
Sin embargo, esta reasignación no se realiza de acuerdo con un límite definido. No alcanza un cierto porcentaje de asignación después de lo cual Linux comienza a intercambiarse. Tiene un algoritmo "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". A menudo se representa falsamente como un "porcentaje de RAM", pero no lo es, es solo un valor que se usa como parte de la fórmula. Los valores de alrededor de 40 a 60 son los valores razonables recomendados, siendo 60 el valor predeterminado en la actualidad.
Permitir que su sistema cambie cuando sea necesario es, en general, algo muy bueno, incluso si tiene mucha RAM. Permitir que su sistema se intercambie si es necesario le da la tranquilidad de que si alguna vez se encuentra con una situación de poca memoria, incluso temporalmente (mientras ejecuta un proceso corto que usa mucha memoria), su sistema tiene una segunda oportunidad para mantener todo funcionando. Si llega a deshabilitar el intercambio por completo, entonces corre el riesgo de que se bloqueen los procesos debido a que no puede asignar memoria.
¿Qué sucede cuando el sistema está empantanado e intercambiando mucho?
El intercambio es una operación lenta y costosa, por lo que el sistema lo evita a menos que calcule que la compensación en el rendimiento de la memoria caché lo compensará en general, o si es necesario para evitar procesos de eliminación.
Muchas veces las personas miran su sistema que está agotando el disco y usando mucho espacio de intercambio y culpa del intercambio. Ese es el enfoque equivocado a tomar. Si el intercambio llega a este extremo, significa que el intercambio es el intento de su sistema de lidiar con problemas de poca memoria, no la causa del problema, y que sin cambiar su proceso de ejecución simplemente morirá al azar.
¿Qué pasa con los sistemas de escritorio? ¿No requieren un enfoque diferente?
Los usuarios de un sistema de escritorio realmente esperan que el sistema "se sienta receptivo" en respuesta a acciones iniciadas por el usuario, como abrir una aplicación, que es el tipo de acción que a veces puede desencadenar un intercambio debido al aumento de memoria requerido.
Una forma en que algunas personas intentan modificar esto es reducir el parámetro de intercambio que puede aumentar la tolerancia del sistema a las aplicaciones que usan memoria y se quedan sin espacio en la memoria caché.
Sin embargo, esto es solo cambios en los postes. La primera aplicación ahora puede cargarse sin una operación de intercambio, pero dejará menos tiempo para la próxima aplicación que se cargue. El mismo intercambio puede ocurrir más tarde, la próxima vez que abra una aplicación. Mientras tanto, el rendimiento del sistema es más bajo en general debido al tamaño de caché reducido. Por lo tanto, cualquier beneficio de la configuración de intercambio reducido puede ser difícil de medir, reduciendo el retraso de intercambio en algunos momentos pero causando otro rendimiento lento en otros momentos. Reducir un poco la capacidad de intercambio puede estar justificado si sabe lo que está haciendo, pero reducirlo al 10% puede dejar al sistema tolerante a tamaños de caché muy bajos y es más probable que el sistema tenga que cambiar a corto plazo.
Se debe evitar deshabilitar el intercambio por completo, ya que pierde la protección adicional contra condiciones de falta de memoria que pueden causar que los procesos se bloqueen o se maten.
El remedio más efectivo, con mucho, es instalar más RAM si puede permitírselo.
¿Se puede desactivar el intercambio en un sistema que tiene mucha RAM de todos modos?
Si tiene mucha más RAM de la que probablemente necesite para las aplicaciones, rara vez necesitará un intercambio. Deshabilitar el intercambio probablemente no hará la diferencia la mayoría de las veces. Pero si tiene mucha RAM, dejar el intercambio habilitado tampoco tendrá ninguna penalización porque el sistema no se intercambia cuando no es necesario.
Las únicas situaciones en las que marcaría una diferencia serían en la situación poco probable en la que el sistema se queda sin memoria y, en consecuencia, el sistema de caché se ve obstaculizado, y es en este tipo de situación donde más desea intercambiar. Por lo tanto, puede dejar el intercambio de forma segura en su configuración normal para mayor tranquilidad sin que tenga un efecto negativo cuando tenga mucha memoria.
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 como resultado de mantener un tamaño de caché razonable será mayor que esto.
Una vez que los datos se intercambian, ¿cuándo vuelven a salir?
Cualquier parte de la memoria volverá a salir de intercambio tan pronto como se use, leída o escrita. Sin embargo, por lo general, la memoria que se intercambia es memoria a la que no se ha accedido durante mucho tiempo y que no se espera que sea necesaria pronto.
La transferencia de datos fuera del intercambio lleva casi tanto tiempo como ponerla allí. Su núcleo no eliminará datos si no es necesario. Mientras los datos se intercambian y no se usan, deja más memoria para otras cosas que se usan y más caché del sistema.
¿Hay casos en los que sea apropiado reducir el intercambio?
Si. Si está ejecutando un servidor dedicado a una aplicación de servidor en particular que no se beneficia de la memoria caché del sistema. Algunos servidores de bases de datos como el servidor Oracle, MySQL / MariaDB recomiendan en algunos casos reducir la capacidad de intercambio de 1 a 10, ya que estos motores de bases de datos utilizan su propio almacenamiento en caché.
Tenga en cuenta que esto es cierto solo si su sistema está dedicado a esa tarea, y en el caso de MySQL / MariaDB solo si está usando puramente InnoDB o XtraDB, y no MyISAM o Aria, etc.