martes, 1 de noviembre de 2022

¿SWAP... o No SWAP?

Estoy confuso. Uno de los principales ‘fundamentos’ que, de toda la vida, debías conocer para instalar Linux era aquello de crear una partición para la memoria de intercambio, o SWAP, de manera que 'lo normal', en Linux, siempre fue crear 3 particiones: una para el sistema ('root'), otra, para tus archivos y configuraciones personales (la /home) y otra, pequeña para el intercambio, o SWAP.
Y es que siempre se dijo que 'la memoria virtual' (que se podría llegar a utilizar como complemento de la RAM para facilitar (acelerar) el disponer ‘a mano’ los procesos en uso) era mucho más rápida si el intercambio se hacía ‘vía partición’ (la partición SWAP), que 'vía archivo de sistema', como hace tradicionalmente Windows con su ‘archivo de intercambio’ (pagefile.sys, creo que se llama), que lo genera en la propia partición principal (C:\)

Pero ahora resulta que, con el aumento de tamaño de las RAM (o porque, en el fondo se está intentando ‘confluir’ con Windows) algunas distros empiezan a recomendar que no es necesario tener una partición de intercambio, la SWAP, que basta tener, como el Windows, un ‘swapfile’… y santas pascuas.

Bueno, yo debo decir que estas modernidades (como lo de instalar por paquetes snap, y similar) me sientan fatal, me parece que van contra los principios originales de Linux, y veo la mano conspiranoica de una ‘joint venture’ Canonical-Microsoft para que Windows y Ubuntu acaparen el mercado de los sistemas operativos… y los modifiquen a su antojo.
Pero por curiosidad… ¿Se puede prescindir, hoy en día, de la partición SWAP…?
Bueno, como tengo un segundo ordenador con 8 GB de RAM, decidí hacer el experimento. Porque es muy fácil: estos son los pasos:
En primer lugar, para saber qué tipo de memoria virtual tengo, donde está, su tamaño, etc, basta escribir en consola esta orden:
sudo swapon --show
y te lo dice. Bueno, en principio ya lo sabrías, porque te dirá algo como esto…

pero siempre es bueno saber 'como puede saberse'.

Ahora vamos a ver cómo anular la partición SWAP, y crear un SWAPFILE, que la sustituya:
Y para habilitar el uso de Swap (intercambio) mediante un fichero tendremos que…
A) Crearlo, con
sudo fallocate -l 2G /swapfile
(aquí, se crea, en el directorio raiz, ‘ / ‘, un archivo de nombre swapfile y (en el caso) de 2 GB de tamaño)

B) Le tenemos que dar los permisos necesarios para que solo ‘root’ pueda escribir en él. Con...
sudo chmod 600 /swapfile

C) Ahora tenemos que darle la estructura adecuada para poder funcionar como archivo de intercambio. Lo hacemos con:
sudo mkswap /swapfile

D) Y solo quedaría activarlo. Con...
sudo swapon /swapfile

Bueno, solo quedan dos cuestiones importantes:
La primera, hay que hacer que este archivo sea el que ‘se cargue‘, como memoria de intercambio, al arrancar el sistema (la distro).
Para ello hay que modificar el archivo /etc/fstab con
sudo nano /etc/fstab
donde, además de anular (por ejemplo, ‘comentando’ con un asterisco) la orden de montaje de la partición SWAP ‘clásica’, que aparecería en el /etc/fstab, que quedaría, por ejemplo...
* UUID=5492a526-e96d-47c0-8ab6-4501987c256e   none   swap   sw   0    0
hay que crear el nuevo mandato, que lo sustituya, para que se monte el ‘swapfile’, que es del tipo siguiente
/swapfile    swap     swap    defaults    0     0
(y reiniciar, claro)

Y la segunda (bueno, esta optativa) es modificar el ‘swappiness’, o sea el umbral de uso de la RAM, por parte del sistema, para que empiece a utilizar (como ayuda a la RAM) este ‘swapfile’ .
Esto es muy viejo, ya hablé es este Blog (en 2015…) del swappiness, así que voy a ser breve: de momento déjalo ‘por defecto’, que es tener un swappiness de 60, lo que significa que el swapfile empezará a usarse cuando el sistema utilice un 40% de la RAM .
Por supuesto, la RAM es bastante más rápida que la SWAP así que una swappiness de 10 significaría que, hasta que no estemos usando el 90% de la RAM no usaremos la SWAP y, en principio, los procesos irían algo (bueno, nano segundos…) más rápidos, para claro, a base de que la RAM trabaje a destajo, que puede que tampoco fuese bueno.
Por eso, lo dicho: mejor dejarse de líos y aceptar el valor ‘por defecto’
Podemos saber nuestra swappiness viendo el resultado de la orden…
sudo cat /proc/sys/vm/swappiness

Si quisiésemos cambiar el valor (poniendo un valor, X, de 0 a 100), lo haríamos con
sudo sysctl vm.swappiness=X
Que quedaría como valor definitivo (si no, al reiniciar, volvería el valor 'por defecto'), editando el archivo /etc/sysctl.conf con...
sudo nano /etc/sysctl.conf
y añadiendo la línea… vm.swappiness = X

Bueno, y la pregunta del millón: ¿Qué es más recomendable…?
Pues, al parecer, cuestión de gustos personales, no se nota la diferencia.
¿Que quieres ahorrarle una partición SWAP…? Pues crea un swapfile, al modo Windows.
¿Que quieres ser ‘clásico’… y fiel a los ‘principios’ de Linux…? Pues sigue usando SWAP

La verdad es que (al menos en mi caso, que soy un usuario doméstico normalito, y NO-gamer) como el tamaño de mi RAM es bueno apenas necesito SWAP y como mi tamaño de disco duro es holgado, no me molesta tener una pequeña partición SWAP de 2 a 3 GB… me da lo mismo.

Pero es bueno probar nuevos horizontes…

Y, por cierto, este 'viejo' artículo me pareció interesante (o ‘aclaratorio’…)
https://aplicacionesysistemas.com/swappiness-en-sistemas-gnu-linux-que-es-y-como-configurarlo/

No hay comentarios:

Publicar un comentario