Usa Zswap para Mejorar el Rendimiento en PC Linux con Baja Cantidad de RAM

Seamos realistas, algunos de nosotros no actualizamos tan a menudo. O, al menos, como usuarios de Linux, nos gusta reutilizar nuestras laptops/computadoras más antiguas. Muchas distribuciones funcionan cómodamente en sistemas con poca cantidad de RAM (Memoria de Acceso Aleatorio). Sin embargo, los navegadores no son tan indulgentes, requiriendo más y más memoria a medida que Internet evoluciona.

Mientras que un sistema con el entorno de escritorio LXDE puede consumir tan solo 150MB de RAM después de iniciar, Chromium, Chrome o Firefox rápidamente consumirán cientos de megabytes e incluso múltiples gigabytes de RAM a medida que abrimos algunas pestañas.

¡Y ahí es cuando sucede! El disco duro comienza a hacer ese sonido de crujido. La música empieza a entrecortarse. Cuando cambiamos a otra aplicación, pasan decenas de segundos antes de que aparezca en la pantalla. Incluso el cursor del ratón puede comenzar a retrasarse. Este es el efecto del “disk thrashing”.

¿Qué Es el Disk Thrashing?

Primero, necesitamos entender el swap. Cuando nos quedamos sin RAM libre, los datos de la aplicación que el sistema operativo no ha accedido en mucho tiempo se mueven al área de swap. Esto suele estar en un dispositivo de almacenamiento físico. Al hacerlo, el sistema operativo puede liberar algo de espacio de memoria que un programa necesita ahora. De esta manera, una pestaña en nuestro navegador que no hemos accedido en la última hora puede ser intercambiada al disco duro. Ahora el editor de imágenes GIMP puede ejecutarse. Cuando lo cerramos y regresamos a esa pestaña antigua, el sistema operativo la intercambia de nuevo a la memoria (la lee del disco y la copia de vuelta a la memoria de acceso aleatorio).

zswap-hard-disk

Este mecanismo funciona bien cuando se intercambian cantidades pequeñas de datos. Pero, cuando, digamos, solo hay 2GB de RAM disponibles y todos los programas que tenemos abiertos necesitan 4GB, el sistema operativo tiene que intercambiar constantemente. Mover datos de la memoria al disco, del disco a la memoria, y de nuevo, constantemente, es muy lento, especialmente con discos duros. En tal situación, el dispositivo de almacenamiento no puede satisfacer las solicitudes lo suficientemente rápido. En resumen, cuando ocurre el disk thrashing, las cosas se vuelven muy lentas.

Los Discos SSD Son Geniales para el Swap

Hay un mito que todavía circula en Internet: “Nunca configures swap en SSD. ¡Esto matará tu dispositivo!” Eso fue cierto hace unos años, pero ya no. De hecho, configurar el swap en un disco SSD produce grandes resultados. Si la computadora incluye un dispositivo SSD que tiene buen rendimiento de lectura/escritura aleatoria (al menos 300MB), configura una partición de swap en él e ignora el resto de este artículo. Cuando el sistema operativo tiene que intercambiar 1GB de datos, tomará menos de cinco segundos, mientras que en un disco duro tomaría más de un minuto.

Cómo Reducir Significativamente el Disk Thrashing en Linux

zswap-meme-compress-ram

Afortunadamente, la mayoría de los datos almacenados en RAM son muy comprimibles. Esto significa que si tomamos 200MB de datos almacenados en memoria y los comprimimos, podemos reducir el tamaño a 100MB. En consecuencia, significa que el sistema tendrá que escribir muchos menos datos al disco al intercambiar.

Imagina que en lugar de esperar treinta segundos para cambiar a un programa, tienes que esperar quince. Es una mejora palpable. Pero, de hecho, la aceleración es mucho más significativa (puede que tengas que esperar menos de diez segundos) porque la herramienta que usaremos es más sofisticada que eso. Envía inteligentemente al disco solo los fragmentos que no se pueden comprimir, manteniendo el resto en una porción reservada de memoria. Si quieres leer más sobre sus internals, consulta la página oficial del kernel de Linux sobre zswap.

Una versión simple de los beneficios que obtenemos al usar zswap es que en lugar de horribles lentitudes cuando nos quedamos sin memoria, experimentamos ralentizaciones tolerables y leves que duran segundos en lugar de decenas de segundos o incluso minutos.

