¿Como limpiar los caches de memoria en Gnu/Linux?

Es común que luego de varias horas de trabajo y muchas aplicaciones abiertas, el sistema comience a tornarse un poco lento debido a toda la memoria acaparada por el cache. La mayoría de los usuarios que hacen un uso extensivo del sistema suele reiniciar éste, sin embargo hay una forma bastante sencilla de limpiar los caches del sistema sin necesidad de reiniciar.

Introducción.

Es posible obligar al sistema a vaciar los caches cambiando temporalmente el valor de /proc/sys/vm/drop_caches. El parámetro vm.drop_cache tiene cuatro posibles valores:

  • 0 – El sistema opera normalmente haciendo uso de los caches.
  • 1 – Se obliga al sistema a vaciar las páginas del cache (pagecache).
  • 2 – Se obliga al sistema a vaciar las entradas de directorios (dentries) y nodos índice (inodos).

Las páginas del cache a veces son denominadas de manera ambigua como cache de disco, y consiste en un almacenamiento previo (buffer) transparente de páginas en la memoria principal de un sistema operativo, y son utilizadas para un más rápido acceso a los programas y aplicaciones recientemente utilizados.

El núcleo de Linux supervisa los ficheros utilizando nodos índices (inodos o inodes) usualmente derivados de un sistema de ficheros de bajo nivel desde nodos índice en el disco.

Un nodo índice puede tener varios nombres, y es por ésto que existe un nivel de entradas de directorios (dentries) que representan las rutas e el sistema de ficheros, acelerando las operaciones de búsqueda.

Procedimiento

Muchos usuarios cambian el valor de vm.drop_caches cambiándose a root y utilizando el mandato echo para cambiar éste.

su -l
echo "3" > /proc/sys/vm/drop_caches

Puede hacerse exactamente los mismo, de forma más simple, utilizando el mandato sysctl. el procedimiento requiere primero utilizar el mandato sync a fin de escribir en el disco duro cualquier consignación (commit) pendiente. De modo tal, puede realizarse lo siguiente:

su -l
/bin/sync
/sbin/sysctl -w vm.drop_caches=3

Omitir utilizar el mandato sync puede ocasionar se pierdan datos en memoria (documentos y datos en general) recién modificados que normalmente se hubieran escrito en el disco duro.

Una vez realizado lo anterior, es importante volver a dejar el valor 0 de vm.drop_caches a fin de que el sistema vuelva a operar normalmente (algo que omiten la mayoría de los documentos disponibles en Internet), siendo que de otro modo el sistema se tornaría lento e ineficiente pues dejaría de hacer uso de la memoria y utilizará directamente el disco duro para lo que involucra caches.

/sbin/sysctl -w v.drop_caches=0

Para efectos prácticos, conviene utilizar el mandato free a fin de comparar el antes y el después de vaciar los caches:

su -l
/bin/free -m
/bin/sync
/sbin/sysctl -w vm.drop_caches=3
/bin/sleep 3
/sbin/sysctl -w vm.drop_caches=0
/bin/free -m

El procedimiento se puede poner en como tarea programada en el fichero /etc/crontab a fin de hacer una limpieza de caches cada cierto tiempo. Afortunadamente el núcleo de Linux tiene un muy buen manejo de memoria y solo es necesario limpiar caches en situaciones de poca memoria RAM y trabajo extensivo que involucrá aplicaciones muy demandantes en cuanto a recursos de sistema. Sugiero poner el siguiente contenido en un nuevo fichero denominado /usr/local/bin/limpiar_caches.sh y solo utilizarlo cuando verdaderamente sea necesario:

#!/bin/bash

/bin/sync
/sbin/sysctl -w vm.drop_caches=3
/bin/sleep 3
/sbin/sysctl -w vm.drop_caches=0
About these ads

Publicado el 17 agosto , 2010 en Internet. Añade a favoritos el enlace permanente. 5 comentarios.

  1. Cítame la fuente Pablito, que eso no lo has escrito tú ni de lejos.

  2. No sé si será un artículo tuyo, como sugiere Alejandro, pero en cualquier caso aplaudo el artículo.

    Me gustan mucho los artículos que no sólo te dicen “haz tal cosa y tu sistema irá mejor”, sino que tratan de explicarte el porqué de todo, al más puro estilo de mi añorada tuxpepino, que la sigo teniendo entre mis marcadores por si algún día resucita… :roll:

    • Que vuelva tuxpepino!!!! que pedazo de blog que era! todo paso a paso, explicando punto por punto, imposible no aprender…
      Allí vi un tutorial de SSH que es uno de los mas completos que leí hasta ahora
      Saludos

      Este blog tambien me gusta eh =)

  1. Pingback: Top 5 (22-08-10) « El blog de Iyan

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 86 seguidores

A %d blogueros les gusta esto: