Cómo configurar la memoria SWAP en un servidor Rocky Linux 9

Actualizada:

La verdad es que configurar correctamente la memoria SWAP en un servidor siempre ha sido importante, sobre todo porque normalmente necesitamos que nuestras páginas web tengan un 100 % de uptime: tienen que estar siempre disponibles, y tener suficiente memoria RAM y un buen SWAP en un disco SSD se hace imprescindible para evitar los pérfidos errores OOM (sin memoria), que provocan que el servidor web no muestre las páginas correctamente a tus usuarios.

¿Sigue siendo verdad que utilizar memoria SWAP es malo para el hardware, para el disco SSD al aumentar las escrituras y lecturas en el mismo? Creo que no tanto como cuando aparecieron los primeros SSD. Ahora mismo los SSD han mejorado en rendimiento, fabricación y vida útil, y al final vamos a necesitar muchos más años en notar como el disco duro se va degradando. Probablemente, el disco falle por otra razón y haya que cambiarlo.

Aun así, proveedores de hospedaje web VPS como Digital Ocean, no recomiendan su uso intensivo: Aunque el SWAP se recomienda generalmente para los sistemas que utilizan discos duros giratorios tradicionales, el uso de SWAP con discos SSD puede causar problemas con la degradación del hardware con el tiempo. Debido a esta consideración, no recomendamos habilitar SWAP en DigitalOcean o en cualquier otro proveedor que utilice almacenamiento SSD. Hacerlo puede afectar la fiabilidad del hardware subyacente para ti y tus vecinos. Si necesita mejorar el rendimiento de su servidor, te recomendamos que actualices tu Droplet. Esto conducirá a mejores resultados en general y disminuirá la probabilidad de contribuir a los problemas de hardware que pueden afectar a su servicio.

Vamos, se están cubriendo las espaldas, e intentando que la vida útil de sus discos sea la mayor posible, porque eso va a repercutir en un coste a su negocio. Estoy de acuerdo en que la memoria SWAP se use lo menos posible: para ello hay que optimizar el uso de nuestras aplicaciones en el servidor e incluso decirle a nuestro sistema Linux que no use prioritariamente esta memoria y que prefiera la RAM, pero tampoco veo que la solución sea siempre dar más dinero a nuestro proveedor de alojamiento aumentando el coste de nuestro plan. El dinero no cae de los árboles para nadie.

Por eso, probablemente cuando has lanzado por primera vez tu servidor al mundo, la partición SWAP sea inexistente o muy pequeña, por ejemplo de 512 MB. Vamos a tener que ajustarlo. Se puede hacer de dos maneras, creando o aumentando la partición SWAP (tienes que redimensionar tus pariciones y crear una específica para SWAP), o utilizando una SWAP File (más sencillo de implementar, más flexible, y no hace falta parar el servidor).

En mi caso particular, tengo una partición SWAP, que es lo que recomienda el creador de Linux, Linus Torvalds: es más eficiente y da menos problemas.

Partición SWAP vs. SWAP File

CaracterísticaPartición SWAPArchivo SWAP
Configuración InicialVentaja: Configuración directa durante la instalación del sistema operativo.
Desventaja: Requiere particionar el disco, lo cual puede ser complejo si no se hace desde el principio.
Ventaja: Fácil de configurar y ajustar, sin necesidad de particionar el disco.
Desventaja: Requiere comandos adicionales para configurar y activar.
FlexibilidadDesventaja: Difícil de modificar una vez establecida.Ventaja: Muy flexible, fácil de redimensionar o mover según las necesidades.
RendimientoVentaja: Puede ofrecer un rendimiento ligeramente mejor en algunos casos, debido a la dedicación exclusiva de la partición para el intercambio.Desventaja: Ligera penalización en el rendimiento en comparación con una partición dedicada, pero generalmente insignificante en la práctica.
Espacio en DiscoDesventaja: El espacio está reservado y no se puede utilizar para otros fines, incluso si no se usa todo el tiempo.Ventaja: El espacio del archivo SWAP puede ser reutilizado o ajustado según sea necesario.
SeguridadVentaja: Más seguro porque es menos probable que se vea afectado por cambios en el sistema de archivos del usuario.Desventaja: Puede ser menos seguro si no está adecuadamente protegido, ya que reside en el sistema de archivos regular.
FragmentaciónVentaja: No se fragmenta, porque es una partición fija.Desventaja: Puede fragmentarse, lo que podría afectar ligeramente el rendimiento.
Requisitos del SistemaDesventaja: Requiere acceso a particionado de disco, que puede no estar disponible en todos los entornos.Ventaja: No necesita acceso especial al particionado de disco, por lo que es más fácil de implementar en sistemas en producción.

