viernes, 28 de diciembre de 2012

Liberar memoria caché en Linux

A partir de la versión 2.6.16 del kernel es posible liberar la memoria caché del sistema si tenemos privilegios de root, de la siguiente manera:

# sync && echo 3 > /proc/sys/vm/drop_cache
Con sync forzamos una sinrcornización de los datos que hay en caché con los datos que hay en disco. Cuando el comando sync acabe satisfactoriamente, se ejecutará la liberación de memoria caché. Para ver los resultados de vaciar la memoria caché, podemos ejecutar:

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free
Y este es el resultado:

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free
             total       used       free    shared   buffers    cached
Mem:       3986932    3868316     118616         0    145628   3037244
-/+ buffers/cache:     685444    3301488
Swap:      5229148        112    5229036 

             total       used       free    shared   buffers    cached
Mem:       3986932     764760    3222172         0       636     59216
-/+ buffers/cache:     704908    3282024
Swap:      5229148        112    5229036

Otras opciones de liberar memoria caché en Linux:

echo 0 > /proc/sys/vm/drop_cache # el kernel administra la memoria
echo 1 > /proc/sys/vm/drop_cache # liberar pagecache
echo 2 > /proc/sys/vm/drop_cache # liberar dentries e inodes
echo 3 > /proc/sys/vm/drop_cache # liberar pagecache, dentries e inodes

Definiciones:
  • Pagecache: Paginación en memoria caché
  • Dentries: Directory entries, relación estructurada entre directorios y ficheros
  • Inodes: Índice de archivos utilizado por el sistema de ficheros dónde almacena los metadatos de cada archivo (tipo, propietario, permisos, fecha de creación....)

No hay comentarios: