Processeur
| Fiche express | |
|---|---|
| Domaine | Diagnostic CPU |
| Fichiers/commandes | /proc/cpuinfo, lscpu, nproc, /proc/interrupts
|
| Contexte | Identifier le CPU, compter cœurs/threads, mesurer la charge, épingler un process |
| Voir aussi | Mémoire (gestion mémoire), Kernel (scheduler, zones mémoire) |
Aide-mémoire pour identifier le processeur d'une machine, compter ses cœurs/threads, suivre sa charge et gérer l'activation des CPU individuels.
Identifier le processeur
cat /proc/cpuinfo # détail par cœur logique : modèle, fréquence, flags, cache...
lscpu # résumé synthétique : socles, cœurs, threads, architecture, cache
lscpu est généralement plus rapide à lire que /proc/cpuinfo pour une
vue d'ensemble, mais /proc/cpuinfo reste utile pour des détails par cœur (flags
CPU précis, fréquence courante de chaque cœur si le scaling est actif).
Compter les processeurs
grep 'physical id' /proc/cpuinfo | sort --uniq | wc -l # nombre de sockets/CPU physiques
grep processor /proc/cpuinfo | wc -l # nombre de cœurs logiques (threads compris)
nproc # raccourci : nombre de cœurs logiques disponibles
Sur une machine avec hyperthreading, le nombre de cœurs logiques (processor) est
supérieur au nombre de cœurs physiques réels.
Activer/désactiver un CPU
Chaque cœur logique peut être mis hors ligne individuellement, par exemple pour tester un comportement dégradé ou isoler un CPU défectueux :
echo 0 > /sys/devices/system/cpu/cpu6/online # désactiver le cœur 6
echo 1 > /sys/devices/system/cpu/cpu6/online # le réactiver
grep "processor" /proc/cpuinfo # vérifier les cœurs actuellement visibles
Le cœur 0 ne peut généralement pas être désactivé de cette façon.
Charge et interruptions
uptime # load average sur 1/5/15 min
cat /proc/loadavg # équivalent brut, avec en plus le ratio processus actifs/total
cat /proc/interrupts # répartition des interruptions matérielles par CPU
Le load average n'est pas un pourcentage d'utilisation CPU : c'est le nombre moyen de processus en état « exécutable » (running ou en attente d'E/S) sur la période. Un load de 4 sur une machine à 4 cœurs indique une saturation ; le même load sur une machine à 16 cœurs est confortable.
Identifier les process qui consomment le CPU
top # vue interactive, rafraîchie en continu
ps -eo pcpu,pid,user,args --sort=-pcpu | head -10 # top 10 des process par %CPU, en instantané
Répartition de la charge entre cœurs
Chaque cœur a sa propre file d'exécution (runqueue) ; le noyau rééquilibre automatiquement la
charge entre cœurs, ce qui peut faire migrer un processus d'un cœur à l'autre au fil du temps.
Pour observer sur quel cœur (PSR) tourne chaque processus :
ps axo comm,psr
Pour forcer l'exécution d'un processus sur un ou plusieurs cœurs précis (affinité CPU), voir
taskset.
Température
apt-get install lm-sensors # ou yum/dnf selon la distribution
sensors-detect
sensors # température CPU (et autres capteurs détectés)
Pour la température d'un disque (contexte proche lors d'un diagnostic matériel) :
apt-get install hddtemp
hddtemp /dev/sda