Introducción

Hola Fronters 👋

Bienvenidos a la segunda entrega de nuestra serie sobre monitorización de hardware en Linux. En el artículo anterior exploramos a fondo la CPU; hoy vamos a sumergirnos en la memoria RAM y el SWAP, dos componentes críticos para el rendimiento de cualquier servidor o sistema Linux.

Saber interpretar el uso de memoria te permite detectar cuellos de botella, planificar actualizaciones y optimizar aplicaciones. Vamos a ver las herramientas esenciales y cómo leer sus salidas como un verdadero sysadmin.

1. /proc/meminfo — La fuente de la verdad

Todo en Linux es un archivo, y la memoria no es la excepción. /proc/meminfo contiene la información más detallada sobre el estado actual de la RAM y el SWAP.

$ cat /proc/meminfo
MemTotal:       16383088 kB
MemFree:         2134560 kB
MemAvailable:    8912340 kB
Buffers:          345678 kB
Cached:          6543210 kB
SwapCached:        12345 kB
SwapTotal:       8388604 kB
SwapFree:        7123456 kB
...

Cómo interpretarlo:

  • MemTotal: Cantidad total de RAM física instalada.
  • MemFree: RAM completamente sin usar.
  • MemAvailable: Memoria disponible para iniciar nuevas aplicaciones (incluye caché que puede liberarse). Este es el valor más útil.
  • Buffers/Cached: Memoria usada por el kernel para buffers del sistema de archivos y caché de disco. No counts como «usada» realmente, pues se libera automáticamente.
  • SwapTotal / SwapFree: Espacio total y libre en la partición/archivo de intercambio.

2. free — El comando rápido

Si quieres una vista rápida y legible, free es tu aliado:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       5.2Gi       2.0Gi       456Mi       8.1Gi       8.5Gi
Swap:         8.0Gi       1.2Gi       6.8Gi

La columna available es la que realmente importa. Linux tiende a usar RAM libre para caché, por lo que free puede mostrar poca memoria libre aunque el sistema esté perfectamente bien. No te asustes si ves free bajo pero available alto — es normal y deseable.

Tips con free:

  • free -h → formato legible para humanos (MB/GB)
  • free -s 5 → actualiza cada 5 segundos
  • free -t → muestra total incluyendo SWAP

3. vmstat — Estadísticas de memoria virtual

vmstat es una navaja suiza para diagnóstico de rendimiento. En su sección de memoria (primeras columnas):

$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 123456 213456 345678 6543210  12   34   567   890 1023 4567 12  5 80  3  0

Columnas de memoria:

  • swpd: Cantidad de SWAP utilizada (en kB). Si crece constantemente, puede indicar presión de memoria.
  • free: Memoria libre.
  • buff: Memoria usada como buffers.
  • cache: Memoria usada como caché de página.
  • si (swap in): Memoria traída del SWAP a la RAM (por segundo).
  • so (swap out): Memoria enviada de la RAM al SWAP (por segundo).

Regla de oro: Si si y so son consistentemente mayores que 0, el sistema está haciendo swapping activo y probablemente necesita más RAM.

4. top y htop — Monitoreo en tiempo real

Tanto top como htop muestran una sección de memoria en la cabecera:

top - 10:30:00 up 45 days,  2:15,  3 users,  load average: 0.45, 0.30, 0.25
KiB Mem : 16383088 total,  2134560 free,  5456780 used,  8791748 buff/cache
KiB Swap:  8388604 total,  7123456 free,  1265148 used.  8912340 avail Mem

En htop (más amigable visualmente), las barras de memoria se muestran con colores y puedes ordenar procesos por uso de RAM presionando F6 y seleccionando PERCENT_MEM.

Consejo: Usa htop para identificar procesos que consumen memoria excesiva (memory leaks). Ordena por %MEM y revisa los primeros.

5. smem — Memoria por proceso con más precisión

smem es una herramienta menos conocida pero extremadamente útil porque reporta el consumo real de memoria (USS, PSS, RSS):

$ smem -t -k
  PID User     Command                         Swap      USS      PSS      RSS
 1234 mysql    /usr/sbin/mysqld                1234K   245.6M   301.2M   456.7M
 5678 www-data /usr/sbin/apache2                 56K    45.2M    52.3M    89.1M
...
  • USS (Unique Set Size): Memoria exclusiva del proceso (no compartida).
  • PSS (Proportional Set Size): Memoria compartida dividida proporcionalmente. El más realista.
  • RSS (Resident Set Size): Memoria total en RAM, incluyendo bibliotecas compartidas.

6. swappiness — Cómo Linux decide usar SWAP

El kernel de Linux tiene un parámetro llamado swappiness que controla la tendencia a usar SWAP:

$ cat /proc/sys/vm/swappiness
60

Este valor va de 0 a 100:

  • 0: Usa SWAP solo como último recurso (cuando la RAM está completamente llena).
  • 10-30: Ideal para servidores y sistemas con suficiente RAM.
  • 60: Valor por defecto (balanceado).
  • 100: Usa SWAP agresivamente.

Para cambiarlo temporalmente:

$ sudo sysctl vm.swappiness=10

Para hacerlo permanente, añade vm.swappiness=10 a /etc/sysctl.conf.

8. dmidecode — Tipo de RAM física

Para conocer el hardware físico instalado:

$ sudo dmidecode --type memory | grep -E "Type:|Speed:|Size:"
    Size: 16384 MB
    Type: DDR5
    Speed: 4800 MT/s
    Size: No Module Installed
    Type: Unknown

Esto te permite saber si tienes DDR4, DDR5, la velocidad y si hay slots libres para expandir.

9. glances — El todoterreno

glances es una herramienta todo-en-uno que muestra CPU, memoria, disco, red y procesos en una sola pantalla con colores. Su sección de memoria es muy clara:

$ glances
Memory        Total       Used       Free      Shared   Buff/Cache   Available
RAM          16.0G       5.2G       2.0G       456M       8.1G       8.5G
SWAP          8.0G       1.2G       6.8G

Además, incluye alertas de color: verde (ok), azul (cuidado), magenta (crítico) según el porcentaje de uso.

Conclusión

Monitorizar la memoria RAM y el SWAP en Linux no tiene por qué ser complicado. Con herramientas como free, vmstat, top, htop y smem puedes obtener una imagen clara del estado de tu sistema en segundos.

Recuerda los puntos clave:

  • Available es más importante que Free.
  • Un poco de SWAP usado es normal; SWAP activo (si/so > 0) es preocupante.
  • Ajusta swappiness si tu servidor tiene suficiente RAM.
  • Usa smem para medir memoria real por proceso.

En el próximo artículo de la serie veremos cómo monitorizar el rendimiento de la red en Linux. ¡No te lo pierdas!

Como siempre, déjanos tus comentarios y comparte si te fue útil 🚀