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 instalada
  • used → memoria en uso por procesos
  • free → memoria sin ningún uso
  • buff/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 CPU
  • b → procesos bloqueados esperando I/O
  • swpd → memoria swap usada (KB)
  • si / so → swap in / swap out (KB/s) — si son altos hay presión de memoria
  • bi / 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 sistema
  • MemFree → RAM completamente libre
  • MemAvailable → RAM disponible para aplicaciones (más útil que MemFree)
  • Buffers → caché de metadatos del sistema de ficheros
  • Cached → caché de datos de ficheros
  • SwapCached → datos de swap que volvieron a RAM pero siguen en swap
  • Dirty → 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 proporcionalmente
  • USS (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
          

Combinar free -h para una visión global con smem -s pss -r para identificar qué proceso consume más memoria es la forma más eficiente de diagnosticar problemas de memoria.

Monitorización de disco: iostat, iotop, df, du

Índice de la sección

Índice del curso