¿Es necesario la SWAP en una distro Linux?



Una pregunta que se formula muy a menudo, sobre todo por los nuevos usuarios de GNU/Linux es: "¿Es necesario una partición swap para instalar Linux?".

Esta pregunta suele venir junto con otra: "¿Cuánto espacio el asigno a la partición SWAP entonces?".

Quizá ya sea todo un cliché esta pregunta, pero nunca está demás conocer una opinión mas. De tal manera que en este post pretendo explicar para qué se utiliza la partición swap en Linux y si es realmente necesaria en todos los casos, todo esto, con base a mi experiencia que he tenido en estos sistemas operativo.

La memoria ram es limitada. Al encender el equipo se tendrá disponible gran parte su memoria, ya que se supone que no se está ejecutado ningún programa. Sólo se estarán ejecutando los procesos necesarios para poder hacer funcionar al sistema operativo y según se vaya utilizando el equipo se comenzará a abrir aplicaciones, como el navegador, el editor de documentos, Telegram, Skype y una larga lista. La memoria se va llenando más y más y el equipo cada vez va más lento. Es lógico que no funcione tan bien como cuando no teníamos ninguna aplicación iniciada.

Y entonces, a todo esto surge una pregunta.
¿Qué pasa cuando ya no queda más memoria RAM?

Al ir abriendo más aplicaciones hasta el punto de llenar toda la memoria, llegará un instante en el que no se podrá ejecutar ninguna más. Será entonces cuando Linux comience a matar procesos y obviamente, no queremos eso.

Los procesos que matará Linux serán aquellos que no comprometan la estabilidad del sistema. Tienen prioridad aquellos que hacen funcionar el sistema operativo antes que Skype o el navegador. En este momento cedemos el control al sistema operativo para que gestione las tareas como él crea conveniente y por lo menos el equipo siga funcionando.

Memoria RAM + swap

La memoria RAM y la swap permiten simular una RAM de mayor tamaño que la físicamente instalada. Esto tiene como ventaja que proporciona un espacio de memoria adicional que es a veces necesaria para continuar ejecutando procesos. Ya se sabe entonces que Linux matará procesos cuando la memoria física instalada se acabe y no haya espacio para más.

Memoria swap

La memoria swap o de intercambio utiliza espacio en el disco duro en lugar de en el módulo de memoria RAM. La escritura en disco (al menos en los mecánicos) es lenta y el uso de esta memoria puede causar un descenso de rendimiento en el sistema. Por otra parte, es preferible que el equipo vaya algo más lento a que empiece a cerrar programas.

Ahora, debo aclarar algo:

Que haya asignado un espacio en disco para la memoria swap no quiere decir que tenga que utilizarse obligadamente.
Obviamente, la memoria RAM es mucho más rápida, pero el uso de la swap es algo que puede salvarnos la vida en un determinado instante.

¿Y entonces es necesario la memoria swap?

Si tienes una máquina con 1GB de RAM desde mi punto de vísta, sí necesitas swap, aunque según el uso que le vayas a dar. Como ya he mencionado anteriormente, si se abren muchas aplicaciones el uso de la RAM crecerá y llegará un momento en el que la memoria se llene.

En mi laptop personal tengo 16GB de RAM, por lo que no necesito memoria swap de manera obligatoria o necesaria. Sin embargo tengo asignada 8GB. Ya que he llegado a ejecutar hasta 5 máquinas virtuales, entornos de desarrollo abiertos, Telegram, navegadores,  varias cosas más, y  he llegado a usar hasta 12GB de RAM como mínimo. Por lo tanto, la probabilidad que se agote es mucha, y no quiero por alguna razón esto pase y el SO mate algún proceso  que estoy utilizando, o peor aún, que reinicie el entorno de escritorio.

¿Cuánto espacio le asigno a la partición swap?

En caso de que sea necesaria, esto es lo que se recomienda para la swap:

- 1 GB de RAM o menos: la misma cantidad para la swap.
- Entre 2 GB y 4 GB de RAM: la mitad para la swap.
 Más de 4 GB de RAM: 2 GB de swap.

¿Cómo sé si se está usando la SWAP?

En la mayoría de las distros se puede instalar la utilidad htop, top o atop, para ver la cantidad de recursos que está usando cada proceso.

Tengo una PC en el trabajo, con Fedora 25 y Gnome 3.22 con 8GB en RAM, y estaba realizando unas pruebas en red con máquinas virtuales, 2 en Virtualbox con windows y 1 con Centos en VMware, además, el navegador Yandex , Chrome, el editor de texto, y otras utilidades, el resultado de htop fue el siguiente:


Prácticamente la memoria SWAP ha entrado en uso, en este caso, sí es necesario contar con ella. Esto demuestra entonces, que dependerá mucho de los programas y el uso que se le dé al equipo.

Adicional: utilizar zswap

Zswap es un módulo que se integró a partir del Kernel 3.11 a Linux y básicamente lo que hace es funcionar como compresor de paginado para mejorar el uso de RAM y Swap en un sistema.

La ventaja de Zswap con respecto a Zram radica en el hecho de que ya viene integrado en cualquier kernel Linux de cualquier distro a partir de la versión 3.11 (sólamente tenemos que habilitarlo en caso de que no lo esté) mientras que zRAM se tiene que instalar aparte y en algunas distros como fedora esto es un tedio. Por otro lado, Zswap está pensado para beneficiar a todo tipo de equipos, desde el más antiguo con el mínimo de RAM disponible hasta el más nuevo y moderno al ser sólo un compresor que en términos simples hace que "más aplicaciones quepan en la memoria RAM" (o ante los ojos del usuario así se nota aunque de fondo sea más compleja su función) mientras que zRAM ocupa equipos con al menos 1GB de RAM para "hacer impacto" pues realmente sólo es una swap que corre dentro de la RAM.


Al tener Zswap activado no sólo hay una mejor gestión de RAM en el sistema sino que también los procesos enviados a swap son muchísimo más rápidos al intercambiar I/O con la RAM, traduciéndose esto en una computadora que:

a) Va a ser difícil que se vuelva lenta.

b) En caso de que se vuelva lenta va a regresar pronto a operación rescatable en lugar de congelarse por completo.

En algunas distros ya viene activado por default zswap, en otros casos es necesario hacerlo.

Para saber si ya está activado, ejecutar el siguiente comando:

dmesg | grep zswap

Si muestra una salida parecida a esta, quiere decir, que ya está activada:

En caso de que no, entonces abrir el archivo sudo gedit /etc/default/grub y buscar la línea que comienza por GRUB_CMDLINE_LINUX y agregar al final antes de las comillas zswap.enabled=1

De tal manera que el archivo quedará se la siguiente manera:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet
zswap.enabled=1"
GRUB_DISABLE_RECOVERY="true"

Ahora, actualizar el grub o reiniciar el equipo:

Ubuntu:
sudo update-grub
Fedora:
grub2-mkconfig -o /boot/grub2/grub.cfg
Arch:
sudo update-grub

Si se ejecuta el comando de comprobación de zswap de nuevo, ahora ya deberá mostrar como activado.

Conclusión:
La partición SWAP, aparentemente no es necesaria si no se va a utilizar el equipo para actividades que requieran uso de la memoria RAM de manera exigente. Aunque, nunca está de más prevenir y dejarle por lo menos 2GB de SWAP, sólo por si acaso.

Este tema es bastante controvertido en la comunidad Linux, así que los animo a dejar sus comentarios sobre si la swap es necesaria o no.

Comentarios:

@