¿Linux se come toda la RAM? ¿Consume mucha memoria? No te preocupes que tu RAM está bien

A veces suelen surgir preguntas como: "¿Por qué Linux está que me consume toda la RAM?", "Tengo abiertas solo 4 aplicaciones básicas pero aún así me sobran solo 30 MB de un total de 2 GB de memoria", "¿Qué hace exactamente Linux con mi memoria RAM, cómo la distribuye?". Estas son algunas de las interrogantes que todo usuario de Linux alguna vez se preguntó o se pregunta, sobre todo si se trata de usuarios recién llegados desde otros sistemas operativos y que están acostumbrados a otro tipo de situaciones.

Bueno pues, en este artículo veremos esos puntos para entender un poco la forma en que Linux hace uso de la memoria RAM, todo con el fin de mejorar el rendimiento del sistema. Así que si te sentías preocupado porque "supuestamente" Linux era un devorador de memoria, te comento que ya puedes respirar tranquilo, pues todo está perfecto y no hay ningún problema.

Vayamos por partes. Primero tenemos que hablar de la Caché de Disco.


¿Qué es la Caché de Disco?


Veamos la siguiente situación como un ejemplo: "Con tan solo 3 aplicaciones abiertas tengo la RAM llena, de 1 GB uso 978 MB". Lo que ese usuario no se da cuenta es que de esos 978 MB de RAM usada, el sistema usa solo 300 MB de RAM y los otros 678 MB son Caché.


Ah! Entonces el problema sería la famosa caché y debo desactivarla para que no me consuma más RAM

Pues, NO. Primero te voy a explicar qué es la Caché de Disco para que entiendas cómo trabaja. Comencemos por decir que no perjudica en nada al sistema, la caché es la memoria más rápida que hay. Entonces la Caché de Disco hace que el sistema sea mucho más rápido. No existen inconvenientes o lados negativos, a excepción de la confusión que genera haciéndonos creer que se "devora" la RAM.

La caché no le quita memoria a las aplicaciones de ninguna manera. Por ejemplo cuando abrimos un programa en linux, este carga en la memoria lo más importante para ejecutarlo, y usa digamos unos 25 MB de RAM, luego cerramos ese programa y abrimos otra aplicación que usa supongamos 80 MB de RAM, pero ocurre que casualmente necesitamos usar otra vez el programa que abrimos al inicio y que ya habíamos cerrado, así que lo abrimos y... ¿Qué pasó?, ha cargado más rápido !! La primera vez que corrimos el programa, el arranque duró 12 segundos, pero esta segunda vez duró solo 5... ¿Qué sucedió? La Caché de Disco, esa es la respuesta, lo que ocurre es que el programa ha quedado en la caché de la memoria y por eso la segunda vez cargó más rápido. Ese es básicamente el funcionamiento de la Caché, mejorar la velocidad.


Ok JaszAndre, ya entiendo qué es la Caché de Disco y por qué es tan útil, pero igualmente me está consumiendo mucha RAM al hacer su trabajo

El objetivo principal de la caché es mejorar el rendimiento del sistema, eso ha quedado claro. Ahora considera lo siguiente: La memoria RAM es un recurso físico gestionado por el sistema operativo y puesto a disposición de las aplicaciones, si dicho recurso no va a ser usado en otro fin, entonces ¿No te parece que es mejor usarlo para cualquier finalidad que pueda mejorar el rendimiento en vez que desaprovecharlo sin usar?. Ahora, si hablamos estrictamente, lo que sucede es que linux está "prestando" la memoria no asignada (no usada) a la Caché de Disco, por eso parece que el equipo está bajo de memoria, pero no es así, pues esta memoria "prestada" es devuelta inmediatamente cuando se le solicite. Es por ello que te aseguro que todo está perfecto! Además, debes saber que la caché no se llena y se libera sola.


Si pero ¿Qué pasaría si quiero usar más programas?, con la caché consumiendo casi toda la RAM, no queda nada para ejecutar mis aplicaciones.

Recordemos que Linux ha "prestado" la memoria no asignada a la Caché de Disco, entonces si tus aplicaciones necesitan más memoria, pues la caché de disco devuelve parte de lo que le ha sido "prestado" de manera que puedas ejecutar tu aplicación sin problemas. Es decir, la caché se va a liberar un poco.


¿Y qué será lo primero que se borre de la caché?

Bueno, el sistema busca aquel programa o programas que abrimos al inicio y que después de un largo tiempo no hemos vuelto a abrir, así que supone que ya no lo volveremos a usar y por tanto lo retira de la caché, de esta manera se devuelve espacio para otros programas o ya sea para almacenar más caché. Obviamente si ese programa quitado de la caché lo volvemos a abrir, entonces éste se vuelve a cargar en memoria.


