Cómo habilitar zram en Linux y exprimir la memoria al máximo

Última actualización: 19/04/2026
Autor: Isaac
  • zram crea dispositivos de bloque comprimidos en RAM que actúan como swap o discos ultrarrápidos, reduciendo accesos a disco y mejorando el rendimiento.
  • En Debian, Ubuntu y derivadas es sencillo habilitar zram con zram-tools, ajustando algoritmo de compresión y tamaño según la RAM instalada.
  • Herramientas como zram-config o zram-generator automatizan la creación de varios dispositivos zram y su integración con systemd.
  • Elegir bien entre porcentaje o tamaño fijo, y priorizar zram frente a la swap en disco, permite una configuración equilibrada y eficiente.

Configuración de zram en Linux

Si usas GNU/Linux a diario y te preocupa exprimir al máximo el rendimiento de tu equipo, tarde o temprano vas a toparte con el concepto de zram. Muchos usuarios con poca RAM notan tirones, bloqueos puntuales o lentitud al abrir varias aplicaciones pesadas a la vez. Tradicionalmente, la solución pasaba por tirar de una partición de intercambio (swap) en disco, pero hoy en día hay alternativas mucho más rápidas y eficientes.

zram es una de esas pequeñas joyas que ofrece el kernel Linux: permite crear dispositivos de bloque comprimidos en la propia RAM para usarlos como área de intercambio ultrarrápida o incluso como discos temporales. Bien configurado, puede marcar una diferencia enorme tanto en equipos modestos (4-8 GB de RAM) como en máquinas más potentes con 16 o 32 GB, reduciendo accesos al disco, evitando cuelgues y mejorando la fluidez general del sistema.

Qué es zram y por qué mejora el rendimiento frente a la swap clásica

zram es un módulo del kernel Linux que crea dispositivos de bloque comprimidos en la memoria RAM. En otras palabras, genera una especie de “disco virtual” en RAM sobre el que se puede crear una swap o incluso un sistema de archivos. Los datos que se escriben en ese dispositivo se comprimen al vuelo usando la CPU y se almacenan en memoria, de forma que ocupan menos espacio del que ocuparían sin comprimir.

La idea clave está en aprovechar que la RAM es muchísimo más rápida que cualquier HDD o SSD. Cuando el sistema empieza a quedarse sin memoria física, en lugar de volcar páginas de memoria a un disco lento, las comprime en zram. Aunque se pierde algo de CPU en comprimir y descomprimir, se gana de sobra en velocidad de acceso y, además, se reduce el desgaste de los discos, especialmente importante en SSD.

Este mecanismo se conocía originalmente como compcache, y con el tiempo fue evolucionando hasta integrarse en el kernel bajo el nombre actual de zram. Hoy en día, se considera una alternativa muy seria (y en muchas distros, la opción preferente) a la partición swap tradicional que llevamos viendo décadas en Linux.

Una ventaja práctica muy clara es la mejora de rendimiento en situaciones “al límite”. Por ejemplo, se ha probado en portátiles con Fedora que, pasando de una swap en disco a swap sobre zram, ciertos juegos exigentes ejecutados con Proton (como Doom 2016) pasaron de ir a apenas 6-7 fps a rondar los 20 fps en el mismo hardware, solo por cambiar la estrategia de intercambio. No es magia, es simplemente que la swap deja de estar en un disco relativamente lento y pasa a estar en RAM comprimida.

El enfoque también tiene beneficios en equipos modernos con bastante memoria. Aunque puedas pensar que con 16 o 32 GB de RAM no necesitas swap, lo cierto es que disponer de un colchón comprimido en zram puede ayudar a mantener la fluidez cuando abres navegadores con decenas de pestañas, máquinas virtuales, editores pesados o juegos, evitando que el sistema empiece a matar procesos o a dar tirones.

Dónde se usa hoy zram y qué distros ya lo traen o lo facilitan

Muchas distribuciones han apostado fuerte por zram como sustituto o complemento de la swap clásica. Uno de los casos más conocidos es Fedora, que decidió impulsar swap sobre zram de manera predeterminada en lugar de depender exclusivamente de una partición de área de intercambio en disco. Ese cambio ha mejorado notablemente la experiencia en portátiles y sobremesas con memoria limitada.

En el mundo Debian y Ubuntu, el enfoque ha ido cambiando con los años. Debian 10 (Buster) y Debian 11 (Bullseye), así como Ubuntu 20.04 LTS y posteriores, permiten configurar zram fácilmente mediante paquetes específicos (como zram-tools o zram-generator). En Ubuntu, además, es habitual que el sistema use un swapfile en disco en lugar de una partición dedicada, lo que simplifica bastante desactivar esa swap si decides pasar a zram.

