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 segundosfree -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
swappinesssi tu servidor tiene suficiente RAM. - Usa
smempara 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 🚀