¿Cómo limpio o deshabilito la memoria caché?

49

Después de que se inicia el sistema, en unos minutos mi caché de memoria se llena y comienza a usar el intercambio. Aquí hay una captura de pantalla de / proc / meminfo.

memoria

Sin embargo, si puedo desactivar este proceso / limpiar el caché una vez después de eso, creo que mi sistema se acelerará hasta cierto punto. Corrígeme si me equivoco aquí.

También probé la limpieza de memoria de Bleachbit, pero no parece limpiar la memoria caché correctamente. Además, la función aún se encuentra en una etapa experimental.

memoria de bleachbit

Ya había una pregunta similar publicada aquí: ¿Cómo puedo desactivar el caché de captación previa? , pero estaba relacionado con Ubuntu Server, y también las respuestas involucraban configuraciones manuales, etc.

Entonces, quiero saber si hay algún software para deshabilitar / habilitar Memory Cache para Ubuntu 12.04.

Bharadwaj Srigiriraju
fuente
¿Estás seguro de que esto resolverá tu problema? La memoria no se llena sin una razón. También tuve el problema de que mi memoria se estaba llenando, y lo rastreé hasta tracker-miner. Después de desinstalar todos los paquetes de seguimiento, mi problema desapareció. También tengo 4GB de memoria, y los chaches usan 2GB, pero no tengo ningún problema.
daniel kullmann
1
@danielkullmann: Se refiere a la memoria caché, no memoria utilizada por las aplicaciones ...
ish
@izx Sí, lo sé. Puede ser que busque la solución del problema equivocado. El kernel es lo suficientemente inteligente como para no llenar memoria con cachés cuando los programas lo necesitan. Por eso creo que sus problemas de memoria provienen de un programa que usa demasiada memoria.
daniel kullmann
@danielkullmann: Tengo curiosidad por saber cómo lo remontaste a un proceso que engulle toda esa memoria ... ¿Hay alguna herramienta / comando para eso?
Bharadwaj Srigiriraju
Acabo de usar el comando htop y ordené por uso de memoria.
daniel kullmann

Respuestas:

58

Nota: ¡ Linux NO está "comiendo" su RAM! Eche un vistazo a la excelente respuesta de Geirha a continuación para comprender por qué ...

Después de la nota anterior, si todavía siente que "limpiar" el caché podría ayudar, ciertamente puede intentarlo: es una línea desde la terminal:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

No hay una manera fácil de deshabilitar el caché, pero puede lograr el mismo efecto limpiándolo con la frecuencia que cada minuto , si desea:

  • Hazlo un trabajo cron
  • Presione Alt-F2, escriba gksudo gedit /etc/crontaby agregue esta línea cerca de la parte inferior:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Esto limpia cada 15 minutos. Puede ajustar a 1 o 5 minutos si realmente quiere cambiando el primer parámetro a *, o */5en lugar de*/15

Un trazador de líneas para conocer la RAM libre REAL, excepto el caché

La respuesta de Geirha explica los detalles, pero en resumen, obtienes la cantidad de megabytes gratis con:

free -m | sed -n -e '3p' | grep -Po "\d+$"

que en mi servidor de línea de comandos de 2 GB devuelve un estado extremadamente bueno 1835.