Creamos una partición SWAP al crear nuestro servidor

La opción más recomendable. Cuando vas a generar tu imagen de Rocky Linux en el plan de tu nuevo servidor, aprovecha y crea la partición SWAP en el panel de control de tu proveedor de alojamiento. Es lo más sencillo. Te va a dar la opción. Mientras el sistema operativo de instalar en una partición tipo ext4, te dara la opción de generar otra partición SWAP. En mi caso, en Linode (Akamai), puedes consultar las opciones en Storage dentro de tu Linode. Yo tengo 8 GB de SWAP porque tengo una memoria RAM de 16 GB:

Partición SWAP en Linode con Rocky Linux en etx4

¿Puedes cambiar el tamaño de esta partición si aumentas de memoria RAM con el paso del tiempo? Sí, pero tienes que parar el servidor, y proceder al cambio de tamaño de ambas particiones. En mi caso, que tengo 320 GB de almacenamiento, tengo 319488 MB para Rocky Linux, y 8192 MB para el SWAP. En principio, no hay pérdida de datos, por lo menos en Linode: solo tienes que asegurarte de tener suficiente espacio libre en el disco duro (compruébalo con df -h).

Solo te tienes que preocupar de acertar con el tamaño adecuado de la partición. ¿Qué tamaño recomienda Red Hat para RHEL (Rocky Linux, Alma Linux y demás)?

RAM en tu sistemaSWAP recomendado
⩽ 2 GB2 veces la cantidad de RAM
> 2 GB – 8 GBIgual a la cantidad de RAM
> 8 GB – 64 GBAl menos 4 GB
> 64 GBAl menos 4 GB

Una regla general, por encima de 8 GB de RAM, es multiplicar tu memoria RAM por 0.5. En mi caso, 16 GB x 0.5 = 8 GB. ¿Por qué he elegido 8 GB y no 4 GB? Bueno, porque tengo suficiente espacio en el disco del servidor, y porque me parece un valor razonable si estoy usando un servidor LAMP con WordPress. Me convencieron en este artículo: https://opensource.com/article/19/2/swap-space-poll.

Después de crear la partición SWAP, iniciar o reiniciar tu servidor, prueba el comando:

swapon -s
Partición SWAP en mi Linode

Te dice el tamaño, cuanto está siendo usada, el tipo y la prioridad. Como solo tengo una partición SWAP, la prioridad da un poco igual.

¡Ojo! Si ya tienes creado el servidor, asegúrate de tener o no una Partición SWAP con el comando free -h (o con swapon –show):

Partición SWAP creada en mi liode con sus capcidad en GB

Vale, ya tenemos memoria SWAP en nuestro servidor. A lo mejor ahora nos interesa, si tenemos suficiente memoria RAM en el sistema, decirle a Rocky Linux que no use esa memoria RAM si hay memoria RAM disponibles. Eso lo podemos conseguir editando el archivo sysctl.conf:

sudo vi /etc/sysctl.conf

y añadiendo las siguientes líneas:

vm.swappiness = 10
vm.vfs_cache_pressure = 50

vm.swappiness básicamente controla cuando se mandan procesos a la memoria SWAP. Si prefieres usar memoria RAM, lo mejor es que este valor este bajo.

  • vm.swappiness = 0 # El intercambio está desactivado.
  • vm.swappiness = 1 # Cantidad mínima de intercambio sin desactivarlo por completo.
  • vm.swappiness = 10 # Este valor se recomienda para mejorar el rendimiento cuando existe suficiente memoria.
  • vm.swappiness = 60 # El valor predeterminado.
  • vm.swappiness = 100 # Se incrementa de forma agresiva.

vm.vfs_cache_pressure configura cuánta información elegirá el sistema almacenar en caché (inode y dentry). El valor por defecto suele ser 100.

  • Valor predeterminado (100): el kernel recuperará la memoria de la caché VFS a una tasa estándar en relación con la recuperación de la caché de páginas y la caché de intercambio.
  • Valores más altos (>100): aumenta la presión sobre la caché VFS, haciendo que el kernel sea más agresivo al recuperar la memoria utilizada por la caché VFS.
  • Valores más bajos (<100): reducen la presión sobre la caché VFS, lo que provoca que el kernel retenga las cachés de directorios e inodos por períodos más largos. Mejora el rendimiento al reducir el número de veces que se necesita recargar la información de los metadatos.

