Linux / Commande lscpu : architecture, cœurs et processeurs logiques

lscpu décrit l’architecture du processeur, les processeurs logiques, les cœurs, les sockets et les caches que Linux peut voir. C’est un outil d’inventaire, pas une mesure de charge ni un classement de performances. Dans une machine virtuelle, sa sortie décrit principalement la configuration présentée au système invité, qui peut différer du matériel hôte.

Consulter l’architecture et le résumé CPU

CPU signifie Central Processing Unit, ou processeur. lscpu appartient à util-linux et collecte notamment ses informations dans sysfs et /proc/cpuinfo. Lancez la consultation suivante :

lscpu

Repérez l’architecture, le nombre de CPU, les threads par cœur, les cœurs par socket et les sockets. Un processeur logique est une unité d’exécution exposée au système ; il n’est pas nécessairement un cœur physique distinct. Les libellés et les champs varient selon la locale, la version et l’architecture.

Voici un extrait fictif cohérent pour un système à un socket, quatre cœurs et deux threads matériels par cœur. Il illustre les relations entre les nombres, sans décrire votre machine :

Architecture:        x86_64
CPU(s):              8
Thread(s) per core:   2
Core(s) per socket:   4
Socket(s):           1

Dans cette topologie uniforme, 1 × 4 × 2 donne huit processeurs logiques pour quatre cœurs. N’appliquez pas cette multiplication comme une preuve universelle à des topologies hétérogènes, partiellement hors ligne ou virtuelles. Vérifiez aussi la liste des CPU et les données réellement disponibles.

Examiner chaque processeur logique

L’affichage étendu donne une ligne par CPU. Commencez par les colonnes proposées par votre version, puis limitez-les pour une lecture ciblée :

lscpu -e
lscpu -e=CPU,CORE,SOCKET,ONLINE

CPU est l’identifiant du processeur logique ; CORE et SOCKET indiquent sa position dans la topologie ; ONLINE indique sa disponibilité en ligne. Un CPU hors ligne peut être présent dans l’inventaire sans être disponible pour exécuter du travail. Si une colonne n’est pas prise en charge par l’architecture, elle peut ne contenir aucune donnée.

Ces commandes comparent explicitement les CPU en ligne et l’ensemble des CPU connus :

lscpu -b -e=CPU,CORE,SOCKET,ONLINE
lscpu -a -e=CPU,CORE,SOCKET,ONLINE

-b limite aux CPU en ligne, -a inclut aussi les CPU hors ligne. Ces options s’emploient avec -e ou -p ; elles ne mettent aucun CPU en ligne ou hors ligne. Avec -e, l’inclusion de tous est déjà le comportement par défaut documenté.

Lire les caches sans multiplier les tailles à tort

lscpu -C

Les caches sont des mémoires rapides proches des unités de calcul. Leur organisation et leur partage entre cœurs dépendent du processeur. L’affichage -C détaille les caches reconnus ; consultez les colonnes avant d’assimiler une taille à une quantité par cœur ou à un total.

Depuis util-linux 2.34, le résumé des caches rapporte des tailles agrégées sur les CPU, alors que les versions antérieures présentaient des tailles par cœur. Les identifiants de cache ne commencent pas nécessairement à zéro. Une comparaison entre deux machines ou deux versions exige donc de vérifier ce que chaque champ mesure ; multiplier une valeur agrégée par le nombre de cœurs compte potentiellement plusieurs fois les mêmes caches.

Préparer une sortie pour un script et interpréter les limites

La présentation par défaut est destinée à la lecture et peut changer. Choisissez les colonnes plutôt que de prendre arbitrairement les huit premières lignes :

lscpu -p=CPU,CORE,SOCKET
lscpu -J

-p produit un format prévu pour le traitement automatique ; sa sortie peut comprendre des commentaires commençant par #, que le lecteur de données doit ignorer. -J produit du JSON sur les versions qui le prennent en charge. Vérifiez le schéma et les champs de votre version avant d’en faire une interface fixe. Consultez lscpu --help et man lscpu pour les colonnes et options installées.

Dans un conteneur, la topologie visible et les ressources effectivement utilisables ne se confondent pas forcément : des limites d’affinité ou de quotas peuvent restreindre le travail sans transformer tous les champs d’inventaire. Dans une machine virtuelle, les valeurs sont celles exposées à l’invité et la topologie déclarée peut être incomplète ou inexacte.

Pour observer l’activité courante, complétez cet inventaire avec top et ses mesures de processus et de charge. Un nombre de CPU plus élevé ne suffit pas à prévoir la vitesse d’une application : son parallélisme, la mémoire, les entrées-sorties et les limites de l’environnement comptent aussi.

Le manuel lscpu du projet util-linux décrit les sources de données, les sélections de colonnes, les changements de présentation et les limites de la topologie virtuelle.