En el Kernel Linux, existe la posibilidad de configurar la proporción/relación de uso que se va a dar a la memoria RAM y a la memoria Swap en nuestro sistema.
Como la mayoría sabéis la memoria Swap, también conocida como memoria o espacio de intercambio es simplemente una partición asignada en un disco duro (del tamaño que estimemos necesario) cuya función es actuar como si de memoria RAM se tratase en el momento que hay poca memoria RAM disponible en el sistema.
Existe una gran penalización cuando usamos Swap en vez de RAM, ya que utilizamos el disco para el volcado de los datos que normalmente tendrían que ir en memoria física (RAM), esto provoca la ralentización general del sistema operativo, por lo que normalmente hay que intentar usar la menor cantidad de memoria Swap posible.
El objetivo de este artículo no es explicar las ventajas/desventajas de cada una de las memorias, sino saber cómo decirle a nuestro sistema operativo, y en concreto al Kernel Linux que porcentaje/ratio de memoria RAM usada es el límite para comenzar a utilizar swap.
Existe un parámetro a nivel de kernel, swappiness al que podemos asignarle un valor, de 0 a 100, que indicará la preferencia de la memoria Swap respecto a la RAM, la tendencia del sistema a mover procesos a disco en lugar de a memoria física.
Un valor de swappiness alto provocará que el kernel tenga tendencia a utilizar más memoria Swap, mientras que cuanto más bajo sea, mayor preferencia tendrá la memoria RAM. Por defecto creo recordar que el valor de swappiness es de 60:
$ cat /proc/sys/vm/swappiness 60
Para modificarlo a tiempo real, hacemos uso de sysctl del siguiente modo (como root):
sysctl vm.swappiness=30
Hay que tener en cuenta que de este modo perderemos el cambio tras un reinicio, para modificarlo de forma permanente editamos el fichero /etc/sysctl.conf
vim /etc/sysctl.conf
Y añadimos/modificamos:
vm.swappiness=30
Conviene probar diferentes valores hasta dar con el correcto, pues cada sistema puede tener unos requerimientos especiales, es interesante probar a tiempo real y controlar el rendimiento del sistema hasta dar con el valor óptimo para nuestros sistemas.