Incrementando la RAM con ZRAM en GNU/Linux
By: Date: mayo 3, 2020 Categories: Consultoria y Manuales

Incrementando la RAM con ZRAM en GNU/Linux

Uno de los módulos mas poderoso en GNU/Linux es zram especialmente en dispositivos con recursos humildes como maquinas antiguas tipo PC , o Raspberry PI y por qué no VPS económicos de 1GB de RAM

¿ Que es ZRAM ?

ZRAM crea un dispositivo de bloques comprimido en RAM, este dispositivo de bloques como tal puede ser formateado con cualquier FS para simular un disco de estado sólido, aunque los sistemas de archivos que podrán sacarle provecho serán los que acepten compresión nativa como ZFS o BTRFS, sin embargo, su verdadero potencial no esta en crear sistemas de archivos en la RAM sino crear SWAP, SWAP en RAM

¿ SWAP en RAM ?

El SWAP se usa para intercambiar programas que están siendo usados poco al disco duro para dejar espacio en la RAM para aplicaciones que se requieren ejecutar justo en ese momento, el SWAP se usa cuando la aplicación actual no entra completamente en RAM debido a que hay muy poca y esta se encuentra copada por otras aplicaciones que no requieren ejecución inmediata, el kernel envía su código a disco duro y cuando las requiera de nuevo las recuperara del disco duro para traerlas a RAM, escrito esto parece no tener sentido usar SWAP en la RAM porque entonces estaría intercambiando RAM a RAM y no se liberaría absolutamente nada ¿ o si ?

La magia esta en que esta zona de memoria que será usada para el dispositivo de bloques esta comprimida con LZ4 por default. Normalmente se consigue 512 MB por cada 1GB.

Si tenemos un equipo con GNU/Linux con 2GB de RAM y se toma 1 GB de RAM para ZRAM virtualmente estaríamos consiguiendo 512MB lo que nos daría un total variable, pero aproximado a 2.5GB de RAM.

A cambio de un poco de uso de procesador extra obtenemos memoria adicional “ Gratis “ , no hay lonche gratis, lo pagamos con CPU pero en este mundo del 2020 donde los CPU traen N cantidad de núcleos, que uno de ellos se dedique a comprimir la memoria es casi gratis y prácticamente sin afectar el rendimiento del equipo. Hay que recordar que el SWAP lo esta haciendo a velocidad de RAM no a la velocidad de disco duro como es lo normal.

Laboratorio de prueba

CentOS 8 con 1GB de RAM usando GNOME y Firefox

Sin ZRAM

No puede abrir el Firefox, el equipo prácticamente agoto su RAM y no tiene margen de maniobra

Con ZRAM

Usando 512MB para SWAP en RAM con ZRAM se pensaría que ahora está más limitado y sin embargo al comprimir 512 MB en RAM se obtienen un aproximado de 256 MB de RAM adicionales, por lo que virtualmente ahora el equipo tiene 1.2GB, suficientes para abrir Firefox e incluso ver algún video en youtube. Quitando la banalidad de que se usa para entrar a modo gráfico, esos 256 MB virtuales adicionales le iría muy bien a un VPS de 1GB para servicios como NGINX o MariaDB, aplica igual para los Raspberry PI 3 que solo vienen con 1GB de RAM

¿ Como se hace ?

1 Cargar el modulo de zram y especificar cuantos dispositivos de bloques debe crear, en este ejemplo 1

modprobe zram num_devices=1

2 especificar cuanta RAM se tomará para el dispositivo de bloques, la medida puede ser en gigas o megas

echo “1G” > /sys/block/zram0/disksize
o
echo “512M” > /sys/block/zram0/disksize

3 ya existe el dispositivo /dev/zram0 y ahora puede ser formateado en cualquier FS pero en este articulo hablamos de incrementar la RAM así se usara para SWAP

mkswap /dev/zram0
swapon /dev/zram0

• Tal vez se tenga que asignar prioridad al SWAP de ZRAM si esta usando swap de disco simultáneamente por que de lo contrario se hará el intercambio a disco y aunque obtendrá más RAM esta será lenta por usar primero la del disco antes que la propia de RAM

One thought on “Incrementando la RAM con ZRAM en GNU/Linux

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *