Uso de Swap en Linux

En maquinas con memoria RAM de sobra, a veces podemos ver un uso excesivo de swap en linux. Utilizar swap no es malo, el sistema mueve los datos de memoria que menos usa. Tiene todo el sentido. Sin embargo, en el caso de un servidor que tengo con discos SSD, no me interesa que se escriba innecesariamente en ellos, con lo que he decidido reducir la tendencia a swapear.

El kernel linux tiene una propiedad ajustable llamada «Kernel Swappiness«. Se trata de la tendencia del kernel a pasar datos a swap. Según la distribución, puede tener un valor u otro, entre 0 y 100. A mayor valor, mayor cantidad de datos de memoria intentará volcar a swap.

En el caso concreto de este servidor, un Ubuntu Server 10.04, este valor es 60. Podemos comprobarlo de la siguiente manera:

cat /proc/sys/vm/swappiness

Podemos ajustarlo de forma temporal reescribiendo el valor hasta el próximo reinicio:

sudo sysctl vm.swappiness=15

También podemos hacer estos cambios permanentes, editándolo en /etc/sysctl.conf y añadiendo esta linea:

vm.swappiness=15

¿Es malo reducir el uso de swap?
He visto que entran usuarios buscando en google si es malo reducir el uso de Swap. No tiene por que ser malo si tu sistema dispone de bastante memoria como para poder tenerlo todo en RAM. Sin embargo si puede ser contraproducente si tu equipo tiene memoria RAM insuficiente porque entonces estará metiendo y sacando de swap de forma continua y si que lo notarás.