Introducción

Uno de los pilares del trabajo de un administrador de sistemas o DevOps es saber qué está pasando con el hardware del servidor. Y la CPU es, sin duda, el componente más crítico: si la CPU está al 100% todo el tiempo, tu aplicación va a responder lento, los usuarios se van a quejar y tú vas a terminar debuggeando a las 3 de la mañana.

En este primer artículo de la serie «Monitorización de Hardware» vamos a explorar todas las herramientas que Linux pone a tu disposición para entender el estado de la CPU: desde las más básicas (/proc/cpuinfo, lscpu) hasta las más avanzadas (perf, turbostat).

¡Empezamos! 🚀

/proc/cpuinfo — La fuente de la verdad

Todo en Linux es un archivo, y la información de la CPU no es la excepción. /proc/cpuinfo contiene los detalles de cada núcleo del procesador:

La salida es extensa, pero lo más relevante que debes saber leer:

  • processor: Número de cada núcleo lógico (0, 1, 2, 3…).
  • vendor_id: Fabricante (GenuineIntel, AuthenticAMD).
  • model name: Nombre completo del procesador (ej: «Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz»).
  • cpu cores: Núcleos físicos por socket.
  • siblings: Núcleos lógicos (si hay hyperthreading, siblings > cpu cores).
  • flags: Capacidades del procesador (vmx para virtualización, aes para cifrado por hardware, etc.).

Si solo quieres contar cuántos núcleos tienes:

lscpu — Información resumida y clara

lscpu toma la información de /proc/cpuinfo y la presenta de forma legible:

Salida típica:

Los campos clave:

  • CPU(s): Total de núcleos lógicos.
  • Thread(s) per core: Si es 2, hay HyperThreading activado.
  • Core(s) per socket: Núcleos físicos por CPU.
  • Socket(s): Cantidad de CPUs físicas instaladas.
  • CPU MHz: Frecuencia actual (puede variar con el escalado de frecuencia).
  • Cachés L1/L2/L3: Tamaño de cada nivel de caché.

top y htop — Monitoreo en tiempo real

top es el clásico monitor de procesos. Muestra en tiempo real el uso de CPU, memoria y otros recursos:

La línea de resumen de CPU en top es muy informativa:

¿Qué significa cada campo?

  • us (user): Tiempo de CPU usado por procesos de usuario.
  • sy (system): Tiempo de CPU usado por el kernel.
  • ni (nice): Tiempo de CPU usado por procesos con prioridad ajustada (nice).
  • id (idle): CPU inactiva. Si esto está bajo, hay cuello de botella.
  • wa (iowait): CPU esperando operaciones de E/S (disco o red). Un valor alto indica problemas de almacenamiento.
  • hi (hardware irq): Interrupciones de hardware.
  • si (software irq): Interrupciones de software.
  • st (steal): Tiempo «robado» por el hipervisor en máquinas virtuales. Si ves steal alto, tu VM está compitiendo con otras.

htop es una versión mejorada de top con interfaz a color, scroll y atajos de teclado intuitivos:

Si no está instalado:

mpstat — Estadísticas por núcleo

mpstat forma parte del paquete sysstat. Muestra estadísticas de CPU detalladas, incluso por cada núcleo individual:

Salida típica:

Esto es increíblemente útil cuando tienes un proceso que satura un solo núcleo (problema común en aplicaciones monohilo) y quieres identificarlo rápidamente.

vmstat — Visión general del sistema

vmstat reporta información sobre procesos, memoria, swap, E/S y CPU:

Columnas relevantes para CPU:

  • r: Procesos en cola de ejecución (esperando CPU). Si este número es mayor que la cantidad de núcleos, hay sobrecarga.
  • b: Procesos bloqueados (esperando E/S).
  • us: CPU de usuario.
  • sy: CPU del sistema.
  • id: CPU inactiva.
  • wa: IOWait.
  • st: Steal time (en VMs).

Regla práctica: si r es consistentemente mayor al número de núcleos y id está bajo, tu CPU está saturada.

uptime — Load Average

El comando uptime muestra tres números conocidos como «load average»:

Los tres valores representan la carga promedio en los últimos 1, 5 y 15 minutos. Pero hay que interpretarlos correctamente:

  • No es porcentaje. Un load de 1.0 en un sistema con 1 núcleo significa 100% de uso. En un sistema con 4 núcleos, 1.0 significa solo 25%.
  • Divide por el número de núcleos. En un sistema de 4 núcleos, load 2.0 es 50% de uso. Load 4.0 es 100%.
  • Si el load de 1 minuto es mucho mayor que el de 15 minutos: hay un pico reciente de actividad.
  • Si los tres son altos y sostenidos: el sistema está crónicamente sobrecargado.

perf — Análisis profundo de rendimiento

perf es la herramienta de profiling más potente de Linux. Utiliza contadores de hardware de la CPU para analizar el rendimiento a nivel de instrucciones:

Con perf puedes detectar problemas como:

  • Alta tasa de fallos de caché (cache misses altos).
  • Baja relación instrucciones/ciclo (IPC bajo indica ineficiencia).
  • Branch mispredictions que degradan el rendimiento del pipeline.

Instalación:

turbostat — Frecuencias y estados de reposo

turbostat (parte de linux-tools) muestra la frecuencia real de cada núcleo, los estados C (idle states) y el consumo energético estimado:

Es especialmente útil para detectar si el escalado de frecuencia (cpufreq) no está funcionando correctamente, o si algunos núcleos están entrando en estados de reposo profundos cuando no deberían.

Temperatura de la CPU

El sobrecalentamiento puede causar throttling (reducción forzada de frecuencia) y rendimiento inconsistente. Para monitorear temperaturas:

Salida típica:

Si ves temperaturas cercanas a «high» o «crit» en reposo, tienes un problema térmico. En servidores, lo ideal es mantener la CPU por debajo de 70-75°C bajo carga.

Resumen rápido de herramientas

Comando Qué muestra Cuándo usarlo
/proc/cpuinfo Información detallada de cada núcleo Consulta inicial de hardware
lscpu Resumen de arquitectura y cachés Vista rápida de la CPU
top / htop Uso de CPU en tiempo real por proceso Monitoreo diario
mpstat -P ALL Uso de CPU por núcleo Detectar desbalance o hilos únicos
vmstat Cola de ejecución, CPU, IOWait Diagnóstico rápido de cuellos de botella
uptime Load average (1, 5, 15 min) Vista general de carga del sistema
perf Análisis profundo con contadores HW Profiling y optimización avanzada
turbostat Frecuencia y estados C por núcleo Diagnóstico de escalado y energía
sensors Temperatura de la CPU Detección de sobrecalentamiento

Conclusión

Conocer el estado de tu CPU es fundamental para mantener servidores saludables y aplicaciones rápidas. Desde los archivos en /proc hasta herramientas avanzadas como perf y turbostat, Linux te da visibilidad total de lo que está pasando a nivel de hardware.

En el próximo artículo de esta serie veremos cómo monitorizar la memoria RAM y el swap. ¡No te lo pierdas!

¿Usas alguna otra herramienta para monitorear CPU? Cuéntanos en los comentarios. 👇