Cómo impedir el uso del área de intercambio de memoria antes de que se agote la RAM.

Cómo impedir el uso del área de intercambio de memoria antes de que se agote la RAM

Miguel Menéndez

Es posible que te hayas encontrado con una máquina que se ahoga porque el volcado de datos de la memoria RAM a disco (partición o archivo swap) está consumiendo prácticamente todo el tiempo de procesador.

Si utilizas top (si el sistema no está completamente ahogado), verás que el proceso kswapd0 está consumiendo cerca del 100% del tiempo de procesador y, aunque la RAM está al 40%, se está haciendo uso de la partición o el archivo de intercambio de memoria (swap).

$ top
top - 10:05:40 up 24 min,  3 users, load average: 12,17, 8,62, 5,53
Tasks: 256 total,   8 running, 248 sleeping,  0 stopped,   0 zombie
%Cpu(s): 46,4 us, 29,4 sy,  0,0 ni, 10,9 id, 11,2 wa, 1,3 hi,  0,8 si, 0,0 st
MiB Mem :   7820,1 total,    101,1 free,   3645,8 used,  4073,2 buff/cache
MiB Swap:      0,0 total,      0,0 free,      0,0 used,  3049,6 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    105 root      20   0       0      0      0 R  99,9  0,0   0:15.57 kswapd0
[...]

Esto se debe a que el valor por defecto del parámetro swappiness está definido en 60 (0 - 100). Para impedir el uso de la swap hasta que se agote la RAM, el valor de swappiness debería ser 1 (usar la swap cuando a la RAM le quede un 1% libre). Si lo que interesa es que no se haga uso de la swap en ningún momento, ni aunque la RAM se agote por completo, el valor de swappiness debería ser 0.

Comprueba el valor asignado al parámetro swappiness:

$ cat /proc/sys/vm/swappiness

Lo más probable, como decía antes, es que devuelva 60.

Para cambiar ese valor temporalmente, hasta que se reinicie la máquina:

$ sudo -i
# echo 1 >/proc/sys/vm/swappiness

Si queremos que el cambio sea permanente:

$ sudo sysctl vm.swappiness=0

Fuente: Wikipedia .

Imagen de cabecera de rleathers .

Comentarios

¿Has encontrado un error? ¿Crees que algo podría mejorarse? No dudes en comentármelo y estaré encantado de echarle un vistazo.