Hola Fronters… Espero que estén genial. En este post te explicaré como gestionar eficientemente la memoria SWAP de tu servidor. Generalmente nuestros servidores Linux siempre van a estar a tope de memoria ram y requerimos tener disponibilidad de recursos extras para evitar tener algún tipo de problemas de tipo Out Of Memory, lo que podría convertirse en un verdadero quebradero de cabeza, porque perderíamos información, estabilidad y disponibilidad de nuestros servicios.

Linux, al igual que otros sistemas operativos tienen algo denominado, memoria SWAP o de intercambio, que no es más que un espacio reservado en disco, que nos permite utilizarla en casos en los cuales nuestra memoria ram pueda ser, o bien insuficiente, o también requiramos ejecución de tareas en segundo plano y sea necesario recurrir a este recurso para amortiguar el impacto de la(s) tarea(s) que estamos ejecutando.

Para ello, al instalar nuestro servidor, nos solicita la creación de nuestra memoria swap o área de intercambio, y ya está; pero que pasa si al momento de crear nuestro servidor, hemos reservado una porción insuficiente de espacio, la cual no cumple con los requerimientos mínimos de exigencias para funcionar adecuadamente al llevar a cabo nuestras tareas cotidianas, ¿Deberíamos crear de nuevo el servidor desde cero?, Pues la respuesta es indudablemente No.

Aquí te enseño como hacerlo de una forma rápida y sencilla:

Primeros pasos

Lo primero es irnos a nuestra terminal (como root, claro está), y ejecutar:

Aquí estaremos creando un archivo / fichero swap de unos 5G en la raíz de nuestro sistema, el cual llamaremos swapadit. Lo podemos llamar, como queramos, eso si: un nombre distintivo, que nos permita identificar rápidamente de lo que va.

Ahora, determinaremos el espacio swap a utilizar, así; y recordando que esta cuenta está adaptada para 5G:

Si deseas adaptarlo a tu fichero swap, sólo debes realizar este sencillo cálculo, el cual les colocaré en formato pseudocódigo, pero perfectamente transportable a Python, JavaScript o Bash:

Ahora, asignamos los permisos apropiados para nuestro archivo swap, que serán lectura y escritura para el propietario únicamente:

Una vez teniendo todo creado, utilizaremos la orden mkswap para decirle a nuestro sistema que haga de este fichero un área de intercambio:

Y por último la activamos con el comando swapon:

Comprobamos si la swap se creó efectivamente:

Si requerimos desactivarla en algún momento, porque no la necesitamos o si necesitamos vaciarla por alguna razón:

Declarar nuestra SWAP en el fichero /etc/fstab

Si deseamos que estos cambios sean permanentes y no haya necesidad de rehacer todos los pasos una vez hayamos reiniciado nuestro servidor, solo debemos declarar la existencia de nuestra SWAP en el archivo / fichero /etc/fstab:

Y al (re) iniciar nuestro servidor, permanecerán nuestros cambios activos y funcionando.

Configuración de la Swappiness

Swappiness es un valor que es necesario ajustar, con la finalidad de determinar en que casos deseamos que nuestra memoria de intercambio se active en nuestro sistema. Esto quiere decir que, aunque nuestra swap siempre estará activa en el sistema, el valor de la swappiness indicará la prioridad que el sistema dará a la utilización de la misma, por medio del parámetro swapiness y su valor. El fichero que almacena su configuración es el /etc/sysctl.

Básicamente hay dos formas de hacerlo: Al vuelo, o haciendo permanentes dichos cambios.

Lo primero que debemos realizar es verificar la configuración actual:

Esto nos mostrará un valor similar a este:

Mientras más alto sea el valor, más intercambio entre la RAM y el disco duro, pudiendo ocasionar alta latencia. A su vez, baja Swappiness puede dar mayor velocidad y performance, pero pudiendo en ocasiones sacrificar la estabilidad del sistema.

Cambiando la Swappiness: temporal y permanentemente

Para hacer un cambio de la swappiness temporalmente, ejecutamos el siguiente comando:

Y ya estaría, con la salvedad de que al momento de reiniciar nuestro servidor, estos cambios se perderían. Si queremos que sean permanentes, lo que debemos hacer es editar nuestro fichero (como root) /etc/systctl y buscar la línea que dice «vm.swappiness = » y reemplazar el valor existente, por el valor que deseamos que tenga:

Luego de hacer estos cambios, guardamos, salimos del editor y ejecutamos el siguiente comando:

Y ya hemos realizado los ajustes de SWAP de nuestro servidor de forma eficiente.

Consideraciones adicionales y palabras finales

En la antigüedad (+10 años atrás), se requería que por cada tanto de memoria física (RAM), que tuviese el servidor, la cantidad de swap que le correspondía, debía ser el doble. Esto ha sido derogado, ya no hay esta necesidad, puesto que cada vez más, tanto la tasa de transferencia de las ram actuales como la de los discos duros SSD, e incluso los HDD más recientes, requieren entre casos de uso, menos recurrencia a la swap y/o menos latencia en el sistema, en caso de requerirla. Evalúen sus ajustes en caso de requerirla, de lo contrario, con ajustar la swappiness en 15 es más que suficiente, sobre todo si utilizan dispositivos SSD.

Espero que les haya gustado este nuevo tutorial y nos vemos pronto fronters!!!

Referencias

Webforward.co.uk: Extend the life of your SSD’s by adjusting swappiness in Linux

IBM.com: Linux Systems

Linuxhint: How To Change the Swappiness of Your Linux System

TecAdmin.net: How To Add Swap Space on Debian 11

📊 Infografía: Comandos de gestión de SWAP

📥 Puedes descargar la infografía aquí

Infografía gestión SWAP