Linux / Comando / free: interpretar la memoria RAM y el swap
free es un comando que muestra un resumen del uso de la memoria física (RAM) y del intercambio (swap) en los sistemas Linux. Para determinar si hay escasez de memoria, es mejor revisar primero la columna available, que estima la cantidad disponible para iniciar nuevos programas sin usar swap, en lugar de la columna free con el nombre literal.
free -h
Linux utiliza la RAM no utilizada para caché de archivos u otros fines y la recupera cuando es necesario. Por lo tanto, no se debe concluir únicamente que hay escasez de memoria simplemente porque el valor de free sea pequeño y el de buff/cache grande.
Información que muestra el comando free
free calcula la información de la memoria física y de intercambio leyendo /proc/meminfo proporcionada por el kernel. La definición de cada columna y las opciones se pueden consultar en el manual oficial de procps-ng free.
free -h
La salida típica se parece a la siguiente. Los valores son ejemplos y el formato de presentación puede variar según el sistema y la versión de procps-ng.
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 1.1Gi 320Mi 9.7Gi 10Gi
Swap: 2.0Gi 128Mi 1.9Gi
Significado de cada columna
total, used, free
| columna | Significado | Interpretación |
|---|---|---|
total |
Memoria física total disponible | Puede no ser exactamente igual a toda la RAM instalada. Se excluyen áreas reservadas por el kernel y el hardware. |
used |
Memoria en uso o no disponible de inmediato | Actualmente, en procps-ng se calcula como total - available de la memoria física. Dependiendo de la versión, el método de cálculo puede haber sido diferente. |
free |
Memoria no utilizada para ningún propósito | No incluye memoria que se esté utilizando como caché pero que pueda ser recuperada. |
shared representa principalmente la memoria utilizada en tmpfs. buff/cache es el valor combinado de los búferes del núcleo, la caché de páginas y la memoria slab recuperable.
La caché mantiene en RAM los datos leídos del disco para un acceso rápido nuevamente. Si una aplicación necesita memoria, el núcleo puede recuperarla, por lo que tener una caché grande no significa necesariamente un problema.
Importancia de available
available es un valor estimado de la memoria que se puede usar para iniciar nuevas aplicaciones sin usar swap. No es simplemente la suma de free + buff/cache, sino que utiliza la información MemAvailable del núcleo, considerando parte de la caché de páginas y la memoria slab que realmente se puede recuperar.
Este valor tampoco es un valor absoluto que garantice el uso futuro de la memoria. Si una aplicación solicita de repente grandes cantidades de memoria o aumenta la memoria difícil de recuperar por el núcleo, la situación puede cambiar rápidamente.
Diferencia entre las filas Mem y Swap
Fila de memoria física
La fila Mem resume el tamaño total y el estado del uso de la RAM real. Incluye no solo la memoria de aplicaciones, sino también el núcleo, caché, memoria compartida, entre otros usos.
Línea de intercambio
Swap muestra la capacidad total, utilizada y disponible del área de intercambio, no de la RAM. El hecho de que el uso de intercambio no sea cero no significa necesariamente que actualmente haya escasez de memoria. Esto se debe a que páginas inactivas desplazadas en el pasado pueden permanecer en el intercambio incluso después de que haya suficiente RAM disponible.
El intercambio (swap) es un área de almacenamiento que el núcleo puede utilizar para páginas de memoria. Un uso persistente de swap, junto con actividad de entrada/salida y mayor latencia, puede indicar presión de memoria. En vmstat, si indica entrada desde swap y so salida hacia swap; descarte la primera fila, que suele resumir el tiempo desde el arranque. Detenga vmstat 1 con Ctrl+C para continuar con el siguiente comando.
vmstat 1
Opciones de uso frecuente
Mostrar en unidades legibles por humanos
free -h
-h o --human selecciona automáticamente unidades binarias como Ki, Mi, Gi según el valor. Si se necesita una unidad fija, se pueden utilizar -m, -g, etc.
free -m
free -g
Ver búferes y caché por separado
free --wide
-w o --wide separa buff/cache en las columnas buffers y cache. Para analizar causas detalladas, también se deben revisar /proc/meminfo, slabtop, etc.
Mostrar repetidamente a intervalos regulares
free -h -s 2
-s 2 muestra continuamente los resultados a intervalos de 2 segundos. Para mostrarlo solo un número determinado de veces, se utiliza junto con -c.
free -h -s 2 -c 5
Ver la suma de la memoria física y swap
free -h --total
-t o --total añaden la suma de las columnas. Como la RAM y el swap tienen diferentes rendimientos y funciones, no se deben interpretar como memoria rápida utilizable viendo solo la suma.
Cómo determinar la falta de memoria
Ver available y las operaciones de entrada/salida de swap juntos
Es recomendable observar las siguientes señales junto con una sola salida de free.
- Si
availablese mantiene más bajo de lo habitual - Si el uso de swap está aumentando
- Si
vmstat,si·soocurren de manera continua - Si el tiempo de respuesta del servicio y la E/S del disco empeoran juntos
- Si hay registros de terminación OOM (Out of Memory) en los logs del kernel
free -h
vmstat 1
journalctl -k -g 'oom|Out of memory|Killed process'
Ejecute los comandos uno por uno; vmstat 1 continúa hasta pulsar Ctrl+C. La búsqueda de journalctl -k se limita al arranque actual y puede requerir permisos de lectura. El patrón usa | para alternar entre mensajes; que no aparezcan resultados no demuestra que nunca haya habido un problema de memoria.
Encontrar procesos que consumen mucha memoria
En ps se puede ordenar por uso de memoria y verificar los procesos principales.
ps -eo pid,user,%mem,rss,comm --sort=-rss | head
RSS (Resident Set Size, tamaño residente) expresa la memoria física atribuida a un proceso; en esta salida se muestra en KiB. Las páginas compartidas pueden contarse en varios procesos. Para un análisis más preciso, considere también métricas de cgroup, que agrupan y limitan recursos, y herramientas como smem si están disponibles.
No vacíe la caché a toda costa
La caché de páginas es administrada por el núcleo para mejorar el rendimiento del sistema. Forzar la limpieza de la caché con el propósito de aumentar artificialmente la cifra de free puede aumentar las lecturas de disco y, en cambio, reducir el rendimiento. Realícelo únicamente cuando haya un propósito claro, como en una prueba de rendimiento reproducible, comprendiendo los impactos y los métodos de recuperación.
Puntos a tener en cuenta en unidades y automatización
Unidades binarias y decimales
La visualización básica de -h es la serie KiB, MiB, GiB basada en 1024. Si se utiliza --si, se emplea la serie kB, MB, GB basada en 1000.
free -h --si
Si se mezclan diferentes unidades en documentos o monitoreo, aparecerán diferencias, por lo que debe especificarse la referencia.
No analizar las cadenas de visualización tal cual
Las columnas y métodos de cálculo de free pueden variar según la versión de procps-ng, y las unidades legibles para humanos no son adecuadas para el análisis. En la automatización, siempre que sea posible, use los elementos necesarios de /proc/meminfo o los indicadores estructurados proporcionados por el agente de monitoreo, y fije la unidad y la versión.
Razón por la que el valor de free se ve grande en un contenedor
free lee /proc/meminfo. Dependiendo del tiempo de ejecución del contenedor y de la configuración del cgroup, este archivo puede mostrar un valor cercano a toda la memoria del host, y puede diferir del límite de memoria realmente aplicado al contenedor.
Al juzgar la capacidad disponible del contenedor, verifique juntos la solicitud y el límite del orquestador, el límite de memoria del cgroup, el uso actual y los eventos OOM. Es importante no asumir la memoria que el contenedor puede usar solo en función del valor free del host.
Preguntas frecuentes
¿Si free es casi 0, significa que la memoria es insuficiente?
No necesariamente. Cuando Linux usa la memoria libre como caché, free puede reducirse. Verifique available, entrada/salida de swap y el rendimiento del servicio juntos.
¿El buff/cache es memoria que se puede liberar completamente?
Parte de ella se puede recuperar cuando sea necesario, pero no se puede recuperar toda de inmediato. available es una estimación que tiene en cuenta esta diferencia, por lo que es mejor no sumar simplemente todo buff/cache como memoria libre.
¿Si se usa swap, significa automáticamente que la RAM es insuficiente?
No. Las páginas inactivas del pasado pueden permanecer en el intercambio. Debe verificar si la tendencia de aumento del uso del intercambio, así como la entrada y salida real del intercambio y la latencia, ocurren juntas.
¿Por qué el valor de used se ve diferente de otras herramientas?
Cada herramienta y versión puede clasificar la memoria caché y recuperable de manera diferente. Compare el /proc/meminfo, la versión de procps-ng y la definición de cada herramienta en el mismo momento.
Si la carga también es alta, consulte cómo interpretar la carga promedio del comando uptime para verificar posibles cuellos de botella en la CPU y la E/S.




