Processeur

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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

Voir aussi

  • Mémoire — gestion de la mémoire (RAM, swap)
  • Kernel — scheduler et zones mémoire noyau