Otras distros han incorporado zram incluso en sus instaladores. Arch Linux, por ejemplo, ofrece la opción de activar zram directamente desde su instalador guiado archinstall. Basta con marcar la opción correspondiente para que el sistema se configure con swap sobre zram con parámetros bastante razonables por defecto, algo que algunos usuarios toman incluso como referencia para afinar sus propios equipos.

Más allá del escritorio, zram también se utiliza en dispositivos móviles y sistemas embebidos. Android y Ubuntu Touch lo aprovechan para ganar algo de oxígeno en smartphones con memoria limitada: la RAM es un recurso muy valioso y la posibilidad de comprimir partes de su contenido permite ejecutar aplicaciones más pesadas de lo que permitiría la memoria física en bruto. Algunas distribuciones ligeras de escritorio también lo traen ya activado de serie.

En equipos con abundante RAM, como PCs de escritorio o mini PCs con 16-32 GB, es cada vez más habitual no crear partición swap en la instalación y usar únicamente zram como mecanismo de intercambio comprimido. Es una forma de mantener el sistema ágil sin necesidad de reservar espacio en disco para una swap que, en muchos casos, apenas se llega a tocar.

  El significado y el trabajo del apalancamiento inmobiliario

Conceptos básicos: swap, dispositivos de bloque y discos virtuales en RAM

Para entender bien qué está haciendo zram conviene repasar dos conceptos: swap y dispositivos de bloque. En GNU/Linux “casi todo es un archivo”, y los dispositivos de hardware no son una excepción: se representan como archivos especiales dentro de /dev. Un disco duro, un SSD, una tarjeta SD o un pendrive USB aparecen como dispositivos de bloque a los que el sistema accede con la misma interfaz, aunque por debajo sean tecnologías distintas.

Un dispositivo de bloque puede contener un sistema de archivos tradicional, como ext4, XFS, btrfs, etc., y montarse en un punto de montaje para que el usuario lo utilice normalmente. Sin embargo, esa abstracción también permite crear dispositivos de bloque que no están asociados a ningún hardware físico, como los discos RAM. Se trata de zonas de memoria RAM que el sistema expone como si fueran “discos” y que se pueden formatear y montar como cualquier otra unidad.

La swap, por su parte, es el área que utiliza la memoria virtual del sistema cuando la RAM se queda corta. Tradicionalmente, esa swap reside en un disco (en una partición o en un archivo). Cuando el kernel necesita liberar RAM, mueve páginas de memoria menos activas a esa zona de intercambio. El problema es que el acceso al disco es órdenes de magnitud más lento que a la RAM, de ahí que, cuando un sistema empieza a paginar agresivamente a swap, se note una ralentización muy evidente.

La idea detrás de zram es combinar lo mejor de ambos mundos: crear un dispositivo de bloque “falso” en la propia RAM y comprimir los datos que se escriben en él. Así, se consigue un efecto similar al de tener más memoria disponible (porque los datos comprimidos ocupan menos) con una velocidad prácticamente igual a la de la RAM, ya que el cuello de botella pasa a ser la CPU y no el disco. Esto es especialmente interesante en equipos con CPU decente, donde el coste de comprimir y descomprimir es muy asumible.

Además, otra ventaja clara es que la RAM no se desgasta. Usar swap en un SSD implica escritura constante sobre un soporte con ciclos de vida finitos; con zram, todo el intercambio ocurre dentro de la memoria, sin dañar discos ni requerir espacio dedicado en ellos. Por eso cada vez más usuarios con portátiles y SSD prefieren configurar swap sobre zram y, en muchos casos, desactivar por completo la swap en disco.

Algoritmos de compresión en zram: lz4, zstd, lzo y compañía

De forma general, se suele aceptar el siguiente orden de rendimiento: en velocidad pura para comprimir y descomprimir, lz4 suele ser el más rápido, seguido por zstd y luego lzo. En cuanto a capacidad de compresión (es decir, cuánto reduce el tamaño de los datos), suele ganar zstd, seguido de lzo y, por último, lz4. Esto significa que zstd comprime más pero algo más despacio que lz4, mientras que lz4 sacrifica ratio para ir como un tiro.

En muchos escenarios de escritorio, zstd ofrece un equilibrio excelente: comprime mejor que lz4 (por lo que “estira” más la RAM) y suele ser suficientemente rápido en máquinas actuales. Por eso, hay administradores y usuarios avanzados que recomiendan configurar zram para usar zstd como algoritmo principal, salvo que se trate de hardware muy limitado en CPU donde cada ciclo cuente.

