Objetivo:
Comprender y analizar el rendimiento y la utilización de los recursos críticos de hardware en Linux (memoria RAM, espacio de intercambio SWAP, almacenamiento y rendimiento del kernel) utilizando herramientas nativas de diagnóstico del sistema como free, df, du y vmstat.
Escenario:
- Herramientas: Terminal Linux, comandos
free,df,du,vmstat, y utilidades de filtrado y ordenación. - Conceptos analizados: Consumo y buffer/cache de memoria RAM, uso de espacio SWAP (paging/swapping), ocupación de particiones y puntos de montaje, y métricas de rendimiento en tiempo real del kernel (CPU, I/O de disco).
- Proceso clave: Diagnóstico de cuellos de botella por falta de memoria, identificación de directorios con consumo excesivo de espacio en disco y monitorización del comportamiento dinámico del sistema.
Escenario Real: Diagnóstico de una incidencia por lentitud general
Los usuarios de un servidor de aplicaciones en producción reportan una ralentización extrema y cuelgues intermitentes. Como administrador de sistemas, sospechas que el equipo se ha quedado sin memoria RAM y está recurriendo intensamente al espacio SWAP, o bien que alguna partición de disco ha completado su capacidad de almacenamiento. Debes realizar una auditoría rápida de recursos para identificar el origen del problema.
NOTA: Esta práctica se puede realizar con total seguridad sobre tu propia máquina local o entorno de prácticas, ya que los comandos utilizados son de solo lectura y diagnóstico, sin alterar la configuración del sistema operativo.
Instrucciones:
Fase 1: Análisis del consumo de memoria RAM y SWAP con free:
- Ejecutar el comando para visualizar el estado de la memoria en formato legible para humanos (megabytes/gigabytes):
free -h - Analizar detalladamente las columnas devueltas: memoria total, usada, libre, compartida, buffers/cache y la memoria disponible real (
available). - Inspeccionar la línea correspondiente a Swap para comprobar si el sistema está utilizando espacio de intercambio en disco.
- Forzar la visualización de actualizaciones continuas cada 2 segundos para ver cambios en tiempo real:
free -h -s 2(pulsarCtrl + Cpara salir).
Fase 2: Auditoría del almacenamiento y particiones con df:
- Consultar el espacio disponible y ocupado en todas las particiones montadas del sistema de forma legible:
df -h - Identificar el punto de montaje de la partición raíz (
/) y comprobar su porcentaje de ocupación (columnaUse%). - Visualizar también el tipo de sistema de archivos asociado a cada partición ejecutando:
df -Th
Fase 3: Localización de ficheros y directorios pesados con du:
- Estimar el espacio total ocupado por un directorio específico del sistema (por ejemplo, el directorio de logs):
sudo du -sh /var/log - Listar y ordenar de mayor a menor los subdirectorios y ficheros dentro de una ruta concreta para detectar cuellos de botella de espacio:
sudo du -h --max-depth=1 /var | sort -hr - Analizar el significado de los modificadores utilizados (
-hpara formato humano,--max-depth=1para limitar la profundidad de búsqueda ysort -hrpara ordenar de mayor a menor tamaño).
Fase 4: Análisis avanzado del rendimiento del kernel con vmstat:
- Ejecutar una instantánea global del rendimiento del sistema:
vmstat - Interpretar los bloques de información devueltos:
procs: Procesos en ejecución (r) y en espera de E/S (b).memory: Uso detallado de memoria virtual, swap in (si) y swap out (so).cpu: Porcentajes de tiempo de CPU dedicados a usuario (us), sistema (sy), inactividad (id) y espera de E/S (wa).
- Lanzar un monitoreo dinámico que tome muestras cada 3 segundos durante 5 veces consecutivas:
vmstat 3 5
Verificación:
- Comprobar mediante el comando
free -hque el indicador de memoriaavailablemuestra la cantidad real de RAM de la que disponen los nuevos procesos. - Verificar que el comando
df -hconfirma que ninguna partición crítica supera el umbral de alerta del 85-90% de ocupación.
Posibles errores y resolución de problemas:
Si al ejecutar el comando free observas que la memoria libre (free) es prácticamente del 0%, no debes alarmarte pensando que el sistema está colapsado; este es un comportamiento completamente normal en Linux.
Solución: Linux utiliza toda la RAM libre sobrante como memoria caché y búfer para acelerar el acceso a los discos y aplicaciones. Lo verdaderamente importante para saber si falta RAM es mirar la columna
available, que indica la memoria real libre para ser asignada a nuevos programas.
Alternativa directa: Identificación rápida del proceso que más memoria consume
Si tras auditar con free detectas que la RAM está al límite y necesitas averiguar de inmediato qué aplicación o proceso concreto está devorando los recursos del sistema sin recurrir a herramientas complejas, puedes usar el siguiente filtro con ps:
ps aux --sort=-%mem | head -n 6
Preguntas de reflexión:
- ¿Por qué la columna
freedel comandofree -hsuele mostrar valores muy bajos en servidores Linux que llevan tiempo encendidos, y por qué no es un indicador fiable por sí solo de escasez de RAM? - ¿Qué diferencia principal existe entre el comando
df(disk free) y el comandodu(disk usage) a la hora de calcular el espacio de almacenamiento? - ¿Qué indica un valor elevado en la columna
wa(waiting for I/O) del comandovmstatrespecto al rendimiento general del sistema y los discos? - ¿Qué implicaciones de rendimiento y velocidad de respuesta sufre un sistema operativo cuando comienza a utilizar intensamente el espacio de intercambio (
swap)?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué la columna free del comando free -h suele mostrar valores muy bajos en servidores Linux que llevan tiempo encendidos, y por qué no es un indicador fiable por sí solo de escasez de RAM?
Porque el kernel de Linux optimiza el rendimiento utilizando toda la memoria RAM no asignada a procesos activos como caché de lectura de disco y búferes. Esa memoria se libera de forma instantánea si un programa en ejecución solicita más RAM, por lo que el indicador real de disponibilidad es la columna available, no la memoria estrictamente free.
2. ¿Qué diferencia principal existe entre el comando df (disk free) y el comando du (disk usage) a la hora de calcular el espacio de almacenamiento?
El comando df consulta directamente al sistema de archivos la ocupación global de las particiones y puntos de montaje a nivel de bloques globales (leyendo la superestructura). Por el contrario, el comando du recorre recursivamente árbol por árbol el interior de los directorios y ficheros seleccionados sumando el tamaño real de cada uno de ellos.
3. ¿Qué indica un valor elevado en la columna wa (waiting for I/O) del comando vmstat respecto al rendimiento general del sistema y los discos?
Indica que la CPU está pasando una cantidad de tiempo importante bloqueada y sin poder procesar instrucciones porque está esperando a que los dispositivos de almacenamiento (discos duros mecánicos o lentos) terminen de leer o escribir datos. Esto suele revelar un cuello de botella severo de E/S en los discos.
4. ¿Qué implicaciones de rendimiento y velocidad de respuesta sufre un sistema operativo cuando comienza a utilizar intensamente el espacio de intercambio (swap)?
Una degradación drástica y masiva del rendimiento general (efecto conocido como thrashing). Dado que el disco duro (incluso en SSDs) es infinitamente más lento que los módulos de memoria RAM física, mover constantemente páginas de memoria hacia la partición de swap y recuperarlas provoca que el sistema se congele o responda con extrema lentitud.