Saltar al contenido

¿Linux se queda sin memoria RAM? Aprende a monitorizar este recurso

Linux se queda sin memoria RAM Aprende a monitorizar este recurso

Digamos que acabas de instalar tu nueva “distro” Linux personal o corporativa. Por supuesto, has oído a todo el mundo decir que es más liviana que su contrapartida basada en Windows, así que esperas que tengas toneladas de RAM disponibles, pero de repente ves que Linux tiene poca memoria.

Aparentemente. No debes procuparte en principio, porque hay algo sobre Linux que todo novato (bueno, odio esta palabra) debe aprender, y es que la forma en que Linux comunica la memoria disponible no se parece a como lo hace Windows.

Obtener memoria RAM disponible en Linux

En sistemas basados en Linux tenemos múltiples formas de mostrar la memoria física o virtual libre y en uso. Si somos amigos de Windows o Mac, nos interesará probablemente algo que tire de GUI (Graphic User Interface).

Similar al Administrador de tareas de Windows o el MacOS Activity Monitor, tenemos GNOME System Monitor (para escritorios Gnome) o Konsole (entornos KDE). Bastará con buscar estas aplicaciones en el lanzador.

Otra forma de medir los recursos disponibles en Linux es utilizar top, htop, gotop o cualquier herramienta similar.

Ver memoria libre en Linux desde el terminal

Supongamos que eres más amigo de la linea de comandos, o que necesitas calcular los recursos disponibles en un servidor headless (sin GUI). Sigue estos pasos para visualizar la memoria libre desde la terminal de Linux.

Abre un terminal (en algunas distro es CTRL + SHIFT + T) y escribe:

free
Resultado del comando free, conviene fijarse en los valores resaltados

Aparece listada la memoria física y virtual disponible y en uso. Te recomiendo utilizar free- h para que la salida sea “humana”, es decir, mostrada en el valor MB, GB más propio según tu cantidad de memoria RAM física/virtual.

También podemos obtener información de la memoria RAM escribiendo lo siguiente:

cat /proc/meminfo

Ahora probablemente has visto que solo un pequeño porcentaje de tu memoria RAM está libre (free) en la salida del comando. Eso no significa que te estés quedando sin memoria.

Otras formas de ver consumo de memoria en UNIX

Como UNIX y Linux no son lo mismo, es posible que el comando free no esté disponible en distribuciones tipo Solaris, por ejemplo (para eso tenemos Rosetta, por cierto).

Uno de los comandos siempre disponibles en UNIX es top. Basta con escribirlo en su sintaxis básica para obtener un resumen como el siguiente.

top
El comando top se actualiza automáticamente

Si nos fijamos en los valores anteriores, vemos que aparentemente hay muy poca memoria disponible.

Si escribimos top seguido de M podemos ordenar los procesos por consumo de memoria. Si no vemos que aparezca el consumo de memoria de los procesos, pulsaremos SHIFT + F y pulsaremos después “n” para habilitarlo (se quedará marcado con un asterisco.

  • top-mem-2
  • top-mem

Otra forma de ver los recursos, en este caso únicamente la memoria virtual disponible, es vmstat.

user@host:~> vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 616752 171320 40928 3560212 0 0 70 38 1 1 5 0 95 0 0

Si usamos el formato tabla:

vmstat -s

Obtendremos esta salida:

Otro buen comando para comprobar la memoria disponible en Linux o UNIX es sar, nos permite monitorizar continuamente un recurso a intervalos especificados. Veamos un par de ejemplos:

Sintaxis

sar <opciones> <intervalo> <conteo>

Obtener consumo de memoria continuado en Linux (intervalo en segundos):

sar -r 5 5

Obtener consumo de CPU continuado en Linux

sar -p 5 5 

Hay muchas más opciones. Ante las dudas sobre como se usa un comando, siempre puedes recurrir a los archivos de ayuda de Linux.

La gestión de memoria en sistemas Linux

Bien, después de esto podemos pasar a detallar por qué estamos viendo esta aparente escasez de memoria. Lo que ocurre es que Linux coge prestada un montón de memoria RAM para cachear.

El cacheo de elementos estáticos de disco hacen que el sistema sea más rápido en su respuesta. Muchas cosas que no vemos en primer plano se están acelerando para que la experiencia del sistema sea más fluida.

Si tus aplicaciones demandan en un momento dado más memoria, el sistema la recupera de forma inmediata.

La única razón por la que nos interesaría eliminar el cacheo de disco es si no hemos interpretado bien la información, lo bueno es que no se puede desactivar. No significa que necesites más memoria virtual, tampoco.

¿Cuándo se queda un sistema Linux sin memoria, de verdad?

Un sistema basado en Linux que tenga buena capacidad debería mostrar con el tiempo unos valores parecidos a estos:

  • La memoria marcada como free es cercana a 0
  • La memoria marcada como used (usada) es cercana al total
  • La memoria disponible (available) -o bien la suma de free + cacheada– tiene suficiente margen. Pongamos un un 20% del total o más.
  • Los datos del Swap (memoria virtual) se mantienen intactos

Un sistema que comience a dar signos preocupantes podría arrojar estos datos:

  • La memoria disponible (available) -o bien la suma de free + cacheada– es cercana a 0
  • El swap utilizado aumenta o varía frecuentemente
  • Un último signo sería encontrarnos en el registro de sistema con la cadena de aviso “OutOfMemory-killer

Para verificarlo, escribiremos:

dmesg | grep oom-killer

Si no obtenemos nada, todo va bien.

Tendremos en cuenta esta sutil diferencia de criterio

Memoria que esPara ti esPara Linux es
Usada por aplicacionesEn usoEn uso
Usada, pero puede liberarseLibre (o disponible)En uso (y disponible)
No utilizadaLibreLibre

Por tanto, si nos atenemos a una salida típica como esta, concluiremos que es normal. El swap está intacto y tenemos una cantidad de memoria “disponible” cercanada al 50% del total (1504-792).

$ free -m
                total        used        free      shared  buff/cache   available
  Mem:           1504        1491          13           0         855      792
  Swap:          2047           6        2041

Nota final, en versiones anteriores a 2016 deberás fijarte en en el valor “free” o libre.

Más información

Alejandro Ver todo

Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.

2 comentarios sobre “¿Linux se queda sin memoria RAM? Aprende a monitorizar este recurso Deja un comentario

  1. Alejandro, yo tengo Manjaro (que usa KDE) y Konsole solamente arranca la consola sin más. No arranca ninguna GUI donde se muestre el estado del sistema, al menos, repito, en Manjaro.
    Eso sí, una vez arrancada la consola puedes poner cualquiera de las órdenes que enumeras.
    Gran artículo, como siempre.
    Salu2

    Me gusta

Deja tu comentario (puedes hacerlo de forma anónima)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .

A %d blogueros les gusta esto: