Mesurer l'utilisation d'un CPU n'est pas simple.
Un CPU occupé à 100% ne veut pas forcément dire que le CPU est occupé à 100%. Il peut très bien être occupé à 40% et le reste est l'attente des données de la RAM (qui est plus lente que le CPU).
Il faut aussi pendre en compte les I/O disque et réseau (si le CPU attend des données du réseau ou du disque, le processus qui attends les données ne va rien faire, on va donc percevoir un CPU moins utilisé.)
Le pourcentage cache également les pics de charge (un CPU qui affiche 80% sur une période, c'est peut-être en réalité plusieurs pics de 100%).
Bref... ce n'est pas simple.
➡️ Une mesure plus intéressante pour évaluer la charge d'un système est justement... la charge (load-average). Cela ne représente pas seulement les processus en train de tourner dans le CPU, mais aussi les processus en *attente* de ressources (CPU, mémoire, disque, réseau...).
Par exemple sur un système 4 coeurs:
- Une charge à 1 signifie qu'en moyenne 1 coeur est utilisé à 100%.
- Une charge à 4 signifie que les processus ne sont bloqués par rien (ils n'attendent pas de CPU ou d'autres ressources.). Les 4 coeurs sont occupés à 100%.
- Une charge supérieure au nombre de coeur veut dire qu'il y a plus de processus en exécution et attente que ce que peut fournir le système. Soit les processus attendent du temps CPU (parce que d'autres processus sont en cours de fonctionnement) soit d'autres ressources (mémoire, disque, réseau). C'est un indice que ce que vous demandez à votre système est supérieur à ce qu'il peut fournir.
Sous Linux top, htop ou btop vous affichent la charge. Ils vous affichent 3 mesures de charge : Sur 1 minute, sur 5 minutes, sur 15 minutes passées.
PS: On me signale aussi le PSI (
https://docs.kernel.org/accounting/psi.html) qui permet d'avoir un découpage cpu/mémoire/io de la charge (regardez dans /proc/pressure/)