Archivo del sitio

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

Escudo de la profesión informática

Escudo de la Facultad de Informática (Universidad Politécnica de Madrid)

Escudo de la Facultad de Informática (UPM)

Aprovechando el poco tiempo que tengo, y con el ánimo de volver a una rutina de publicación al menos semanal, voy a contestar una pregunta sobre la profesión informática, tan en el candelero últimamente: ¿qué es esa cosa rara que tiene de escudo?

El emblema de la Informática es el establecido en la resolución de 11 de noviembre de 1977 para las titulaciones universitarias superiores de informática:

Está constituido por una figura representando en su parte central un núcleo toroidal de ferrita, atravesado por hilos de lectura, escritura e inhibición. El núcleo está rodeado por dos ramas: una de laurel, como símbolo de recompensa, y la otra, de olivo, como símbolo de sabiduría. La corona será la de la casa real española, y bajo el escudo se inscribirá el acrónimo de la organización.

La respuesta es muy sencilla: la unidad básica de una memoria de ferrita. Estas memorias tuvieron su apogeo durante un par de décadas (primera mitad de la década de 1950 hasta mediados de la década de 1970). Fueron reemplazadas en la segunda mitad de la década de 1970 por las memorias basadas en semiconductores.

Pero, ¿qué es una memoria de ferrita o más precisamente memoria de toros de ferrita?

Lee el resto de esta entrada

Falta memoria RAM

La pregunta difícil de la semana (menos mal que no me ha tocado directamente): “El Windows de mi flamante nuevo PC con 4 GB de RAM (más vale que zozobre y no que zofalte) dice que sólo hay algo más de 3 GB… ¿Qué pasa?”. Posiblemente, se deba a un fallo en una de las memorias y por eso no se detecta. Se abre el equipo y empieza el test: cambio memoria arriba, cambio memoria abajo y parece que todas funcionan. Tras probar diversas combinaciones resultan que sólo falla al meter los 4 juntos :( y tenemos un bonito expediente X.

La explicación es sencilla. En la actualidad, los sistemas operativos tienen versiones de 32 y 64 bits. Este número indica el tamaño máximo de una dirección de memoria y, por lo tanto, la cantidad máxima de memoria que puede manejar el sistema. Suponiendo un sistema operativo de 32 bits, el tamaño máximo de memoria es 232 direcciones = 4Gb. Según esto, cualquier sistema de 32 bits debería ser capaz de “ver” los 4Gb de RAM.

Sin embargo, no todas esas direcciones pueden utilizarse. Una parte de ellas permiten acceder a las tarjetas conectadas a la máquina: son los denominados dispositivos proyectados en memoria. Cuando se accede a una dirección de memoria reservada a estos dispositivos (habitualmente, las más altas) se redirigen al dispositivo en lugar de a la memoria RAM aunque realmente exista. En los ordenadores actuales, esta técnica es empleada por múltiples dispositivos que reservan rangos disjuntos. Debido a esto, de los 4GB gestionables por un sistema operativo de 32 bits, parte de ellos (algo más de medio GB) están reservados para acceder a los dispositivos. Esto deja algo menos de 3’5Gb de memoria RAM accesibles.

Mapa de memoria para un SO de 32 y 64 bits

Un ejemplo es la tarjeta gráfica. Las actuales son de 256 ó 512 Mb. El sistema necesita direcciones para acceder a esa información y asigna ese espacio entre los 4Gb disponibles reduciendo las direcciones disponibles para la memoria RAM. Esto no significa que la memoria no esté sino que no puede accederse por el límite de direcciones.

[ Publicado originalmente el 25 de junio de 2007 ]
 
Imagen vía:
The Inquirer ES
Seguir

Get every new post delivered to your Inbox.

Únete a otros 199 seguidores