Ajustando estos dos parámetros, nos quedamos más tranquilos sabiendo que nuestro servidor intentara siempre usar preferentemente la memoria RAM frente a la SWAP. Es como dar un poco de cariño a nuestro disco SSD.

Después de guardar el cambio en el archivo con ESC :wq!, tienes que aplicarlo al servidor:

sudo sysctl -p

Todo esto que te he contado está muy bien si puedes cambiar el tamaño de la partición de tu servidor, pero, ¿Y si no tienes acceso a esta opción? Pues tienes que usar las SWAP File.

Yo también probé a usar esta opción en conjunción con la partición SWAP, pero al final la borre y use solo la partición por simplicidad. ¿Puedes tener una partición SWAP y una SWAP File al mismo tiempo? Sí. Pero soy partidario de mantener las cosas lo más simples posible. Si vas a tener dos particiones, asegúrate de asignar bien la prioridad de uso.

Creamos una SWAP FILE en nuestro servidor

Esta opción es más flexible porque podemos cambiar su tamaño al vuelo y activarla o desactivarla sin necesidad de reiniciar el servidor. En este caso lo he hecho en mi servidor VPS de Hetzner que tiene 8 GB de RAM. Vamos a ver cómo se hace:

Creamos una SWAP FILE en nuestro servidor
#Verificamos que SWAP tenemos. 
sudo swapon --show

#Creamos una SWAP de 4 GB y le asignamos los permisos correctos.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile

#Comprobamos el tamaño y la asignación de permisos
ls -lh /swapfile

-rw------- 1 root root 4.0G May 28 17:06 /swapfile

#Le decimos al sistema que esa zona es SWAP
sudo mkswap /swapfile

Setting up swapspace version 1, size = 4 GiB (4589930496 bytes) no label, UUID=

#Activamos la meoria SWAP en el sistema y comprobamos que esta activada
sudo swapon /swapfile
sudo swapon --show

NAME      TYPE      SIZE USED PRIO
/swapfile file           4G    3.7G   -2

#Comprobamos la amoria del sistema
free -h
                      total        used        free      shared  buff/cache   available
Mem:           7.3Gi       4.9Gi       2.5Gi        14Mi       1.3Gi       2.4Gi
Swap:          4.0Gi       3.7Gi       321Mi

#Hacemos el cambio permanente despues de reinicios editando /etc/fstab con la linea /swapfile none swap sw 0 0

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

¿Comandos útiles para controlar el uso de memoria SWAP?

grep '^Swap' /proc/meminfo
sar -S 2 3
cat /proc/swaps 

¿Has cambiado de idea y quieres quitar esta SWAP File de tu servidor? Puedes hacerlo de manera sencilla:

#apagamos la SWAP
sudo swapoff /swapfile

#Quitamos del archivo fstab la linea /swapfile none swap sw 0 0 
sudo vi /etc/fstab
/swapfile none swap sw 0 0 

#Borramos swapfile
sudo rm /swapfile

Descubre más desde algoentremanos.com

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Foto del autor

Ivan Benito

Apasionado de la lectura y los viajes, experto en tecnología e informática y fan de la privacidad online. Desde el año 2007 me he dedicado al SEO, a escribir y a crear páginas web con WordPress sobre todo tipo de temáticas. Si tienes alguna duda y necesitas ayuda... ¡Pregúntame!

Si tienes preguntas, quieres que hagamos una review de una app, programa o producto, simplemente mándanos un e-mail mediante nuestro formulario de contacto. Te contestaremos en el menor tiempo posible. ¡Muchas gracias y salU2! Algoentremanos realiza reviews de manera profesional y en muchas ocasiones recibimos compensación de las compañías cuyos productos revisamos. Probamos cada producto a fondo y otorgamos altas calificaciones solo a los mejores. La propiedad de Algoentremanos.com es independiente y las opiniones expresadas aquí son solo nuestras. Algunos enlaces del artículo son afiliados: pueden generar un beneficio a algoentremanos.com. Saber más.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.