El algoritmo disponible y seleccionado puede consultarse en el propio sistema cuando el módulo zram está cargado. Basta con revisar el contenido de /sys/block/zram0/comp_algorithm para ver qué algoritmos admite el kernel en ese momento y cuál está activo. Esta información también aparece comentada en algunos archivos de configuración de herramientas como zram-tools.

En cualquier caso, la elección del algoritmo no suele requerir cambios frecuentes. Lo habitual es seleccionar uno (por ejemplo, zstd o lz4), dejarlo fijo en la configuración y, si acaso, hacer alguna prueba de rendimiento en tu equipo concreto si eres muy meticuloso. La mayoría de usuarios notarán una mejora clara solo con activar zram, independientemente de matices finos entre algoritmos.

Habilitar zram en Debian, Ubuntu y derivadas con zram-tools

En Debian, Ubuntu y muchas derivadas basadas en APT, la forma más sencilla de activar zram es usando el paquete zram-tools. Este paquete proporciona un servicio y un archivo de configuración central que permiten definir cómodamente cómo se va a usar zram como swap. Es un método probado y bastante estándar que funciona bien en Debian 10, Debian 11, Ubuntu 20.04, Ubuntu 22.04 y versiones cercanas.

El primer paso es instalar el paquete correspondiente desde la terminal, usando sudo o la cuenta de root. El comando típico en estas distribuciones sería:

sudo apt install zram-tools

Una vez instalado zram-tools, el archivo clave es /etc/default/zramswap. Ahí se definen parámetros como el algoritmo de compresión, el tamaño total de zram o la prioridad frente a otras swaps. Si reinicias sin tocar nada, el sistema suele crear por defecto una cantidad pequeña de zram (por ejemplo, 250 MiB), lo que hoy en día suele quedarse corto para un uso realista del escritorio.

Para ajustar la configuración a tus necesidades, hay que editar ese archivo con tu editor favorito. Quien prefiere entorno gráfico puede usar algo tipo geany con sudo, y quien vive en la consola suele tirar de nano o similares. Por ejemplo:

sudo nano /etc/default/zramswap

Dentro de este archivo encontrarás varias secciones comentadas que explican las opciones disponibles. Suele haber un bloque sobre el algoritmo de compresión, otro sobre la cantidad de RAM que se dedicará a zram como porcentaje, otro para fijar un tamaño estático en MiB y una opción de prioridad para swapon. El formato puede variar ligeramente entre versiones, pero la idea de fondo es la misma.

  Comando gpu-viewer de Linux: instalación, uso y diagnóstico de tu GPU

Ajustar algoritmo y tamaño de la swap sobre zram según la RAM del equipo

Uno de los ajustes más importantes es seleccionar el algoritmo de compresión adecuado. En zram-tools suele haber una línea tipo ALGO= que viene comentada o con un valor por defecto (a menudo lz4). Si quieres aprovechar mejor la RAM y tu CPU no es extremadamente limitada, puedes cambiarla para que use zstd, quedando algo como:

ALGO=zstd

El segundo gran parámetro es cuánto espacio dedicar a zram. Hay dos estrategias habituales: configurar un porcentaje de la RAM total o fijar una cantidad concreta en MiB. En algunos ejemplos se usan variables como PERCENT o PERCENTAGE para definir un porcentaje (por ejemplo, 50 para la mitad de la RAM), mientras que otras versiones del archivo exponen una variable como SIZE o ALLOCATION para indicar un tamaño fijo.

Si optas por el porcentaje, una configuración muy habitual en equipos de 4-8 GB de RAM es asignar alrededor del 50-70 % de la memoria a zram. Por ejemplo:

PERCENT=50

O en algunas variantes de configuración: PERCENTAGE=50. De ese modo, en un equipo con 8 GB de RAM se crearían aproximadamente 4 GB de swap comprimida en zram, lo que suele ser suficiente para la mayoría de escritorios y evita pegarse demasiado a los límites físicos.

En máquinas con bastante RAM, suele ser más sensato definir un tamaño estático. En lugar de dejar que un porcentaje muy alto genere zram desproporcionada, se pueden usar valores como SIZE o ALLOCATION en MiB. Algunos administradores recomiendan, por ejemplo, 4096 MiB (4 GiB) de zram para equipos con más de 8 GB de RAM y 8192 MiB (8 GiB) para equipos con más de 16 GB, dejando el resto de memoria sin comprimir.