ish
fuente
3
Ergh! Eliminar el caché es bastante malo, pero ¿hacer un trabajo temporal para ello? Quiero decir, esto "resuelve" la pregunta, por así decirlo, pero eso no lo hace menos doloroso.
Reid
@izx: hmm ... así es como se crea un cronjob. Si voy a abandonar el caché periódicamente, ¿no significa que realmente estoy ralentizando el sistema? Si ese fuera el caso, creo que su respuesta suena más como una respuesta teórica que la respuesta de Geirha. : p Buena respuesta BTW ...
Bharadwaj Srigiriraju
1
@ ForbiddenOverseer: solo puse eso porque querías "deshabilitar" el caché, y soltarlo periódicamente es la única forma de lograrlo. Mi nota en la parte superior (y el enlace de geirha) establece claramente que el caché en realidad acelera su sistema la mayor parte del tiempo, incluso si parece que está "comiendo su RAM) --- así que sí, en mi opinión, estaría desacelerando su sistema , pero querías probarlo, así que acabo de responder a tu pregunta en lugar de molestarte y decirte que es una mala idea, ¡así que no deberías hacerlo! Solo te di el poder de experimentar ...: D
ish
1
Estoy usando Ubuntu Server 12.04 LTS como VDS. Estoy intentando un enfoque provisto en esta respuesta, pero constantemente estoy obteniendo tee: /proc/sys/vm/drop_caches: Permission denied. ¿Algun consejo?
Eimantas
44

¡Ayuda! ¡Linux se comió mi RAM!

www.linuxatemyram.com explica esto maravillosamente en forma de preguntas frecuentes, con lo esencial:

¿Que esta pasando?

Linux toma prestada memoria no utilizada para el almacenamiento en caché del disco. Esto hace que parezca que tienes poca memoria, ¡pero no lo estás! ¡Todo esta bien!

¿Por qué está haciendo esto?

¡El almacenamiento en caché de disco hace que el sistema sea mucho más rápido! No hay inconvenientes, excepto para los novatos confusos. ¡Nunca quita memoria de las aplicaciones de ninguna manera!

¿Qué pasa si quiero ejecutar más aplicaciones?

Si sus aplicaciones quieren más memoria, simplemente recuperan un fragmento que el caché del disco tomó prestado. ¡El caché de disco siempre se puede devolver a las aplicaciones de inmediato! Usted no tiene poca ram!

¿Cómo veo cuánto carnero gratis tengo realmente?

Para ver la cantidad de RAM que sus aplicaciones podrían usar sin intercambiar, ejecute free -m y mire la columna "disponible":

$ gratis -m
              total de buff / caché compartido gratis disponible disponible
Mem: 1504 1491 13 0 855       792
Intercambio: 2047 6 2041
Esta es tu respuesta en mebibytes.


Fuente: como se mencionó, el excelente www.linuxatemyram.com - visite para obtener más información.

geirha
fuente
1
@geirha: Gracias por el enlace ... ¡Fue muy informativo y me gustaron los experimentos que se dieron al final!
Bharadwaj Srigiriraju
@izx: tbh, me está costando decidir la respuesta aceptada. Sin mencionar que este enlace fue realmente informativo de cualquier otra manera ...;)
Bharadwaj Srigiriraju
@ ForbiddenOverseer: vea mi comentario en mi respuesta para obtener una respuesta detallada: le di la versión breve de por qué no debería hacerlo, pero luego respondí su pregunta de todos modos, dándole el poder de experimentar y probarlo usted mismo. Si no crees que limpiar / descartar el caché ayude, simplemente no lo hagas más :)
ish
@izx, me resultó un poco difícil hacer eso en este caso. Sin embargo, usted escribió un texto útil sobre el asunto, por lo que tal vez podría agregar la url a su respuesta y eliminarla.
geirha
No es necesario, su enlace en un excelente recurso; Acabo de incorporar algunas partes en la respuesta (con atribución) para que ahora sea una alternativa perfectamente válida (de hecho, ¡la mejor respuesta según lo visto por el público!) Gran trabajo, votado, ¡bienvenido a 5k!
ish
4

Para verificar su uso de memoria actual

 watch -n 1 free -m

o

 watch -n 1 cat /proc/meminfo

Para liberar espacio

 sudo sysctl -w vm.drop_caches=3

NOTA: esta acción no hará que su sistema sea más rápido ni afectará su estabilidad y rendimiento, solo limpiará la memoria utilizada por el kernel de Linux en cachés.

o

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

NOTA: Puede usar trabajos cron para programar los comandos anteriores para que se ejecuten a intervalos de tiempo específicos.

SilleBille
fuente