Para funcionar correctamente, un sistema informático necesita tener memoria RAM. Y cuantos más gigas, mejor. Esta memoria se utiliza para cargar todos los programas y recursos necesarios para que el PC funcione correctamente. De entrada, los sistemas operativos modernos (Windows 10, Ubuntu, macOS) necesitan en torno a 2 GB mínimos para funcionar bien. Y cuantos más programas usemos, más memoria necesitamos. Sin embargo, ¿qué ocurre si nos quedamos sin memoria mientras usamos Linux? Entonces se recurre a una técnica conocida como «Swap».
Lo primero que debemos tener en cuenta es que muchos usuarios de Windows desde hace años migran a equipos basados en Linux debido a que estos sistemas operativos de código abierto requieren menos exigencias hardware. Además, este software que os comentamos está capacitado para gestionar mejor la cantidad de memoria disponible en nuestro ordenador en comparación a cómo lo hace el sistema operativo de Microsoft.
Qué es el Swap en Linux y cuál es su función
Pero al mismo tiempo nosotros mismos debemos tener ciertos conocimientos más avanzados para así poder sacar el máximo partido a estas funciones de control y manipulación del hardware en Linux.
Para empezar, os diremos que se conoce como «Swap» dentro de los sistemas Linux como a un determinado espacio del disco duro que, en caso de necesidad, se utiliza como memoria RAM virtual. De esta forma, si nuestro ordenador se está quedando sin memoria RAM libre, se mueven datos de la misma al disco duro, se libera su espacio y, en caso de necesitarlos de nuevo más adelante, se accede a ellos desde dicho disco duro.
Si partimos de la base de que en ocasiones utilizamos estos sistemas de código abierto en equipos un tanto limitados o antiguos, este es un apartado que cobra una especial importancia. Más si deseamos que el sistema funcione de manera fluida sacando el máximo provecho al reducido hardware disponible en el ordenador, algo que influye de manera directa tanto en las unidades de disco como en la memoria RAM.
En Windows, el Swap es lo que conocemos como «pagefile» o memoria virtual. Mientras que en Windows siempre ha sido un fichero (pagefile.sys), en Linux, hasta hace relativamente poco tiempo, teníamos que tener una partición dedicada (formateada y montada como swap) de la capacidad que nosotros quisiésemos para usarla para este fin. las distribuciones más modernas ya utilizan un fichero similar al de Windows para esta labor.
Para que nos hagamos una idea más aproximada de lo que os contamos aquí, mencionar que cuando instalamos una distro de Linux en nuestro PC, durante el proceso de instalación tenemos la posibilidad de asignar un determinado espacio para el propio sistema, y otro para el mencionado swap. Aquí cobra una especial importancia los conocimientos más o menos avanzados que tengamos de estos sistemas operativos de código abierto. Os decimos esto porque aquellos que se puedan considerar como avanzados, no tendrán problemas para saber cómo distribuir este espacio de sus unidades de disco para una función u otra.
Por el contrario, en el caso de que no tengamos demasiados conocimientos en el manejo y configuración de Linux, esto podría representar un serio problema, incluso podríamos experimentar fallos en el funcionamiento del sistema.
Ventajas e inconvenientes
Como todo, esta característica tiene sus propias ventajas e inconvenientes. Entre las principales ventajas podemos destacar que se trata de una solución «rápida y económica» a los problemas de memoria RAM. Sobre todo, cuando son problemas esporádicos. Además, el intercambio es necesario para poder usar algunas funciones de Linux, como, por ejemplo, hibernar el ordenador. Además, en este caso, necesitaremos tener una Swap de algunos gigas más del total de RAM que tengamos en el PC.
Tener 8 GB de Swap no es, ni de lejos, lo mismo que tener 8 GB de memoria RAM. El Swap es mucho más lento que la memoria RAM, y enviar y recuperar información del disco duro lleva un tiempo, por lo que notaremos una importante pérdida de rendimiento. Si recurrimos a esto alguna vez no hay problema, pero si tenemos poca RAM es mejor ampliarla físicamente que depender del Swap. Además, si tienes un SSD, a la larga hacer uso de este intercambio puede dañarlo por la gran cantidad de ciclos de escritura que lleva.
Además, la Swap es para Linux menos importante que la RAM. Esto significa que siempre va a estar en segundo plano, y es muy probable que en alguna ocasión algún programa, e incluso el sistema operativo completo, falle.
Llegados a este punto también es importante saber que el uso de memoria RAM, siempre y cuando esté disponible, será mucho más funcional que utilizar esta funcionalidad de Swap. una de las principales razones de todo ello es que la escritura y lectura en la RAM siempre va a ser mucho más rápida que el acceso a cualquier unidad de disco, aunque sea SSD. De ahí precisamente que el propio sistema operativo Linux dé prioridad al uso de la RAM por delante del Swap del que os hablamos ahora.
¿Debo usar Swap?
La respuesta a esta pregunta es complicada. Depende del hardware que tenga nuestro ordenador, y de para qué lo utilizamos. Por ejemplo, si tenemos 4 GB de memoria RAM, sí deberíamos tener algunos gigas de intercambio preparados para que, en caso de necesitarlos, estén disponibles. Lo mismo ocurre si somos de los que solemos hibernar el ordenador a menudo.
Si usamos aplicaciones que consumen cantidades ingentes de memoria, como Blender, un editor 4K de vídeo o editamos fotos muy grandes en GIMP, entonces también es recomendable tener este espacio disponible, aunque puede que no lleguemos a necesitarlo.
Es más, tal y como os comentamos anteriormente en ocasiones utilizamos estas distribuciones de código abierto en equipos muy antiguos dónde se puede ejecutar. De ahí que nos podemos encontrar algunos Linux funcionando en ordenadores con 1 o 2 gigas de memoria RAM disponible. Por tanto, no es difícil imaginar que el uso de la funcionalidad de la que os hablamos ahora aquí será incluso más recomendable. Pero claro, para todo ello también es importante que dispongamos de alguna unidad de disco con espacio libre suficiente para activar todo ello. La ventaja es que las distribuciones de Linux ligeras apenas ocupan espacio, lo que nos permite asignar más para el swap.
Sin embargo, si tenemos un ordenador con una RAM moderada (16 GB, por ejemplo), y ni usamos la hibernación ni usamos los programas anteriores, entonces el Swap no será necesario, ya que nuestro Linux nunca usará toda esta memoria.
Aquí también entra en juegos los programas que tengamos instalados en el sistema operativo con los requerimientos hardware mínimos que nos exige el mismo. No es lo mismo una distro ligera diseñada especialmente para funcionar en equipos antiguos, que una de las grandes distribuciones profesionales que nos exige el máximo del ordenador y su hardware.
Cómo activar el intercambio, o Swap, en Linux
Hay dos formas diferentes de activar el uso de Swap, dependiendo del tipo que usemos (partición o archivo). Podemos comprobar si nuestro Linux tiene Swap, y de qué tipo, ejecutando el siguiente comando en un terminal:
sudo swapon --show
Con él vamos a poder ver el nombre, o punto de montaje, el tipo y el tamaño.
En el caso de que usemos la típica forma de la partición, entonces lo único que debemos hacer al instalar Ubuntu es crear una partición, del tamaño que queramos (se recomienda 1.5 veces la RAM) formateada como Linux-SWAP. Además, también debemos asignarla el punto de montaje Swap para que el sistema operativo prepare dicha partición para usarla como intercambio.
Si hacemos esto durante la instalación del sistema operativo no tendremos que hacer nada más. De lo contrario, si lo queremos añadir más adelante, debemos especificar dicho punto de montaje en el fstab de nuestra distribución para que arranque automáticamente al encender.
En caso de querer habilitar el uso de Swap mediante un fichero, lo que debemos hacer es ejecutar los siguientes comandos:
Crear el fichero de intercambio (eligiendo el tamaño cambiando 1G por el valor que queramos darle):
sudo fallocate -l 1G /swapfile
A continuación, le damos permisos para que solo root pueda escribir en dicho fichero con:
sudo chmod 600 /swapfile
Damos al archivo una estructura para poder funcionar como archivo de intercambio con:
sudo mkswap /swapfile
Y, por último, lo activamos con:
sudo swapon /swapfile
Para que este archivo cargue al inicio de la distro por defecto debemos añadir su instrucción en el fstab. Esta instrucción debe ser como un punto de montaje más, con lo siguiente:
/swapfile swap swap defaults 0 0
Ya está listo. Reiniciamos Linux y podremos ver cómo la nueva partición de Swap está en funcionamiento. Si queremos, podemos volver a usar el comando «sudo swapon –show» para comprobar que, efectivamente, estamos usando un intercambio de archivo en lugar de una partición.
Swappiness: elegir cuándo queremos que Linux lo use
Por defecto, Ubuntu (y muchas distros Linux) tienen configurado un swappiness por defecto de 60. Esto significa que el Swap no se usa hasta que se use el 60% de la memoria RAM. A partir de ese umbral es cuando se empieza a usar la memoria de intercambio.
Este valor podemos modificarlo editando el siguiente fichero con un editor con permisos de root:
cat /proc/sys/vm/swappiness
Podemos cambiar el umbral deseado modificando el valor por defecto por el que queramos. Por ejemplo, podemos ponerle un valor de «90», si queremos que solo se empiece a usar esto cuando tengamos el 90% de la RAM usada. Incluso más. Así aprovecharemos mejor la memoria física del ordenador, lo cual, a su vez, se traduce en un mejor rendimiento.
Si no queremos modificar este valor, también podemos cambiar el swap temporalmente con la siguiente instrucción, aunque debemos tener en cuenta que, después de reiniciar, volverá al valor de swappiness por defecto.
sudo sysctl vm.swappiness=10
El valor óptimo que debemos configurar depende de cada uno. Si tenemos RAM suficiente, cuanto más alto, mejor. Pero si queremos ir precavidos para evitar quedarnos sin memoria, el valor por defecto no está mal.
Establecer el nuevo swappiness para siempre
Estos cambios sobre la configuración de la funcionalidad de la que os hablamos ahora es muy útil en multitud de casos, sobre todo en equipos un tanto limitados en hardware. Pero con todo y con ello debemos tener muy presente de forma predeterminada el sistema operativo recupera el valor del swap por defecto cada vez que reiniciamos el equipo. Esto quiere decir que los cambios que os hemos mencionado hasta ahora son temporales para esa sesión que estamos llevando a cabo con el ordenador.
Y es que hay que tener en consideración que estas modificaciones en el swap del sistema generalmente se llevan a cabo para determinadas circunstancias. Por ejemplo, esto afecta a la ejecución de programas especialmente potentes y que requieren de muchos recursos del equipo, algo de lo que no disponemos. Sin embargo, en el caso de que hayamos detectado una importante mejoría en el funcionamiento del ordenador con estos cambios, también podemos dejarlos fijos. En realidad, lo que os queremos decir con esto es que se puede dar el caso de que hayamos notado que con la reducción del swappiness, el funcionamiento del sistema operativo ha mejorado en general.
Pues bien, llegados a este.es importante saber que tenemos la posibilidad de establecer ese nuevo valor de forma definitiva. Para ello de nuevo vamos a hacer uso de un útil comando que os vamos a describir a continuación:
sudo gedit /etc/sysctl.conf
vm.swappiness=10
Virtual Memory Modifier
Si no somos muy diestros a usar el terminal de Linux, debemos saber que hay un programa, llamado «Virtual Memory Modifier», que nos va a permitir modificar fácilmente el swappiness de nuestro Linux de manera que podamos ajustarlo fácilmente al valor que queramos. Para ello, lo primero que haremos será instalarlo en nuestra distro ejecutando los siguientes comandos:
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update && sudo apt-get install vmm
Una vez instalado, podemos lanzarlo desde el icono que nos habrá copiado en el lanzador de Linux, o directamente con el comando «vmm» en la consola del sistema. Eso sí, siempre con permisos de SUDO para que no haya problemas.
Como podemos ver, el programa no tiene ninguna complicación. Simplemente debemos especificarle el valor que queremos usar, y listo. Aceptamos los cambios y ya podemos empezar a disfrutar más de nuestro Linux.
Partición SWAP vs swapfile, ¿qué es mejor?
Como hemos visto, Linux tiene dos tipos de intercambio. Por un lado, tenemos la posibilidad de dedicar una partición completa a intercambio, y por otro crear un fichero que se encargue de guardar la información del intercambio de memoria, como hace Windows.
Ambas técnicas funcionan igual, y ninguna de ellas ha demostrado dar mejor o peor rendimiento. Sin embargo, el método original, el de la partición, es bastante más incómodo. Debemos tener siempre una partición en el disco duro de unos pocos gigas para usarla como memoria de intercambio. Y en caso de necesitar hacerla más grande, estaremos mucho más limitados, ya que si tenemos una partición contigua no podremos hacerla más grande.
De todos modos, el uso de un método u otro también depende de los conocimientos más o menos avanzados que tengamos del sistema operativo de código abierto. Lo cierto es que el segundo, swapfile, resultará mucho más funcional y cómodo de usar para aquellos usuarios que estén un tanto limitados en cuanto a su experiencia en Linux. Por el contrario, los usuarios más avanzados quizá prefieran utilizar el primer sistema ya que tendrán mucho más control sobre el almacenamiento temporal pudiendo gestionar las diferentes particiones de las unidades de disco.
El uso del swapfile es mucho más cómodo. Este fichero podemos crearlo, darle el tamaño que queramos, y borrarlo con un simple comando. No dependemos de particiones ni puntos de montaje especiales, por lo que podemos jugar con el intercambio como menos nos venga en cada momento.
Si nuestra distro Linux lo permite, nosotros preferimos usar el fichero de intercambio, swapfile. Además esto es algo que se hace extensible a la mayoría de los usuarios tanto avanzados como noveles en el sistema operativo de código abierto. a su vez más adelante os hablaremos de los equivocados mitos que rodean a esta característica de Linux y que en ocasiones intentan frenarnos en su uso.
¿Puedo usar Linux sin Swap?
La partición (o archivo) de intercambio en Linux lleva presente desde los inicios de este sistema operativo. Y antes tenía mucho sentido, ya que, aunque los programas ocupaban mucha menos memoria que ahora, la RAM era mucho más limitada. Ahora es raro ver un ordenador relativamente moderno con menos de 16 GB o 32 GB de memoria. Con esa cantidad, aunque las aplicaciones ocupen mucho más espacio cuando están abiertas, es raro que un ordenador se llegue a quedar sin RAM disponible.
Por lo tanto, siempre y cuando haya memoria RAM disponible, sí que vamos a poder usar un Linux sin intercambio. Es más, al no tener que escribir datos al disco duro o el SSD, el rendimiento será bastante más elevado, ya que eliminamos ese cuello de botella. Eso sí, si llenamos toda la memoria, y no tenemos intercambio, entonces sí que tendremos problemas.
Nuestra recomendación es que no renunciemos a la SWAP de Linux. Pero lo que sí deberíamos hacer es configurar el swappiness lo más bajo posible de manera que solo se escriban datos en esta memoria extendida cuando la principal se esté quedando sin espacio libre.
Mitos sobre SWAP
Igual que ocurre con la paginación de Windows, hay muchos mitos y muchas leyendas que giran en torno al intercambio de Linux. Y uno de los más graves es, desde luego, gira en torno a su funcionamiento. Generalmente se asocia el intercambio a que, cuando se alcanza cierto umbral, se deja de usar la RAM y se empieza a usar este SWAP. Es un concepto muy erróneo que, como se ha extendido a lo largo de los años, se cree que es verdad. Pero está muy lejos de la realidad. Y menos si configuramos correctamente el Swapiness.
Esto quiere decir que no deberíamos tener miedo de usar esta función de la que os hemos estado hablando, especialmente en equipos que estén limitados en la memoria RAM disponible. La mayoría de las ocasiones ganaremos en rendimiento al tiempo que evitamos posibles bloqueos en el funcionamiento de algunos programas.
Otro mito (a medias) es que perdemos rendimiento en el PC. Este, en el pasado, era cierto, ya que escribir en los discos duros era infinitamente más lento que hacerlo en la RAM. A día de hoy, con los SSD NVMe PCIe 4.0, aunque puede haber pérdida de rendimiento, esta es casi inapreciable.
¿Y qué pasa con que se rompen los discos duros y, sobre todo, los SSD? Los discos duros jamás se han roto por usar el intercambio. Las primeras unidades de SSD tenían ciclos de escritura muy cortos y limitados, y las escrituras del SWAP es cierto que podían llegar a resentirlos. Hoy en día, los ciclos de escritura y lectura los hacen casi eternos, por lo que no va a haber el menor problema en ese sentido.
Esto quiere decir que nos podemos olvidar de esos mitos y leyendas que afirman que el uso de esta funcionalidad en Linux podría dañar las unidades de disco sólido que tengamos instaladas en el equipo.