Zram: RAM comprimida como swap en Arch Linux
Por qué zram supera a la partición swap tradicional o al archivo swap, y cómo configurarlo en Arch Linux con zram-generator.

Tu RAM está llena. El kernel hace lo único que puede: envia las páginas ed memoria hacia el swap. Y si ese swap vive en el disco, lo notas, los ventiladores aceleran, el cursor se traba y piensas dos veces antes de abrir otra pestaña.
Ahora imagina lo mismo, pero con el swap dentro de la propia RAM, comprimido. Eso es zram, y es discretamente una de las mejores mejoras de rendimiento que puedes hacer en una máquina Linux moderna.
¿Qué es zram?
zram, antes llamado compcache, es un módulo del kernel que crea un dispositivo de bloques comprimido en la RAM. Cuando el sistema hace swap, las páginas se comprimen y se almacenan en memoria en lugar de escribirse en disco.
Gracias a esa compresión, una máquina de 4 GB puede ocupar mucho más de 4 GB de “swap”. Los textos, el código y la mayor parte de lo que hay en memoria se comprime muy bien. En mi experiencia se pueden ver ratios de compresión efectivos de entre 2:1 y 4:1, lo que significa mucho margen maniobra para usar ese nuevo espacio.
¿Cual es La contrapartida? Cuesta un poco de CPU comprimir y descomprimir páginas. Lo bueno es que con el hardware actual ese coste es pequeño y tu kernel lo gestiona bien. Para usar poder empezar a utilazar esta Zram la como swap realizaremos las siguientes configuraciones.
Partición swap vs archivo swap vs zram
Comparemos rápidamente las tres opciones.
Una partición swap es una partición de disco dedicada. Es simple, pero te obliga a decidir su tamaño durante el particionado, y redimensionarla después es molesto.
Un archivo swap es más flexible — es solo un archivo que creas y activas, fácil de redimensionar. Pero tanto la partición como el archivo comparten el mismo problema de fondo: usan I/O de disco.
Eso importa por varias razones:
- Velocidad. Incluso un NVMe rápido es varios órdenes de magnitud más lento que la RAM. Cuando el sistema empieza a hacer swap en disco, todo se arrastra.
- Desgaste. Las escrituras constantes de swap desgastan los SSD. Es una forma real, aunque lenta, de degradación.
- Espacio. Un archivo swap grande te come disco que quizá quieras para otra cosa.
zram evita todo eso. No hay I/O de disco, no hay desgaste adicional, y es autoajustable — solo usa la RAM que realmente necesita el dato comprimido.
La pega es que zram usa RAM física, así que compite con tus programas en ejecución. Y como vive en la RAM, no puede conservar datos a través de un reinicio — lo que lo hace inútil para la hibernación. Para hibernar todavía necesitas un swap en disco.
Por eso, una configuración habitual y sensata es:
- zram como swap principal, para absorber rápidamente la presión de memoria del día a día.
- Un archivo swap pequeño en disco (aproximadamente el tamaño de tu RAM) reservado para la hibernación, con menor prioridad para que zram se use primero.
Configurando zram en Arch con zram-generator
La forma más limpia en Arch es zram-generator. Incluye un generador de systemd que crea y activa tu swap zram automáticamente al arrancar.
Instalacion:
sudo pacman -S zram-generator
Luego crea el archivo de configuración:
sudo vim /etc/systemd/zram-generator.conf
Esta config mínima es suficiente para tener un swap zram funcional:
[zram0]
Eso es todo. Sin opciones, zram-generator crea un swap en /dev/zram0 con un tamaño de la mitad de tu RAM, hasta un máximo de 4 GiB.
Recomiendo ajustarlo un poco. Una configuración habitual y más generosa permitiendo hasta 16 GiB:
[zram0]
zram-size = min(ram / 2, 16384)
compression-algorithm = zstd
swap-priority = 100
Algunas notas sobre qué significan esas opciones:
zram-size— una fórmula basada en tu RAM total (ram).min(ram / 2, 16384)significa “la mitad de mi RAM, pero nunca más de 16 GiB”. Si quieres una config simple, un tamaño fijo comozram-size = 8192también funciona.compression-algorithm—zstdes el valor por defecto moderno y una gran elección en velocidad y ratio. Puedes comprobar qué tu kernel la soporte concat /sys/block/zram0/comp_algorithm.swap-priority = 100— hace que el kernel prefiera zram sobre tu swap en disco, que es justo lo que estamos buscando.
Para probarlo ahora (sin necesidad de reiniciar):
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service
Compruebando que funciona:
zramctl
Deberías ver algo como:
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 16G 1.1G 198.2M 263.5M [SWAP]
Aquí DATA es la data sin comprimir almacenada (1,1 GB), COMPR es que tanto comprimió en realidad (198 MB) y TOTAL es la RAM real que se está usando (263 MB). Es toda la magia de zram en una línea.
En el próximo arranque zram-generator lo configurara automáticamente, así que no hay nada más que activar.
Conclusión
Si tienes un portátil que se traba bajo carga, o solo quieres darle a tu sistema con poca RAM más espacio para respirar, zram es un cambio sin esfuerzo y con una gran recompensa. Es rápido, no desgasta tus discos solidos y en Arch está a un paquete y un archivo de config de distancia.
Mantén un swap en disco pequeño por si alguna vez hibernas el sistema, y deja que zram se encargue de la presión del día a día. Tus ventiladores y tu SSD te lo agradecerán.