La página www.linuxatemyram.com explica muy sencillamente como funciona la cache de disco en Linux. La he traducido como ejercicio y para ofrecerla a quien no la comprenda en inglés.
¿Qué está pasando?
Linux esta pidiendo prestada la memoria no usada para cachear el disco. Esto hace parecer como que estas bajo de memoria, ¡pero no lo estas! ¡Todo esta bien!
¿Por qué está haciendo esto?
Cachear el disco hace el sistema mucho más rápido. No hay desventajas, excepto el confundir a los principiantes. No toma memoria de tus aplicaciones de ningún modo. ¡Nunca!
¿Y si quiero ejecutar más aplicaciones?
Si tus aplicaciones quieren más memoria, sólo tienen que recuperar un pedazo de lo que la cache de disco pidió prestado.
¿Necesito más swap?
No, la cache de disco sólo pide prestado la RAM que las aplicaciones actualmente no quieren. No usará memoria virtual (swap). Si las aplicaciones quieren más memoria, solo tienen que recuperarla de la cache de disco. Las aplicaciones no empezarán a intercambiar memoria con la memoria virtual (swaping)
¿Como interrumpo a Linux de hacer esto?
No puedes deshabilitar la cache de disco. La única razón en la que alguien querría deshabilitar la cache de disco es porque piensa que toma memoria de sus aplicaciones, ¡lo cual no hace! La cache de disco hace que las aplicaciones se ejecuten más rápido y más suavemente, pero NUNCA JAMÁS tomará memoria de ellas. Por lo tanto, no hay absolutamente ninguna razón para deshabilitar la cache de disco.
¿Por qué top y free dicen que toda mi RAM esta usada si no es así?
Esto es un mal entendido en los términos. Ambos tú y Linux estáis de acuerdo que la memoria tomada por aplicaciones es “usada”, mientras que la memoria que no esta usada por nada es “libre”
¿Pero como llamas a la memoria que es usada por algo y que esta disponible para las aplicaciones?
Tú la llamarías “libre”, pero Linux la llama “usada”.
Memoria es | Para ti es | Para Linux es |
Usada por aplicaciones | Usada | Usada |
Disponible para aplicaciones pero usada por algo | Libre | Usada |
No usada por nada | Libre | Libre |
Este “algo” es lo que los comandos top y free llaman “buffers” y “cached”. Ya que la terminología entre tú y Linux difiere, piensas que estas bajo de RAM cuando realmente no lo estas.
¿Como puedo ver cuanta RAM libre realmente tengo?
Para ver cuanta RAM esta libre para uso de tus aplicaciones, ejecuta el comando free -m y mira la fila que dice “-/+ buffers/cache” en la columna que dice “free”. Esa es tu respuesta en megabytes:
0 1 2 3 4 5 6 7 |
$ free -m total used free shared buffers cached Mem: 1504 1491 13 0 91 764 -/+ buffers/cache: 635 <span style="border: 1px solid; color: #00ff00; font-weight: bold;">869</span> Swap: 2047 6 2041 $ |
Si no sabes como leer los números, pensarás que la RAM esta al 99% llena cuando en realidad es sólo 42%.
¿Como puedo verificar estas cosas?
Ve a esta página para más detalles y como puedes experimentar con la cache de disco.