HOWTO · Linux

Leer indicadores de CPU desde Cpuinfo

Este artículo describe las banderas en cpuinfo en Linux.

En esta página

Linux expone información del procesador en /proc/cpuinfo. Puedes mostrarla, localizar las banderas de CPU que informa el sistema y revisar algunos ejemplos para entender esos datos. Los campos y nombres de las banderas dependen del procesador, la arquitectura y el kernel, así como de si Linux se ejecuta en una máquina virtual.

Leer /proc/cpuinfo

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

cat /proc/cpuinfo

El comando muestra el contenido del archivo como texto seleccionable en la terminal. La ejecución proporcionada ejecutó correctamente este comando en otro sistema; la salida varía entre sistemas. La imagen de la terminal muestra la salida de un sistema AMD Ryzen distinto, no la de esa ejecución.

Salida de la terminal de /proc/cpuinfo con el nombre del modelo AMD Ryzen 7 4700U, campos del procesador y banderas.

Identificar los campos de la salida

El archivo suele contener un bloque de campos por cada procesador lógico. processor identifica una entrada de procesador lógico; no indica cuántos núcleos físicos hay. vendor_id y model name identifican la familia y el modelo de procesador informados, mientras que cpu MHz muestra una frecuencia comunicada por el sistema que puede cambiar con la gestión de energía. También pueden aparecer campos como cache size, address sizes y cpu cores, pero su disponibilidad y significado dependen de la arquitectura y del kernel. No des por hecho que cada línea tiene el mismo significado en todos los equipos.

En un sistema multinúcleo es normal que se repitan los bloques. Consulta los valores de processor para ver las entradas lógicas que expone Linux, y considera cpu cores únicamente como un valor informado por ese sistema. Por sí solos, estos campos no permiten determinar de forma fiable cuántos sockets hay ni describir toda la topología física.

Buscar e interpretar las banderas de CPU

En la salida de x86, busca el campo flags; en algunas otras arquitecturas, una lista similar se llama Features. Para localizar una lista representativa, puedes buscar en el archivo con grep -m1 -E '^(flags|Features)[[:space:]]*:' /proc/cpuinfo. Los nombres que aparecen después de los dos puntos son identificadores separados por espacios, no descripciones. Su escritura forma parte de la interfaz entre el procesador y el kernel, así que conserva nombres como sse4_2, avx y lm tal cual al consultar documentación o comparar sistemas.

Por ejemplo, lm indica compatibilidad con el modo largo en x86, mientras que sse4_2 y avx identifican extensiones del conjunto de instrucciones. Una bandera es un nombre conciso de una capacidad, no una medida de rendimiento. Usa la lista exacta del equipo que te interesa: otro procesador, una máquina virtual o una arquitectura distinta puede mostrar un conjunto diferente. Las definiciones de las características de CPU x86 del kernel de Linux para la versión 4.1.3 pueden ayudar a interpretar los nombres en esa versión, pero no constituyen un catálogo exhaustivo y actualizado.

Comprender los límites de la salida de las banderas de CPU

/proc/cpuinfo describe la información que Linux expone para el sistema en ejecución. Una máquina virtual puede mostrar un conjunto filtrado de las capacidades del equipo anfitrión, y los kernels pueden exponer nombres propios de cada arquitectura o diferir en los campos que proporcionan. Que aparezca una característica del conjunto de instrucciones tampoco demuestra que un programa concreto la utilice: el software puede necesitar compatibilidad del sistema operativo, opciones adecuadas del compilador o detección de características durante la ejecución.

Considera las banderas como indicios de las capacidades que informa el sistema. Antes de depender de una característica, comprueba el procesador, el kernel, la configuración de virtualización y los requisitos de la aplicación. Por sí solas, las banderas no indican qué tan rápido se ejecutará una carga de trabajo, si el software eligió una ruta de código optimizada ni si todos los procesadores lógicos ofrecen el mismo conjunto de características utilizables.