Un ejemplo real en un equipo con 32 GB podría ser: ALGO=zstd y SIZE=4096, lo que reserva 4 GB de swap en zram usando zstd. Hay usuarios que toman como referencia lo que hace el instalador archinstall en Arch Linux para máquinas con 32 GB, que suele asignar precisamente unos 4 GB de zram; otros prefieren irse hasta los 8 GB si se mueven con muchas máquinas virtuales o contenedores pesados.

Este archivo de configuración suele incluir comentarios bastante detallados sobre las opciones disponibles y referencias a la documentación oficial del kernel. Es buena idea leer esos comentarios con calma para entender qué hace cada variable y, si no tienes claro qué valor fijar, pecar ligeramente de conservador: es mejor empezar con 4 GB y subir luego que ir de entrada a tamaños exagerados que puedan dejar sin margen la RAM cuando la compresión no logre reducir tanto los datos.

Gestión de la swap existente en disco y prioridades de swapon

Cuando habilitas zram, es importante revisar qué swap en disco tienes definida. Muchas instalaciones de Debian y Ubuntu crean una partición swap al instalar o, en versiones más recientes de Ubuntu, un swapfile en el sistema de archivos raíz. Si no los desactivas, acabarás teniendo tanto la swap comprimida en RAM como la swap en disco, y el kernel decidirá cuál usar según sus prioridades.

En equipos con bastante RAM (por ejemplo, 16 o 32 GB), muchos usuarios optan por desactivar por completo la partición o archivo swap en disco. En estos casos, confían únicamente en zram para el intercambio, lo que evita accesos lentos a disco y reduce el desgaste de los SSD. Si tu Debian o Ubuntu no creó swap en disco (por ejemplo, porque tú mismo omitiste la partición en la instalación), no tendrás que tocar nada en /etc/fstab.

Si sí tienes una partición de swap, se puede deshabilitar editando /etc/fstab y comentando la línea correspondiente al punto de montaje de esa swap. El procedimiento típico sería:

sudo nano /etc/fstab

Buscar la línea que hace referencia a la partición de intercambio (normalmente con tipo swap) y comentarla añadiendo un # al inicio. Tras guardar los cambios y reiniciar, el sistema ya no montará esa swap de disco y se centrará en la de zram. Como criterio orientativo, en equipos con solo 4 GB de RAM puede ser buena idea mantener la swap de disco como refuerzo adicional, mientras que a partir de 6-8 GB se puede vivir bastante bien solo con zram.

En el propio archivo de configuración de zram puedes ajustar también la prioridad del dispositivo, mediante una opción como PRIORITY. swapon permite asignar prioridades numéricas a cada área de intercambio; cuanto mayor es el número, antes usará esa swap el kernel. Lo sensato es dar a zram una prioridad más alta que a cualquier swap en HDD o SSD, asegurando que primero se agote la swap rápida en RAM y luego, solo si hace falta, se toque la de disco.

Si en algún momento quieres verificar qué swap está activa y en qué orden se usa, puedes recurrir a swapon –show. Este comando mostrará una tabla con los dispositivos de intercambio, su tamaño, uso actual y prioridad. Es una forma rápida de confirmar que tu configuración de zram funciona como esperas y que el sistema realmente la está aprovechando.

Uso de zram como disco RAM comprimido con systemd zram-generator

Además de zram-tools, en sistemas modernos con systemd existe otra vía muy potente: zram-generator. Este paquete permite definir dispositivos zram mediante archivos de configuración en /etc/systemd, con bastante flexibilidad para usarlos tanto como swap como discos de uso general formateados con sistemas de archivos como ext4.

  Cómo exportar presentaciones de PowerPoint sin perder calidad

El archivo principal de configuración suele ser /etc/systemd/zram-generator.conf. En muchas instalaciones no existe por defecto, así que eres tú quien debe crearlo manualmente. Alternativamente, puedes montar una estructura en /etc/systemd/zram-generator.conf.d/ con uno o varios archivos *.conf que actúen como “fragmentos” de configuración y sobrescriban partes del archivo principal si lo hubiera.

La sintaxis se basa en secciones con nombres como , , etc. La numeración comienza en 0, de modo que define el primer dispositivo, el segundo y así sucesivamente. Dentro de cada sección se pueden establecer parámetros similares a los que se veían en zram-tools, pero con algunas opciones adicionales específicas de systemd y del uso como disco.