Ah ya entendí!! Pero ahora tengo una pregunta, ¿Se puede evitar que linux "preste" memoria a la caché de disco?. Osea, ¿Se puede desactivar la caché?

No se puede deshabilitar la caché de disco. Te comento que la única razón de que alguien quiera deshabilitar la caché de disco es porque piensa que está reduciendo la memoria disponible para las aplicaciones ¡Pero eso NO es cierto! y ya te lo expliqué anteriormente. Nota además que la caché de disco hace que las aplicaciones carguen más rápido y se ejecuten de forma más fluida, pero JAMÁS limita la cantidad de memoria de los programas. Y por eso mismo no existe ninguna razón para deshabilitarla.


Perfecto, no deshabilitarla... Ya entendí. Tengo otra duda, ¿Porqué cuando abro un terminal y ejecuto free -m me dice que toda la RAM está ocupada?

Lo que sucede es que hay un malentendido con nuestra manera de leer el resultado de ese comando. Es decir lo interpretamos de forma incorrecta. A ver expliquemos esto con cuidado. Tanto tu como Linux están deacuerdo en que la memoria asignada a aplicaciones está "usada" ("used" en inglés) mientras que la memoria no asignada a nada está "libre" ("free" en inglés)... ¿Cierto? ¿Todo claro hasta ahí?... Perfecto. Ahora te pregunto ¿Cómo denominarías a la memoria que está utilizada para algo pero a la vez está disponible para las aplicaciones? Bueno, tu la podrías llamar "libre" pero Linux la llama "usada". Es ahí donde se produce la confusión al interpretar el resultado del comando free -m.

Aclaremos esto con una pequeña tabla:

Memoria que es... Tu la llamas... Linux la llama...
Asignada para aplicaciones Used Used
Asignada a "algo" pero disponible para aplicaciones Free Used
No asignada (no usada) Free Free

Ahora, ese "asignada a algo" es lo que el comando free -m denomina "buffers" y "cached". Como nuestra terminología y la de Linux son distintas, entonces es ahí donde se genera esta confusión y pensamos que estamos bajos de memoria RAM, cuando en realidad no es así.


Ah ya veo!!! Entonces, siguiendo tu explicación ¿Cómo puedo ver cuánta memoria RAM libre tengo realmente?

Te explico. Ejecuta en un terminal el ya conocido comando free -m y fíjate en la columna "free" de la línea "-/+ buffers/cache". Esa es la memoria real, libre y disponible para aplicaciones (en megabytes), esa es la verdadera memoria libre que te queda.


Si una persona no sabe cómo interpretar estos números, entonces probablemente pensará que solo quedan 250 MB libres cuando en realidad hay 1513 MB completamente libres y disponibles.

Ahora, posiblemente por ahí algún lector me diga: ¿No sería más fácil abrir el monitor de recursos del sistema y ver la RAM usada?


Totalmente cierto, y si vemos la imagen anterior, podemos notar que la cantidad de RAM consumida es 1.2 GB de un total de 2.7 GB, así por medio de una simple resta obtenemos que la memoria libre es 1.5 GB, resultado que habíamos conseguido con la explicación del comando free -m.

Entonces, si con el Monitor de Recursos del Sistema es más fácil saber la cantidad exacta de memoria RAM consumida ¿Por qué tanto asunto con el comando free y la terminología de Linux? Bueno, básicamente lo hice para desvanecer esa duda que había con el comando en cuestión. Un amigo mio (algo nuevo en el mundo Linux) me decía que por qué eran diferentes los resultados, pues el monitor de recursos marcaba que habían 1.5 GB libres mientras que el comando free -m decía que solo habían 250 MB disponibles. Yo le dije que le creyera al monitor de recursos, pero este muchacho es curioso y no me aceptó esa simple respuesta sin explicarle el por qué del asunto. Por eso tuve que explicarle de la manera en que hice este post, hablándole de la caché de disco y sobre todo de su error al leer los números del resultado de free -m.

En fin, esa misma "curiosidad" posiblemente lleve a los nuevos usuarios llegantes a linux a preguntarse lo mismo "¿Por qué son distintos ambos resultados?", así que decidí dejarles esta información que espero ayude a despejar sus dudas.

Bueno, esto sería todo en este boletín informativo. ¿Dudas, preguntas o aclaraciones? Los comentarios están abiertos para que me digas lo que piensas. Nos vemos en una próxima entrada.

Fuente | Artículo basado en la publicación de Help! Linux ate my ram

0 comentarios