Cómo Habilitar zswap En Distribuciones Basadas en Debian (Ubuntu, Linux Mint, etc.)

Abre una aplicación de terminal y ejecuta este comando para editar el archivo de configuración del cargador de arranque Grub:

sudoedit /etc/default/grub

zswap-edit-grub-template-config

Con las teclas de flecha, navega a la línea que comienza con “GRUB_CMDLINE_LINUX_DEFAULT”. Dentro de las comillas, agrega el siguiente texto:

zswap.enabled=1

zswap-editing-grub-template-config-2

Por ejemplo, una línea que era GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" se convierte en GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1".

Para guardar el archivo, presiona Ctrl + X, seguido de “y”, y luego Enter.

Genera los nuevos archivos de configuración de Grub según la plantilla que editamos previamente:

sudo update-grub

zswap-update-grub-finished

Reinicia y el módulo zswap se habilitará automáticamente.

Cómo Habilitar zswap en Fedora y OpenSUSE

El procedimiento aquí es similar al de la sección anterior, pero con algunos giros. Edita el archivo de configuración del template de Grub.

sudoedit /etc/default/grub

Agrega zswap.enabled=1 dentro de las comillas, en la línea que comienza con GRUB_CMDLINE_LINUX.

zswap-editing-grub-template-fedora

Presiona Ctrl + X, seguido de “y”, y luego Enter para guardar el archivo.

Dependiendo de si tu computadora arranca desde un sistema BIOS o UEFI, el archivo de configuración de Grub se genera en una ruta diferente. Para encontrar dónde reside actualmente, ingresa el siguiente comando:

sudo find /boot/ -name grub.cfg

zswap-find-grub-cfg-on-fedora

Usa la ruta que se muestra aquí en el siguiente comando. Por ejemplo, en nuestro caso, la ruta encontrada fue “/boot/grub2/grub.cfg,” así que la agregaremos al final del siguiente comando después de “-o”:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Reinicia la computadora. Después de reiniciar, verifica si el módulo está activo:

cat /sys/module/zswap/parameters/enabled

Si la salida es “Y,” significa que el módulo está funcionando correctamente.

Cómo Habilitar zswap en Arch Linux

Instala el paquete systemd-swap:

sudo pacman -Sy systemd-swap

zswap-pacman-install-systemd-swap

Haz que este paquete haga su magia al iniciar:

sudo systemctl enable systemd-swap

Inícialo ahora, sin reiniciar:

sudo systemctl start systemd-swap

Para verificar si todo funcionó como se esperaba, verifica si el módulo zswap está habilitado:

cat /sys/module/zswap/parameters/enabled

zswap-enable-systemd-swap-service

Si la salida es “Y,” significa que el módulo está activo.

Cómo Habilitar zswap en Diferentes Distribuciones

En términos generales, habilitar zswap al iniciar es tan fácil como agregar zswap.enabled=1 a tus parámetros del kernel. La mayoría de las distribuciones usan Grub2 como cargador de arranque por defecto. Si estás usando un cargador de arranque diferente, busca el archivo de configuración donde almacena los parámetros del kernel para pasar al iniciar y agrega zswap.enabled=1 como un parámetro adicional.

Otro parámetro que puedes probar para ver si mejora el rendimiento para tu caso de uso específico es zswap.max_pool_percent=20. Puedes ajustarlo cambiando el número al final: por ejemplo, zswap.max_pool_percent=50.

Agrégalo a los mismos parámetros del kernel donde agregas zswap.enabled=1. Se recomienda no exceder el 50% ya que más de eso puede tener efectos perjudiciales en sistemas con baja cantidad de RAM.

Conclusión

Si a menudo te quedabas sin RAM en tu antiguo sistema y experimentabas los molestos efectos del disk thrashing, notarás y apreciarás inmediatamente la diferencia de ahora en adelante. En lugar de horribles lentitudes, experimentarás un leve y temporal retraso que dura unos segundos (en lugar de minutos) cuando el sistema operativo tiene que intercambiar muchos datos al disco. Podrás continuar trabajando en situaciones donde antes no podías usar tu computadora en absoluto durante el tiempo que se intercambiaba.