Entre las opciones más interesantes está compression-algorithm, que permite escoger el algoritmo de compresión (por ejemplo, zstd, lz4, lzo-rle…). Si no se especifica, el sistema usará el valor por defecto del kernel, que en muchos casos suele ser lzo-rle. También existe una directiva options para pasar parámetros de montaje o de swap, como discard, que hace que las páginas comprimidas no utilizadas se recorten durante la ejecución, optimizando la gestión de memoria.

Otra directiva relevante es writeback-device, pensada para escenarios avanzados: permite designar un dispositivo donde guardar las páginas que no puedan comprimirse de forma efectiva, descargándolas de zram. Se trata de una configuración menos habitual en el escritorio, pero que puede tener sentido en entornos muy ajustados donde se quiera combinar memoria comprimida y almacenamiento de respaldo.

Si lo que quieres es usar zram como disco RAM comprimido, entran en juego fs-type y mount-point. Con fs-type defines el sistema de archivos (por ejemplo, ext4) y con mount-point el directorio en el que se montará el dispositivo zram. Esto permite, por ejemplo, montar un directorio temporal ultrarrápido y comprimido en RAM, útil para compilaciones pesadas, procesamiento de datos temporales o caches de aplicaciones.

Es posible mezclar usos en un mismo equipo creando varios dispositivos zram: zram0 como swap y zram1 como disco montado con ext4. En algunos ejemplos prácticos se configura, por ejemplo, que zram0 solo se cree si el sistema tiene más de cierta cantidad de RAM (por ejemplo, 9 GB) y que cada dispositivo pueda llegar a usar hasta 2 GB de memoria física, ajustando así el consumo máximo de zram y evitando que acapare demasiada RAM si la compresión no es tan efectiva como se espera.

Comprobaciones prácticas y comportamiento automático de zram-config

Algunas herramientas como zram-config (usada en ciertas derivadas de Ubuntu) automatizan buena parte de la configuración. Este paquete, una vez instalado, crea y configura zram de manera predeterminada sin que tengas que tocar apenas nada. Tras reiniciar, el sistema arranca con los dispositivos zram listos para ser usados como swaps de alta prioridad.

Una de las estrategias habituales de estas configuraciones automáticas es crear un dispositivo de zram por cada núcleo de CPU. Esto permite repartir la carga de compresión y descompresión entre varios hilos, aprovechando mejor procesadores multinúcleo. En un equipo de 4 núcleos, por ejemplo, verías cuatro dispositivos zram (zram0, zram1, zram2, zram3) con tamaños similares que el kernel puede usar en paralelo.

El tamaño total combinado de zram suele fijarse en torno a la mitad de la RAM física. Así, en una máquina con 8 GB de RAM, las configuraciones por defecto podrían generar unos 4 GB de zram repartidos entre los distintos dispositivos. Esta cifra suele dar un buen equilibrio entre aprovechar la compresión y no dejar al sistema sin margen de maniobra para procesos que no se comprimen bien.

La prioridad asignada a estos dispositivos zram suele ser mayor que la de la swap en disco. Eso garantiza que el sistema primero utilizará la swap en RAM comprimida y solo recurrirá al disco si no queda otra. Esta preferencia se puede comprobar con swapon –show, donde verás las prioridades numéricas y podrás confirmar que zram está por encima del swapfile o partición swap tradicionales.

Para revisar la configuración exacta y el uso real de zram, existen varios comandos útiles. Por ejemplo, cat /proc/swaps muestra todas las áreas de intercambio activas, incluyendo las de zram, su tamaño y cuánto se está usando. También se puede inspeccionar /sys/block/zram*/ para ver estadísticas detalladas y parámetros avanzados, como el algoritmo de compresión actual o la cantidad de memoria física consumida frente a la lógica asignada.

En la práctica, una vez que zram está bien configurado, el usuario no suele tener que intervenir. El sistema operativo se encarga de decidir qué páginas se mueven a zram, cuándo comprimirlas y cuándo liberarlas. Lo que sí notarás, si usas programas pesados o abres muchas aplicaciones, es que la máquina aguanta mejor antes de empezar a arrastrarse o a cerrar procesos por falta de memoria.

Configurar swap sobre zram en Linux permite aprovechar aún más la memoria disponible, reducir accesos a disco y mejorar la fluidez general del sistema, ya tengas un portátil con 4-8 GB de RAM o un sobremesa con 32 GB; entendiendo bien las opciones de tamaño, algoritmo y prioridad, puedes ajustar esta funcionalidad a tu gusto y sacarle mucho partido sin complicarte la vida.

ia de google menos memoria mismo rendimiento
Artículo relacionado:
TurboQuant: la IA de Google que promete el mismo rendimiento con mucha menos memoria