Introducción
En el mundo de la administración de sistemas Linux, conocer a fondo las características del hardware es esencial para optimizar el rendimiento, depurar problemas y planificar actualizaciones. Uno de los comandos más útiles para obtener información detallada del procesador es lscpu. Esta herramienta, parte del paquete util-linux, presenta de forma legible los datos que el kernel expone a través del sistema de archivos /sys y /proc. En este artículo exploraremos qué es lscpu, cómo se invoca, qué campos muestra su salida y cómo interpretar cada uno de ellos para sacar el máximo provecho de tu CPU.
¿Qué es lscpu y dónde se encuentra?
El comando lscpu proviene del proyecto util-linux y está disponible en prácticamente todas las distribuciones modernas de Linux, como Ubuntu, Debian, Fedora, CentOS y Arch. No requiere privilegios de superusuario para ejecutarse, ya que solo lee información de solo lectura expuesta por el kernel. Cuando lo invocas en una terminal, lscpu recopila datos de varios subdirectorios de /sys/devices/system/cpu y los formatea en una tabla legible para humanos.
Sintaxis básica y opciones más comunes
La forma más simple de usar el comando es:
lscpu
Esto imprimirá toda la información disponible. Sin embargo, lscpu ofrece varias opciones para filtrar o personalizar la salida:
-ao--all: muestra información de todas las CPUs lógicas y físicas, incluyendo aquellas que pueden estar fuera de línea.-bo--online: limita la salida a las CPUs que están actualmente en línea (el comportamiento predeterminado en muchas versiones).-co--offline: muestra solo las CPUs que están fuera de línea.-eo--extended: presenta la información en formato de columnas, ideal para scripts.-po--parse: genera una salida analizable separada por comas, útil para procesamiento posterior.-so--sysroot: permite especificar un directorio raíz alternativo (útil en entornos chroot o contenedores).-ho--help: muestra la ayuda y termina.-Vo--version: muestra la versión del comando.
Desglose de los campos más importantes de la salida
Ejecutar lscpu sin argumentos produce una lista de pares clave‑valor. A continuación se explican los campos que más frecuentemente resultan relevantes:
- Architecture: indica la arquitectura del procesador (por ejemplo, x86_64, aarch64, armv7l).
- CPU op-mode(s): muestra los modos de operación soportados, como 32-bit, 64-bit o ambos.
- Byte Order: el orden de los bytes (Little Endian o Big Endian) que utiliza la CPU.
- CPU(s): número total de hilos lógicos que el sistema ve.
- On-line CPU(s) list: lista de CPUs actualmente activas.
- Off-line CPU(s) list: lista de CPUs que están desactivadas (pueden ser activadas posteriormente).
- Thread(s) per core: cuántos hilos se ejecutan en cada núcleo físico (por ejemplo, 2 para tecnología Hyper‑Threading).
- Core(s) per socket: número de núcleos presentes en cada socket físico.
- Socket(s): cantidad de sockets de CPU instalados en la placa base.
- NUMA node(s): número de nodos NUMA (Non‑Uniform Memory Access) detectados.
- Vendor ID: identificador del fabricante (GenuineIntel, AuthenticAMD, etc.).
- CPU family: familia del procesador según el modelo interno del fabricante.
- Model: número de modelo dentro de la familia.
- Model name: nombre comercial completo del procesador (ej. Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz).
- Stepping: revisión interna del silicio.
- CPU MHz: velocidad actual de reloj en megahercios (puede variar con escalado de frecuencia).
- CPU max MHz: frecuencia máxima que el procesador puede alcanzar.
- CPU min MHz: frecuencia mínima permitida.
- BogoMIPS: medida aproximada de rendimiento basada en bucles de retardos (no es un benchmark real).
- Virtualization: indica si la CPU soporta tecnologías de virtualización (VT‑x/AMD‑V) y si están activas.
- L1d cache, L1i cache, L2 cache, L3 cache: tamaños de las cachés de datos, instrucciones y niveles superiores.
- Flags: lista de capacidades y características del procesador (por ejemplo, sse4_2, avx2, aes, vmx).
Ejemplos de uso práctico
A continuación se presentan algunos escenarios donde lscpu resulta particularmente útil:
1. Verificar la arquitectura antes de instalar paquetes
Si necesitas saber si tu sistema es de 64 bits para descargar el binario correcto:
lscpu | grep Architecture
2. Determinar el número de hilos disponibles para compilar con make
Muchos sistemas de compilación usan la variable JOBS basada en el número de hilos lógicos:
export JOBS=$(lscpu -p | grep -v '^#' | wc -l)
3. Comprobar si la virtualización está habilitada
Antes de crear una máquina virtual con KVM o VirtualBox, verifica el soporte:
lscpu | grep Virtualization
4. Obtener información en formato CSV para procesarla con awk o Python
lscpu --parse=CPU,Core,Socket,Node > cpu_info.csv
5. Listar solo las CPUs fuera de línea (útil en entornos de ahorro de energía)
lscpu --offline
Consejos y buenas prácticas
- Recuerda que
lscpusolo muestra lo que el kernel ha detectado; si alguna CPU está desactivada a nivel de firmware, podría no aparecer. - En sistemas con hiperthreading activado, el número de hilos lógicos (CPU(s)) será el doble del número de núcleos físicos.
- Para obtener una vista más detallada de cada núcleo individual, puedes explorar directamente
/sys/devices/system/cpu/cpu*/topologyo usarlscpu -e. - Si trabajas en contenedores (Docker, Podman), el comando mostrará la CPU vista desde el contenedor, que puede estar limitada por cgroups.
- Combina
lscpucon otras herramientas comolsmem,lspciydmidecodepara obtener un panorama completo del hardware.
Conclusión
El comando lscpu es una herramienta indispensable para cualquier administrador de sistemas, desarrollador o entusiasta de Linux que necesite conocer a fondo las características del procesador. Su salida legible, combinada con opciones de filtrado y formato, permite obtener rápidamente datos críticos para la toma de decisiones en rendimiento, compatibilidad de software, planificación de actualizaciones y depuración de problemas. Dominar su uso no solo ahorra tiempo, sino que también brinda una base sólida para optimizar y aprovechar al máximo el potencial de tu hardware.


