Zswap es un mecanismo de compresión de páginas de memoria dentro del kernel de Linux que intercepta las páginas que están a punto de ser enviadas al espacio de swap en disco. En lugar de escribirlas directamente al disco, Zswap intenta comprimirlas y almacenarlas en un pool de memoria dinámicamente asignado en la RAM. Si la compresión es exitosa y hay espacio disponible en el pool, la página comprimida se guarda en RAM. Solo si la compresión falla o el pool de Zswap está lleno, la página original (o la comprimida si se pudo comprimir pero no cabía en Zswap) se envía al dispositivo de swap en disco. Esto reduce significativamente las operaciones de I/O al disco y mejora el rendimiento en escenarios donde la memoria RAM es limitada o la carga de trabajo genera mucha paginación.

Zswap es una característica nativa del kernel de Linux, disponible en la mayoría de las distribuciones modernas (ej. Ubuntu, Red Hat Enterprise Linux, Debian, Fedora) a partir de versiones recientes del kernel. Se configura a través de parámetros del kernel o sysctl (ej. `zswap.enabled=1`, `zswap.compressor`, `zswap.max_pool_percent`). Es comúnmente utilizado en sistemas embebidos, servidores con recursos de memoria limitados, máquinas virtuales con sobreaprovisionamiento de memoria (memory overcommit), y entornos de contenedores donde la optimización del uso de RAM es crítica. Por ejemplo, un servidor web o una base de datos con picos de uso de memoria pueden beneficiarse de Zswap al evitar que las páginas menos activas lleguen al disco, manteniendo un rendimiento aceptable incluso bajo presión de memoria.

Para un Arquitecto de Sistemas, Zswap representa una herramienta valiosa para optimizar el rendimiento y la resiliencia de los sistemas bajo presión de memoria. Permite mitigar los efectos negativos de la paginación a disco (alta latencia, I/O intensivo) sin la necesidad de añadir más RAM física. Sin embargo, su uso implica trade-offs: introduce una sobrecarga de CPU debido a la compresión/descompresión de datos, y consume una porción de la RAM disponible para su propio caché. La elección del algoritmo de compresión (ej. LZ4 para velocidad, ZSTD para mejor ratio de compresión) y el tamaño máximo del pool de Zswap (`zswap.max_pool_percent`) son decisiones críticas que deben balancear el consumo de CPU, el uso de RAM y la efectividad de la compresión. Un arquitecto debe considerar Zswap en escenarios donde el costo de RAM es alto, el rendimiento de I/O a disco es un cuello de botella, o se busca una capa adicional de resiliencia antes de que el sistema recurra al swap en disco, evaluando cuidadosamente el impacto en la latencia y el throughput general del sistema.