sábado, 21 de febrero de 2015

La RAM, la SWAP... y el 'swappiness'

Mucha gente se ha hecho, alguna vez, esta reflexión: 'si me compro y añado más RAM, mejoraré la velocidad de mi ordenador'. Y bueno, puede que si... pero también puede que no. Para decidirlo 'técnicamente' habrá que empezar conociendo cómo usas la RAM y la memoria de intercambio (SWAP) en tu ordenador
De todos es sabido que, en Linux, la partición SWAP 'complementa' a la RAM, descargándola de tareas a realizar. Y también debemos conocer que, sobre todo si el disco duro no es excepcionalmente rápido, los intercambios realizados a través de la partición SWAP son más lentos que los realizados desde la propia RAM. Por tanto, si mi ordenador usa bastante la SWAP... aumentar la RAM muy posiblemente haría que fuese algo más rápido.
Así que, lo primero, es conocer qué uso de la RAM y la SWAP haces.
Hombre, eso lo puedes saber (en ciclos de, normalmente, 50 segundos) a través del 'Monitor de Sistema' (Administración-Monitor de Sistema-Recursos). Y también hay algún 'applet' en Cinnamon ('extensión', en Gnome) que te permite monitorizar ese uso.
Y también lo puedes hacer con algunos comandos de consola, como 'free -m' o 'vmstat -s' o, el más conocido, el comando 'top', que te indica los procesos abiertos, y el consumo de CPU y RAM de cada uno.
Pero a mi el que más me gusta es el comando 'htop', que por cierto, no suele venir instalado por defecto, así que lo primero es hacer un
sudo aptitude install htop
y que cuando lo ejecutas te presenta no solo el consumo mencionado, sino, en cabecera, una gráfica del % de uso de los procesadores, de la RAM y de la SWAP. Algo así

Pero hay una cosa más que hay que saber: el swappiness. Así que...

¿Que es el SWAPPINESS?
Pues, sencillamente, es una propiedad del kernel que permite poder 'balancear' el uso que hace el ordenador de su RAM y su SWAP. Está muy bien explicado en la Wikipedia, lo puedes leer aquí
Así que, con un swappiness=0, el núcleo intenta NO hacer intercambio, y con 100 hace uso, siempre, de la swap. 
Pero lo importante es conocer que, en las distribuciones 'desktop', lo común es que tenga, por defecto, un valor de 60, lo que significa que cuando la RAM se ocupe en un 40%, pasa a actuar la SWAP.
Y, por lo tanto, se podría probar cambiar el swappiness para 'forzar' a usar más RAM y menos SWAP, ya que esta es una memoria más lenta.

Para conocer el valor del swappiness que tiene, actualmente, nuestro ordenador, basta escribir, en consola...
sudo cat /proc/sys/vm/swappiness
y nos devolverá una cifra (generalmente, como he dicho, 60) que, si queremos, podríamos cambiarla. Es interesante hacerlo en una o más sesiones, para probar que las cosas van bien (o mejor).
Y esto se hace así:
Si, por ejemplo, queremos probar el valor swappiness=20 (usará más la RAM, y menos la SWAP) escribimos este comando
sudo sysctl -w vm.swappiness=20
y este valor del swappiness prevalecerá mientras el sistema está activo (al reiniciarlo, volverá al valor por defecto)
Y, si hemos comprobado que con ese nuevo valor se funciona mejor, para hacerlo permanente nos bastará editar el archivo /etc/sysctl.conf, con
sudo nano /etc/sysctl.conf
Y en la última línea añadimos...
vm.swappiness=20
tras lo cual guardamos aceptando el cambio y, tras reiniciar, podemos comprobar, con el mandato que comentaba arriba, que ahora '20' es el valor que adopta el swappiness.
(Por supuesto, siempre puedes retornar a la situación 'por defecto' de swappiness=60 siguiendo un proceso similar).

Yo, personalmente, no voy a hacer nada, porque la verdad es que, con 4 GB de RAM, y mis usos habituales del PC, compruebo que apenas hago uso de la SWAP, y en el fondo soy de los que piensan que el 'valor por defecto' se pone 'por alguna razón'. 

Pero siempre viene bien conocer que existen estas posibilidades... antes de liarte a gastar las perras comprando más tarjetas de RAM... cuando a lo mejor, puestos a gastar, podrían tener mejor aplicación.

3 comentarios:

  1. Hola.

    Lo que he leído por otros sitios es que el valor de swap que se da por defecto (60) es útil para servidores, pero no tanto para uso personal.

    He encontrado en otros sitios algo de información sobre otra utilidad: zswap. Al configurarlo y activarlo sí que he notado un pequeño aumento en la velocidad de mi equipo, que también tiene 4 gb de ram. También lo puesto en el ordenador de mi centro de trabajo (con sólo un giga de ram), y también he notado algo.

    Coloco el enlace donde he encontrado la información:

    http://geekland.eu/aligerar-el-sistema-con-zswap/

    Espero que te sea útil.

    ResponderEliminar
  2. interesante, no conocía lo de Zswap... y parece ser que a partir del kernel 3.11 ya está disponible. Muy ilustrativo el artículo que enlazas. Encontré otro, mas sencillo para el que solo quiera activar 'zswap', aquí: http://linuxmanr4.com/2014/05/09/aumentar-la-velocidad-de-linux-con-zswap/.

    Yo, como dije, de momento no lo voy a usar, porque en mis hábitos actuales veo que apenas uso la SWAP. No obstante, tengo que probar a ver qué pasa con la SWAP si estoy, por ejemplo, 'recodificando' un video, y a la vez navegando con pestañas, etc... que alguna vez lo he hecho.

    Te agradezco mucho la aportación, 'anónimo' amigo.

    ResponderEliminar
  3. Entrada muy ilustrativa. Gracias por el "lustre".

    ResponderEliminar