¡Linux se come mi RAM!

Linux se come mi RAM

¡Linux se come mi RAM!

¡Ayuda! ¡Linux se come mi RAM!

En varias ocasiones me han preguntado, o usado como argumento en contra, por qué en las últimas versiones de los sistemas operativos no queda casi RAM libre y está siempre ocupada. Las variantes son múltiples: «No me queda memoria libre», «la nueva versión de Windows es peor me consume toda la memoria»…

Finalmente, alguien ha decidido dar respuesta a esta pregunta centrándose en Linux pero, desgraciadamente, en inglés. Este artículo es una traducción libre de Help! Linux ate my RAM!.

Preguntas y respuestas

¿Qué sucede?

Linux está «prestando» la memoria no asignada a la cache de disco. Por esto parece que el equipo está bajo de memoria pero no es así ¡Todo está bien!

¿Por qué hace eso?

La cache de disco hace que el sistema sea mucho más rápido. No existen inconvenientes, a excepción de la confusión que genera. No le quita memoria a las aplicaciones de ninguna manera.

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

Si las aplicaciones necesitan más memoria, se devuelve un bloque prestado a la cache de disco. La memoria ocupada por la cache de disco se puede devolver a las aplicaciones inmediatamente.

¿Necesito incrementar la swap?

No, la cache de disco sólo toma prestada la RAM que no está siendo usada por las aplicaciones. No utiliza swap. Si las aplicaciones necesitan más memoria, se utiliza parte de la cache de disco y no harán swapping.

¿Cómo puedo evitar que Linux haga esto?

La respuesta corta: No se puede deshabilitar la cache de disco.

La única razón que alguien puede tener para deshabilitar la cache de disco es porque piensan que está reduciendo la memoria disponible para las aplicaciones ¡pero no es así!

La caché de disco hace que las aplicaciones carguen más rápido y ejecuten de forma más fluida, pero nunca jamás limita la cantidad de memoria de las aplicaciones.

Por eso no existe ninguna razón para deshabilitarla.

¿Por qué top y free indican que toda mi RAM está utilizada si no es así?

Es sencillamente una confusión de términos.

Todos, incluido Linux, coincidimos en que la memoria asignada a aplicaciones está «usada» mientras que la memoria no asignada a nada está «libre». El problema es ¿cómo denominamos a la memoria que está utilizada para algo pero disponible para aplicaciones?

Nosotros respondemos «libre» mientras que Linux la considera «usada»

Memoria Persona Linux
Asignada aplicación Usada Usada
Asignada «algo» (no aplicación) Libre Usada
No asignada Libre Libre

Ese «asignada en algo» es lo que top y free denominan «buffers» o «cached«. Como nuestra terminología y la de Linux difieren, se genera esta confusión.

¿Cómo puedo ver cuánta memoria RAM libre tengo realmente?

Para saber cuánta memoria RAM está libre hay que ejecutar free -m y fijarse en la columna «free» de la línea «-/+ buffers/cache«. Esa es la memoria disponible para aplicaciones (libre) en megabytes:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1504       1491         13          0         91        764
-/+ buffers/cache:        635        869 
Swap:         2047          6       2041
$

La interpretación habitual hace saltar la alarma al ver que la RAM está ocupada al 99% (13 MB libres) cuando realmente sólo se está en uso el 42%

¿Cómo puedo verificar que esto es verdad?

Ejecutando algunos de los programas y experimentos con la memoria y cache de Linux. Se necesitan algunos conocimientos de programación en sistemas Linux y conocer inglés.

Conclusiones

En la actualidad, la memoria RAM es un recurso físico gestionado por el sistema operativo y puesto a disposición de las aplicaciones en forma de memoria virtual. Si dicho recurso no va a ser utilizado en otro fin es mejor usarlo para cualquier finalidad que pueda mejorar el rendimiento, funcionamiento del sistema que desaprovecharlo sin usar.

Por último, gracias al autor de la página original: vidarholen.net

3 comentarios

  1. electron222 · febrero 12, 2012

    Genial justo la información que buscaba, muchas gracias ^_^

  2. Manuel Rivera · agosto 5, 2012

    Como veo cuanto consume de ram? Otra pregunta: Linux usa la memoria ram y la particion como memoria swap? Gracias

    • Oscar · agosto 5, 2012

      Para ver la RAM que se utiliza hay que preguntarle al SO. La forma más básica es ejecutar ‘free’ para ver un resumen o un ‘top’ para ver el % usado por proceso.

      En la actualidad las aplicaciones realmente no tienen memoria RAM: Linux proporciona a cada proceso una visión de toda la RAM que puede direccionar (2^bits de la máquina) libre y, entre bambalinas, simula esa memoria utilizando la RAM+swap disponible. Es lo que se denomina memoria virtual.

Los comentarios están cerrados.