Vaciar memoria caché en GNU/Linux

El método de funcionamiento de GNU/Linux respecto de la memoria RAM es algunas veces un poco dudoso. Puede que llegue un momento en el que parece que te quedas sin memoria, por que toda está ocupada, pero sin embargo no hay ningún proceso actualmente que la esté comiendo.

shell> free 
                   total        used          free   shared      buffers     cached
Mem:     2065176    1968620      96556          0     200424     413608

Esto, a nivel general, es por que los  procesos ocupan RAM y luego no la liberan completamente, sino que queda en memoria caché. Si el kernel detecta que necesita memoria, éste libera automáticamente la memoria caché y es ocupada por memoria usada.
Desde el kernel 2.6.16 existe la posibilidad de modificar este comportamiento de forma dinámica, gracias al valor de una variable escrita en el fichero /proc/sys/vm/drop_caches. Este fichero es usado por el kernel del sistema para saber el comportamiento que debe tener respecto de la memoria. Sus posibles valores son:
  • 0: No se hace nada.
  • 1: Libera la memoria caché.
  • 2: Libera la memoria de los i-nodos y dentries.
  • 3: Libera todo.
Por lo tanto, si lo que queremos es liberar la memoria caché, se deberá escribir el valor 1, tal como sigue.

shell> echo 1 > /proc/sys/vm/drop_caches
shell> free 
                  total          used           free     shared    buffers    cached
Mem:     2065176    1482876     582300             0        220     136676



No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios