Cómo liberar memoria caché de la RAM | Ubuntu

Hola a todos. Muchos de los sistemas operativo mantienen una caché que les permite guardar información temporalmente, para que pueda ser más rápido el acceso a programas, archivos, etc.; de hecho, es el Kernel de los sistemas basados en GNU/Linux que se encarga de gestionar ésta memoria caché, por cuanto nosotros no tenemos porqué estarle ayudando (en teoría). En ésta entrada, veremos cómo podemos liberar la memoria caché de la RAM únicamente para casos especiales y si en realidad lo sintamos necesario.

Para entender el caso mejor, se dará un ejemplo: digamos que nosotros abrimos un programa X, y es un programa que utilizamos con frecuencia; al cerrarlo, no desaparece del todo de la memoria sino que se almacena dentro de la memoria caché, así para cuando próximamente lo abramos (si digamos no hemos reiniciado la computadora), se abrirá mucho más rápido que la primera vez. Si en un dado caso abrimos más programas que demanden más consumo de memoria RAM, el Kernel entiende la situación y empieza a liberar poco a poco la caché, de tal manera que es improbable que la cache nos de problemas… pero bueno, como mencioné, pueden haber casos especiales…

Si nos quedamos sin memoria cache y la memoria SWAP se dispara, el resultado será lentitud; si se trata de un Ubuntu Server que rara vez se apaga/reinicia (dado su rol), en algún momento acabará saturándose la memoria o llegar a un consumo tal que se vuelva lento… si, no debería pasar, pero sucede. Finalmente, después de haber cerrado un programa que consume muchos recursos, para poder ejecutar otro programa que de igual manera consume muchos recursos, podría ser buena idea liberar el caché antes.

Luego de todo lo dicho, veamos cómo liberar la memoria cache de nuestra RAM

La línea de comando que se mostrará, modifica el archivo drop_caches que se encuentra en /proc/sys/vm/ ; el archivo puede tener 4 posibles valores para determinar cómo el Kernel gestionará la caché. Veamos cada posible valor:

  • 0 → Valor por defecto al encender la computadora.
  • 1 → Forzamos al Kernel a liberar la pagecache; o sea, libera un poquito la memoria caché de la RAM.
  • 2 → Forzamos al Kernel a liberar los inodos y dentries; o sea, libera un poco más la memoria caché de la RAM.
  • 3 → Forzamos al Kernel a liberar la pagecache, los inodos y dentries.

¿Hay riesgos en utilizar el valor 3?, considero que no; además, éste cambio no es persistente y solo se libera de la cache los objetos que no se están usando en el sistema en ese momento.

Una vez dicho lo dicho, veamos las líneas de comando:

sudo -s
sync ; echo 3 > /proc/sys/vm/drop_caches
exit

En éste ejemplo, el valor utilizado en la segunda línea ha sido el 3, o sea, liberará la pagecache, inodes y dentries.

El sudo -s y exit los he colocado para que la segunda línea se ejecuta con privilegios de root; de hecho, bien se podría crear un script.sh , dejar únicamente la 2° línea, asignarle permiso de ejecución (sudo chmod +x script.sh) y luego ejecutarlo con sudo ./script.sh

Les coloco un ejemplo del funcionamiento:

Para éste ejemplo, el equipo cuenta con 251G de RAM; como se puede apreciar, antes de ejecutar la línea de comando, la memoria libre en RAM es de 12G y la caché es de 149G; luego, la memoria libre es de 160G y la caché de 1.5G… ¿gran cambio verdad?.

Espero que les sea de utilidad. Saludos.

Comentarios por Facebook

comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*