CachyOS swap zram

¿Has migrado recientemente de Windows a una distribución Linux de alto rendimiento como CachyOS?. Es muy probable que hayas experimentado un comportamiento frustrante: cuando el uso de la memoria RAM es muy alto, algunas aplicaciones se cierran de golpe sin previo aviso.

En Windows, cuando la memoria se agota, el sistema se ralentiza un poco pero mantiene las aplicaciones abiertas. ¿Por qué en Linux no se comporta igual?. En Windows, las aplicaciones que no usas, se mueven temporalmente al disco duro (que es mucho más lento) y se recuperan cuando se vuelvan a utilizar. A efectos prácticos, este proceso es más lento que tenerlas en la RAM, pero para un uso normal, un usuario no debería notar más que una ralentización temporal.

El causante del cierre: El OOM Killer de linux

CachyOS (En mi caso) viene optimizado de fábrica para exprimir al máximo tu hardware. Para gestionar la memoria, utiliza ZRAM con una agresividad (swappiness) muy alta (valor de 150).

La ZRAM coge un trozo de tu memoria RAM física y la convierte en un disco virtual comprimido en tiempo real. Es una tecnología muy rápida, pero tiene un límite físico: la memoria de nuestro equipo. Si mi equipo tiene 16 GB de RAM, por mucho que ZRAM comprima los datos en ella, sigue siendo de 16 GB como máximo.

¿Por qué linux cierra aplicaciones?

Si no configuraste un espacio de intercambio tradicional en el disco duro durante la instalación (CachyOS no lo propone en su proceso de instalación, otras distribuciones si), cuando la ZRAM se llena por completo, el sistema operativo no tiene configurado el disco duro para enviar los datos sobrantes (algo parecido como hemos comentado que hacía Windows). Para evitar que el ordenador entero se congele, entra en juego el OOM Killer (Out Of Memory Killer). Es un mecanismo del kernel de Linux que mata instantáneamente la aplicación que más recursos esté consumiendo (no usada). Esto evita que el sistema se cuelgue.

La Solución equilibrada: Configurar un sistema de intercambio

Usando ZRAM, optimizamos el uso de nuestra RAM lo máximo. Para solventar los casos donde nos pasamos de la raya en algún momento, evitando que el OOM «salte» y nos cierre aplicaciones, podemos crear un fichero swap en nuestro sistema. Con esta modificación, el disco duro sólo se tocará para evitar que alguna aplicación se cierre para liberar memoria.

Linux cuenta con un sistema de prioridad (Swap priority) que decide qué dispositivo de intercambio usar antes que otro. Usa un sistema de numeración priorizando el número más alto primero.

En el sistema operativo Linux, un fichero Swap (o archivo de intercambio) es un espacio reservado en el disco duro (SSD o NVMe) que el sistema utiliza como una extensión de la memoria RAM física.

Configuración de un fichero swap en CachyOS

Gestión de memoria del kernel de linux

Primero creamos un directorio donde vamos a crear el fichero, para tenerlo organizamo usaremos «swap» de nombre.

>sudo mkdir -p /swap

Ahora ejecutamos el comando para crear el fichero. En mi caso lo haré con el mismo tamaño de mi memoria RAM real (16GB) pero puedes usar el tamaño de la tuya. En el comando, mkswapfile, ya está indicando que el fichero a crear no debe tener configurado el Copy-On-Write de brtfs. Esto evita que el fichero se copie cada vez que se modifique. (que pueden ser muchas veces, y como lo hará para guardar estado temporal de una aplicación, no nos interesa)

>sudo btrfs filesystem mkswapfile --size 16g /swap/swapfile
create swapfile /swap/swapfile size 16.00GiB (17179869184)

Ya tenemos el fichero creado en nuestro sistema, pero hay que activarlo:

>sudo swapon /swap/swapfile

Finalmente, para que el cambio se aplique automáticamente al reiniciar el ordenador, meteremos una entrada en nuestro /etc/fstab para que el fichero de swap se monte automáticamente al arrancar. Ahora, si haces un «swapon –show» podrás ver que tienes tanto la zram como el fichero swap trabajando para hacerte más fácil la vida.

>swapon --show
NAME           TYPE       SIZE USED PRIO
/dev/zram0     partition 15,5G 5,6G  100
/swap/swapfile file        16G   0B   -1

Si te fijas, la línea con la ZRAM tiene la prioridad más alta, por lo que el sistema linux priorizará comprirmi en la RAM todo lo posible antes que pasarlo al disco duro, que es el comportamiento que deseamos.

Cómo solucionar los cierres inesperados de apps en CachyOS (y Linux) configurando ZRAM + Swap en BTRFS
Etiquetado en:        

Deja una respuesta

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

Social media & sharing icons powered by UltimatelySocial