Liberar memoria RAM caché en GNU/Linux
La memoria caché es aquella que almacena información de los procesos con el objetivo de ser reutilizada para lograr que se lleven a cabo procesamientos futuros de manera casi instantanea. Linux por sí mismo almacena esta memoria y la reutiliza cuando es requerida, pero tambien la libera cuando otro proceso requiere memoria RAM.
En Linux, desde la versión 2.6.16 del Kernel es posible para el usuario «administrar» la liberación de la memoria caché mediante el archivo /proc/sys/vm/drop_caches
No sé por qué alguien querría manejar manualmente este tipo de procesos si el Kernel por sí mismo lo hace a su manera (¿paranoia?) y nunca he sabido de algún inconveniente debido a esto.
Lo única ventaja que se me ocurre de realizar esto es para hacer una especie de «refresh» sin tener que reiniciar el Sistema; cerrar todas las aplicaciones y darle prioridad a aplicaciones que se vayan ejecutando en cierto orden. Y no estoy seguro que tenga que recurrirse a esto para lograrlo, pues al abrir una aplicación que requiera memoria, Linux se encargará de liberarla para darle prioridad a la nueva aplicación que lo requiera.
La tarea consiste simplemente en asignarle (como root) un valor del 0 al 3 al archivo /proc/sys/vm/drop_caches:
echo 0|1|2|3 > /proc/sys/vm/drop_caches
El significado de cada valor:
- 0 » Cede el control al Kernel para que administre la memoria
- 1 » Libera pagecache
- 2 » Libera dentries y inodes
- 3 » Libera pagecache, dentries y inodes
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…
Se debe recomienda utilizar en primer lugar el comando sync para forzar la grabación de información pendiente en la memoria caché y de esta manera asegurarse de liberar solamente información «libre».
sync ; echo 0 > /proc/sys/vm/drop_caches sync ; echo 1 > /proc/sys/vm/drop_caches sync ; echo 2 > /proc/sys/vm/drop_caches sync ; echo 3 > /proc/sys/vm/drop_caches
Fuentes:
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html
http://redes-privadas-virtuales.blogspot.com/2009/07/liberar-la-memoria-ram-cacheada-en.html
:wq
Te vas a ir al infierno si sigues jugando a las manitas calientes con /proc …
Muy interesante. Util cuando sabes que vas a abrir un programa pesado solo una vez o cuando esta muy cargada.
Para quien no sepa, con el comando free -m se puede visualizar el uso de la cache.
Salu2
Tienes fanses http://www.rugebiker.com/liberar-memoria-ram-cache-en-linux/
Hola a todos, estoy teniendo serios problemas en mi archlinux y la memoria cache, con estos comandos lo he solucionado, pero resulta que lo tengo que repetir cada cierto tiempo y mas aun cuando estoy copiando de una memoria USB a la pc, existe alguna forma de ponerle un limite a este memoria o hacerle algo?, a causa de esto la pc se me esta colgando y tengo 2 GB de ram, asi que no creo que el motivo ande por poca memoria.
Saludos y cualquier sugerencia sera bien recibida.
No entiendo lo de «ponerle un límite a este memoria».
Intenta pasándole el valor «0» a /proc/sys/vm/drop_caches para que el Kernel tome el control de la memoria.
Verifica que tengas la swap activada, lanza «free -m» y mira la fila de «swap», si no está activada, lanza «swapon -a».
Ejecuta «cat /proc/sys/vm/swappiness» para verificar el valor swapiness que tiene tu kernel, 60 es el valor «ideal».
Intenta incrementando la memoria compartida (shm): https://wiki.archlinux.org/index.php//dev/shm
Hola, dime lograste solucionar tu problema de saturación de RAM, si lo has logrado podrías explicarme como lo hiciste porque estoy teniendo el mismo problema con uno de mis servidores debían 6
Hola carlos, no, no lo logré, tambien que dejé (por ahora) de utilizar ArchLinux (que era donde tenñia este problema), con la opción que aparece en este blog funciona, pero de forma temporal, seguí el consejo de @ramonovski y todo esta correcto. Lo que puedo pensar es que sea un error o algo mal del kernel que yo puse, tal vez con las nuevas actualizaciones esto no pase, no he probado.
Puede que una tarea en el cron que ejecute este comando cada cierto tiempo sea una alternativa, habría que probar o que los mas experimentados comenten.
Saludos
Bueno a mi me esta pasando con un servidor en producción. Instalé debían 6, con lenny andaba todo bien, pero ahora con debían 6 tengo problemas en Liberar la pagecache, esta crece hasta saturar mi RAM.
[…] http://cyb3rpunk.wordpress.com/2011/04/28/liberar-memoria-en… http://www.linuxinsight.com/proc_sys_vm_drop_caches.html […]
pana cual es la contraseña sudo?¿?
me dice esto cuando pongo los comandos:
[sudo] password for canaima..