Es posible que haya experimentado retrasos en el sistema, uso intensivo de intercambio o problemas de poca memoria en su sistema Linux. Un consejo habitual es «disminuir el valor de intercambio», reducir el uso de intercambio. pero ¿qué es el swappiness? ¿Y es realmente bueno modificarlo?
Nota: no entraremos en detalles sobre la partición de intercambio. Puede leer todo sobre esto en nuestro artículo sobre lo que necesita saber sobre la partición de intercambio en Linux.
intercambio
Hay un valor llamado capacidad de intercambio en sistemas similares a UNIX que determina cómo se manejarán las páginas en la memoria. Su valor predeterminado en la mayoría de los sistemas es «60», pero se puede configurar entre 0 y 100. Si la memoria se agota, el kernel expulsará algunas cachés de archivos para tener más RAM libre para los procesos, o intercambiará algunos procesos. páginas de la memoria RAM al disco.
Un valor predeterminado de 60 significa que el intercambio se usará menos y es más probable que las cachés de E/S se liberen para reasignar RAM. El desalojo de cachés se considera «más barato» (menos intensivo en recursos), mientras que el intercambio de páginas incluye lecturas y escrituras de disco, lo que las hace más «costosas». Con un valor de ’60’, el uso de intercambio será ligeramente menor que la reutilización de caché. Si el valor de swappiness aumenta a 100, el intercambio y el desalojo de caché de archivos se utilizarán con el mismo peso. Esto significa más intercambio y E/S más rápidas que las predeterminadas. Los valores más bajos como «10» significan que el intercambio se usará mucho menos, y las cachés de E/S se pueden desalojar mucho antes a favor de los procesos. Esto podría aumentar la interactividad, pero también podría perjudicar la velocidad de E/S.
Intercambio decreciente
A menudo verá consejos en sitios web y foros para reducir el intercambio a alrededor de «10». Se supone que esto acelerará las cosas al usar menos intercambio y mantener más procesos en la memoria RAM física. Esta lógica puede ser demasiado sencilla y puede que no sea una «solución única para todos».
Disminuir el valor de swappiness podría ser bueno en los siguientes escenarios:
- Para sistemas de bases de datos, o si usa muchas aplicaciones intensivas de bases de datos: Las bases de datos generalmente manejan el almacenamiento en caché de archivos mucho mejor que el sistema operativo. Si reduce el intercambio, limitará el almacenamiento en caché de archivos del sistema operativo, lo que le dará la oportunidad a la base de datos de manejar sus propios cachés.
- para la interactividad: Si realiza muchas tareas a la vez pero maneja pocos archivos o no abre documentos grandes, esto podría mejorar la fluidez de su sistema. Se escribirán menos procesos en el disco, y como el acceso a la RAM es mucho más rápido, su computadora puede sentirse más rápida. También debe tener en cuenta que esto puede reducir el rendimiento de E/S. Si tiene discos lentos o hace algo intensivo de E/S, incluso podría afectar el rendimiento.
- para placebo: Muchos creen que un swappiness más bajo acelerará el sistema. En serio, si cree que su sistema es más rápido, podría tener el efecto de percibir que también es más rápido.
Tenga en cuenta que la disminución de la capacidad de intercambio puede provocar fallas y procesos que el sistema elimine aleatoriamente para liberar memoria. La disminución de la capacidad de intercambio será mejor si tiene suficiente RAM disponible para ejecutar su sistema sin problemas. Pero debe mantener el valor por encima de «10», ya que es bueno tener algún uso de intercambio.
Aumento de la permuta
El aumento de la capacidad de intercambio puede tener la ventaja general de acelerar la E/S. Aunque no se recomienda con frecuencia, aumentar la capacidad de intercambio puede ser útil si:
- Realiza algunas operaciones intensivas de E/S y tiene discos duros viejos y lentos. Por ejemplo: realizar copias de seguridad o editar imágenes por lotes puede ser intensivo en E/S (una excepción notable son las bases de datos que naturalmente son intensivas en E/S pero que podrían beneficiarse de un valor de intercambio más bajo como se ve arriba).
- Tiene poca memoria pero tiene discos relativamente rápidos. En este escenario poco probable, un valor más alto de swappiness podría ayudar a manejar la memoria de manera más eficiente (aunque configurarlo demasiado alto podría dañar el rendimiento nuevamente).
Cómo gestionar el swappiness
Primero, debe considerar si necesita tocar este valor. ¿Tiene problemas de rendimiento? Y lo que es más importante, ¿ya ha probado otros ajustes del sistema? Si no es así, probablemente sea mejor buscar en otro lado primero. Pero si tiene un escenario específico en mente, es posible que desee continuar.
A continuación, ¿qué tan pesado es su uso de intercambio? Puede averiguarlo con cualquier herramienta de control de rendimiento de su elección o con el free
dominio. free -m
le dará una instantánea del uso de la memoria en megabytes. Para el monitoreo continuo, es posible que desee utilizar watch.
Esto ejecutará el free -m
ordene cada segundo e imprima su salida hasta que presione «Ctrl + C».
Como puede ver arriba, el sistema en el que se escribe este artículo utiliza muy poco intercambio.
Ahora, si experimenta el intercambio, es posible que le interese cuánto está activo. El comando vmstat
le dirá todo lo que necesita saber sobre el uso de la memoria virtual de su sistema (intercambio y ram físico juntos).
Tienes que comprobar el swap
columna donde si
significa «intercambiar», y so
significa «intercambiar». Si los números son altos, significa mucha actividad de intercambio, lo que es un indicador de problemas de poca memoria. Si ve el uso de intercambio por free
pero es posible que se deba poco intercambio activo, ajuste de swappiness.
También es una buena idea establecer otros puntos de referencia de rendimiento como E/S de disco, promedios de carga, etc., de modo que cuando pruebe sus nuevos valores de intercambio, tenga algo con lo que comparar.
Para probar un valor de swappiness diferente, puede establecerlo temporalmente con el sysctl
dominio. Esto no necesita reiniciarse, y el efecto es inmediato. De hecho, reiniciar restaurará el valor predeterminado, por lo que es bastante seguro experimentar:
sudo sysctl vm.swappiness=10
Por supuesto, puedes poner cualquier valor en lugar de “10” (entre “0” y “100”).
Una vez que haya encontrado su valor preferido, puede cambiar permanentemente la configuración del sistema editando “/etc/sysctl.conf”
sudo nano /etc/sysctl.conf
y sumando las lineas
#Set swappiness value vm.swappiness=10
hasta el final de este archivo, con el valor establecido a su preferencia una vez más, por supuesto.
Conclusión
Reducir el intercambio a «10» a menudo se recomienda como una solución única para todos, pero el uso real de la técnica puede ser un poco más complicado que eso. Al establecer puntos de referencia, conocer su sistema, cómo lo usa y qué necesita de él, puede ajustar su uso de intercambio y lograr un aumento en el rendimiento (ya sea interactividad o E/S).