Primero vamos a entender rápidamente que es la memoria Swap en Linux.
La memoria Swap es un espacio en el disco duro el cual es utilizado por el sistema de memoria virtual. Cuando el sistema operativo necesita más memoria que la disponible físicamente, los datos menos utilizados se trasladan a la memoria Swap. Esto ayuda a evitar problemas de falta de memoria y garantiza un rendimiento más fluido del sistema.
Hay ocasiones en las que estos datos inactivos no son regresados a la memoria RAM y pueden acumularse hasta saturar el Swap, lo que llevará a que el sistema se ponga lento y en estos casos es necesario realizar un borrado manual.
Es importante recalcar que debemos tener suficiente RAM libre para recibir los datos del SWAP, por ejemplo, si tenemos 400M en el Swap vamos a requerir 400M libre en la RAM
Pero basta de teoría, vamos a la práctica 😀
Para ver la memoria que tenemos utilizada podemos utilizar herramientas como top
,htop
o free -h
Una vez que estamos seguros de tener el espacio necesario vamos a limpiar la memoria Swap realizando un proceso de prendido y apagado.
Apagado del Swap:
swapoff -a
Reactivado del Swap:
swapon -a
Estado del Swap:
swapon --show
De esta forma habremos limpiado nuestro Swap.
Ahora ¿Por qué se da esto? Y como lo podemos solucionarlo.
Es importante acotar que si este problema persiste se puede deber a uno o varios factores entre los más comunes tenemos:
- Falta de memoria RAM: Cuando el servidor no tiene suficiente memoria RAM para manejar todas las aplicaciones y procesos en ejecución, el sistema operativo utilizará la memoria Swap para liberar espacio en la RAM.
- Aplicaciones que consumen mucha memoria: algunas aplicaciones pueden requerir más memoria de la que el servidor tiene disponible, lo que lleva a un uso intensivo de la memoria Swap.
- Configuraciones del sistema: El parámetro swappiness en Linux determina cuándo y cuánto del sistema operativo debe usar el Swap. Un valor alto puede hacer que el sistema operativo utilice la memoria Swap con más frecuencia, este valor puede ir de 0(nunca se realiza intercambio) a 100(el intercambio es muy frecuente, por ejemplo si nuestro servidor tiene poca carga podríamos disminuir el uso de Swap para mejorar el procesamiento, pero si tenemos un servidor con carga alta(por ejemplo bases de datos de muy agrandes) necesitaremos aumentar el uso de Swap para tener un mejor desempeño de la RAM, por defecto muchos servidores suelen tener el swapiness en 60 pero lo podremos modificar para obtener un mejor desempeño de acuerdo con nuestras necesidades.
- Procesos en segundo plano: Si tenemos tareas y servicios que se ejecutan en segundo plano estos pueden acumularse y consumir memoria, lo que lleva a un mayor uso del Swap.
Para solucionar estos problemas podemos intentar lo siguiente:
- Aumentar la memoria RAM: esto reducirá la necesidad de usar el Swap.
- Optimizar las aplicaciones: Asegurándonos que no consuman más memoria de la necesaria.
- Ajustar el parámetro swappiness: para ver como está configurado nuestro swapiness podemos utilizar el siguiente comando: cat /proc/sys/vm/swapiness(print) para realizar este cambio de forma temporal, podemos utilizar el comando sysctl -w vm.swappiness=10 y para hacerlo de forma permanente debemos editar el sysctl.conf añadiendo o editando el parámetro vm.swapiness=10 (Prints)
para monitorear que procesos son los que nos consumen el Swap podemos utilizar el comando:
for file in /proc/*/status ; do awk ‘/VmSwap|Name/{printf $2 » » $3}END{ print «»}’ $file; done
aquí nos listara los diferentes procesos que están haciendo uso del Swap. - Monitorear procesos innecesarios: utilizando las herramientas top y htop podremos monitorear el uso de la memoria y cerrar los procesos que no sean necesarios.
Espero que esta información te sea de utilidad, no olvides darnos me gusta y seguirnos en nuestro canal de Youtube para traerte más información valiosa, escríbenos en los comentarios de temas que quieras que tratemos en futuros videos.