¿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
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
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.
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 es | Para ti es | Para Linux es |
Usada por aplicaciones | En uso | En uso |
Usada, pero puede liberarse | Libre (o disponible) | En uso (y disponible) |
No utilizada | Libre | Libre |
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.
Categories
deweloper View All
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.
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
Gracias por el comentario Alberto. Saludos!
Hola, soy novata, , vengo recien llegando a Deepin 20.2.2 , antes usaba windows en un pc con 8gb de memoria ram pero con un procesador de 1.4 GHZ, Deepin usa solo 1.5 GB de la memoria fisica , hay alguna forma de hacer que Deepin utilice o aproveche toda la ram disponible de mi pc o solo puede usar 1.5 GB? Ojala me pueda ayudar,gracias.
Hola Cecilia, no te trabajado con esa distro, sin embargo no me cuadra que no te reconozca más de 1,5 gb de ram. La única limitación que se me ocurre sería por la arquitectura del procesador, si este fuera de 32 bits, limitando a algo menos de 4 gb la RAM total disponible.