Monitorización de memoria: free, vmstat, /proc/meminfo, smem
Introducción
Controlar el uso de memoria RAM y swap es fundamental para detectar cuellos de botella y evitar que el sistema se quede sin recursos. Linux ofrece varias herramientas para inspeccionar la memoria tanto de forma global como por proceso.
free — Resumen rápido de memoria
Muestra de un vistazo la memoria total, usada, libre y disponible, así como el estado del swap.
Uso básico:
$ free
$ free -h # formato legible (MB, GB)
$ free -s 2 # actualizar cada 2 segundos
Salida típica:
total used free shared buff/cache available
Mem: 7,7G 2,1G 3,4G 312M 2,1G 5,0G
Swap: 2,0G 0B 2,0G
total→ RAM física instaladaused→ memoria en uso por procesosfree→ memoria sin ningún usobuff/cache→ usada por el kernel para cachés de disco (recuperable)-
available→ memoria real disponible para nuevos procesos (incluye lo recuperable de caché) Swap→ espacio de intercambio en disco
vmstat — Estadísticas de memoria virtual
Muestra un resumen de procesos, memoria, swap, I/O, interrupciones y actividad de CPU. Muy útil para detectar presión de memoria (swapping) y saturación de I/O.
Uso básico:
$ vmstat
$ vmstat 2 5 # muestra 5 líneas, una cada 2 segundos
$ vmstat -s # resumen detallado en forma de lista
$ vmstat -d # estadísticas de disco
Columnas principales:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3482608 123456 2012340 0 0 12 18 312 654 5 2 92 1 0
r→ procesos esperando CPUb→ procesos bloqueados esperando I/Oswpd→ memoria swap usada (KB)si / so→ swap in / swap out (KB/s) — si son altos hay presión de memoriabi / bo→ bloques leídos / escritos del disco (bloques/s)us / sy / id / wa→ CPU en usuario / sistema / inactivo / esperando I/O
/proc/meminfo — Información detallada del kernel
Fichero virtual del kernel con todas las estadísticas de memoria. Es la fuente de datos que usan free
y otras herramientas.
Consulta:
$ cat /proc/meminfo
$ grep -E 'MemTotal|MemFree|MemAvailable|SwapTotal|SwapFree' /proc/meminfo
Campos relevantes:
MemTotal→ RAM total del sistemaMemFree→ RAM completamente libreMemAvailable→ RAM disponible para aplicaciones (más útil que MemFree)Buffers→ caché de metadatos del sistema de ficherosCached→ caché de datos de ficherosSwapCached→ datos de swap que volvieron a RAM pero siguen en swapDirty→ datos en RAM pendientes de escribirse a disco
smem — Uso de memoria por proceso
A diferencia de ps o top, smem reporta el PSS
(Proportional Set Size), que distribuye la memoria compartida entre los procesos que la usan, dando una medición
más precisa del consumo real por proceso.
Instalación:
# apt install smem # Debian/Ubuntu
# dnf install smem # Fedora/RHEL
Uso:
$ smem # lista procesos con USS, PSS, RSS
$ smem -u # agrupado por usuario
$ smem -s pss -r # ordenado por PSS descendente
$ smem --pie=pss # gráfico de tarta (requiere matplotlib)
Métricas que reporta:
-
RSS(Resident Set Size) → memoria física total usada, contando páginas compartidas enteras PSS(Proportional Set Size) → RSS dividiendo la memoria compartida proporcionalmenteUSS(Unique Set Size) → memoria exclusiva del proceso, sin compartidas
pmap — Mapa de memoria de un proceso
Muestra el mapa de regiones de memoria de un proceso concreto dado su PID.
Uso:
$ pmap 1234 # mapa del proceso con PID 1234
$ pmap -x 1234 # formato extendido con RSS y Dirty