Bueno creo que hoy nos toca hablar un poco sobre linux, esta vez veremos sobre si hay o no un comando para liberar la cache.
Pero antes, por que busca la gente este comando ?
La respuesta es simple, no tengo idea, o ellos no tienen idea de lo que hace linux con la memoria..
Primero que nada, la gente dice joder… 4 aplicaciones abiertas y tengo la ram llena ? de un giga uso 980 megas.
Pero lo que no se dan cuenta es que de esas 980 megas de ram usada, el sistema usa solo 200 megas de ram y los otros 780 MB de ram son cache.
Es malo el cache ?
No es malo ni mucho menos, el cache es la memoria mas rápida que hay. Como en los procesadores el cache hace que funcione mas rápido.
Ahora bien el cache no se llena en linux tampoco, como funciona ?
Por ejemplo abrimos un programa en linux, carga en la memoria lo mas importante para ejecutarlo, y usa 35 megas de ram, luego cerramos ese programa y abrimos otro. que usa 120 megas de ram.
Pero de casualidad, necesitamos el programa que abrimos anteriormente. Así que lo llamamos y voila cargo mas rápido ? la primera vez duro 15 segundos pero esta otra vez duro solo 5 que paso ?
Lo que paso es la magia del cache, eso paso, el programa queda en el cache de la memoria y por eso carga mas rápido.
Umm ya.. pero se llena el cache ?
No el cache no se llena, en teoría, se libera solo. por ejemplo, cuando iniciamos o abrimos un programa para ver el periódico.. un rss reader, lo usamos y lo cerramos, el programa quedo en el cache.
Después de rato o varias horas, hemos abierto y cerrado muchos programas y casi tenemos llena nuestra giga de ram, unos 315 megas lo usan los programas y el resto hasta llegar casi al giga es cache.
No tenemos mas memoria.. que pasa si abrimos un programa nuevo ?
Bueno como tenemos mucho en cache este va a liberar un poco, que sera lo primero que borre del cache ? umm como llevamos mucho tiempo y solo hemos abierto el rss reader una vez el sistema supone que ya no lo necesitamos o no lo abriremos mas así que sera el programa que quite del cache, para hacer espacio para otros programas o ya sea para almacenar mas cache.
Ahora bien hace falta liberar el cache manualmente ?
Pues en teoría no hace falta ya que se libera solo, al menos que tengamos muchas cosas en el cache de programas que estamos seguros no vamos a usar y que podemos limpiar el cache. Eso si queremos o podemos limpiarlo después de usar un programa muy pesado y que no lo vamos a abrir mas, aunque claro podemos limpiar la cache y si queremos abrir ese programa no pasa nada, solo que tardara en abrir como la primera vez ya que no estará cacheado.
Ahora bien el glorioso comando que no hace falta usar pero existe para el que lo busca tanto.
# echo 1 > /proc/sys/vm/drop_caches
# echo 3 > /proc/sys/vm/drop_caches
# echo 3 > /proc/sys/vm/drop_caches
La explicación de esto ?
0: No libera nada.
1: Libera la pagecache.
2: Libera inodos y dentries.
3: Libera pagecache, inodos y dentries.
No entiendo un carajo de donde diablos sacaste la explicación ?
Ummmm ——> Drop_Caches
Aquí les dejo lo que es cache explicado con detalles técnicos que nunca me sale a mi así pero bueno… Via wikipedia
Un cache es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de cache frecuentemente usados en las computadoras personales: memoria cache y cache de disco. Una memoria cache, llamada también a veces almacenamiento cache o RAM cache, es una parte de memoria RAM estática de alta velocidad (SRAM) más que la lenta y barata RAM dinámica (DRAM) usada como memoria principal. La memoria cache es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.
Cuando un dato es encontrado en la cache, se dice que se ha producido un impacto (hit), siendo un cache juzgado por su tasa de impactos (hit rate). Los sistemas de memoria cache usan una tecnología conocida por cache inteligente en el cual el sistema puede reconocer cierto tipo de datos usados frecuentemente. Las estrategias para determinar qué información debe de ser puesta en el cache constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas memorias cache están construidas en la arquitectura de los microprocesadores. Por ejemplo, el procesador Pentium II tiene una cache L2 de 512 Kbytes.
El cache de disco trabaja sobre los mismos principios que la memoria cache, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es la cache del disco para ver si los datos ya están ahí. La cache de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro.
Eso es todo espero les sirva y aclare sus dudas.
Ahora bien aquí dejo también este tema sobre cache en linux y bsd que escribí hace tiempo. Y la diferencia de la gestion de los dos sistemas. Uno en memoria y otro en swap https://www.skamasle.com/un-poco-de-freebsd-y-linux-memoria-cache-en-linux-y-bsd-lista-de-algunos-comandos-de-bsd/
Si tienen dudas solo pregunten, al igual que comentarios y errores pueden dejarlos mas abajo !
Nos vemos
gracielaaa locooo, me re sirvio ya que mi cache se llena a los pedos y no se vacia sola tan rapido!!