Cuando tenemos una situación en que el servidor tiene mucha "memoria utilizada", sin embargo están prácticamente todas las aplicaciones abajo, y el kernel no ha liberado esta memoria.
Nota 1: esto es aplicable a un kernel sobre la versión 2.6.16
Nota 2: antes de ejecutar este comando, realice primero un "sync" para asegurar que todos los objetos en caché sean liberados
Nota 3: esto es una operación no-destructiva, los objetos "sucios" (dirty) no son liberables
Por ejemplo:
Simplemente realizamos:
# sync
# echo 3 > /proc/sys/vm/drop_caches
# echo 0 > /proc/sys/vm/drop_caches
Y el sistema quedará:
Significados
echo 0 > /proc/sys/vm/drop_caches
Estado normal (no libera nada)
echo 1 > /proc/sys/vm/drop_caches
Libera los pagecache
echo 2 > /proc/sys/vm/drop_caches
Libera dentries e inodos
echo 3 > /proc/sys/vm/drop_caches
Libera pagecache, dentries e inodos (Libera Todo)
Donde:
pagecache: Memoria caché de la paginación.
dentries: (Directory Entries) Representa la relación de forma estructurada que existe entre directorios-archivos.
inodes: Son nodos índice de archivos y directorios que usa el Sistema de Archivos para administrar las actividades posibles de dichos archivos y directorios guardados en disco o memoria. Contiene la metadata de los archivos y directorios: permisos, tamaño, propietario, última fecha de acceso, creación, modificación, etc…
Referencias:
http://www.commandlinefu.com/commands/view/2888/release-memory-used-by-the-linux-kernel-on-caches
http://www.kernel.org/doc/Documentation/sysctl/vm.txt
http://cyb3rpunk.wordpress.com/2011/04/28/liberar-memoria-en-gnulinux/
2 Comentarios