Agilizando la swap con zswap

En un artículo anterior veíamos cómo utilizar zram para crear un espacio de swap comprimido en memoria y así agilizar el intercambio y evitar problemas de ralentización del equipo cuando el I/O a swap fuese alto.

Vamos a ver en esta ocasión cómo conseguir el mismo objetivo con otro método diferente: zswap.

A groso modo tanto zram como zswap harán que la paginación se haga contra la memoria física aplicando compresión a los datos, pero mientras que con zram estamos creado un dispositivo de bloques de un tamaño concreto y añadiéndolo como partición swap, zswap tiene por detrás un mecanismo algo más complejo.

A diferencia de zram, con zswap no estaremos paginando siempre contra memoria física, si no que se sitúa en medio del proceso de swap y decide por una parte qué datos van a disco y cuales se comprimen y se guardan en el pool de memoria (en base a la calidad de la compresión de los datos), y por otra a dónde se han de ir a buscar los datos cuando sea necesario recuperarlos de la swap.

Esto significa que si bien la funcionalidad final debería ser la misma que con zram, al usar zswap habrá datos que acaben en disco directamente de todas formas si son rechazados para compresión.

A pesar de ser un mecanismo más complejo que zram, la forma de activarlo es sin embargo más simple: lo único que necesitaremos hacer es cambiar un parámetro del arranque y reiniciar el equipo.

Zswap no es compatible con zram. Si estás usando zram asegúrate de desactivarlo antes de activar zswap.

 

Editamos el archivo “/etc/default/grub“:

sudo gedit /etc/default/grub

En la línea donde aparece GRUB_CMDLINE_LINUX añadimos el valor zswap.enabled=1 a los que ya aparezcan ahí. Por ejemplo si el valor anterior era éste:

GRUB_CMDLINE_LINUX="rhgb quiet"

Añadiríamos ese valor quedando así:

GRUB_CMDLINE_LINUX="zswap.enabled=1 rhgb quiet"

Guardamos el archivo y regeneramos la configuración de grub. Si tenemos un BIOS normal:

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

O si por el contrario tenemos UEFI:

sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Ya podemos reiniciar el equipo, y podremos comprobar que zswap está activo:

# dmesg |grep zswap:
[ 0.695025] zswap: loaded using pool lzo/zbud

Comentar finalmente que aunque tanto zram como zswap pueden ayudar a mejorar el rendimiento en algunos casos, son también interesantes si se usan discos SSD, al reducir las escrituras y por tanto alargar un poco más la vida útil de los mismos.