Nous rencontrons un comportement étrange où nous voyons une utilisation élevée du processeur mais une moyenne de charge assez faible.
Le comportement est mieux illustré par les graphiques suivants de notre système de surveillance.
Vers 11 h 57, l'utilisation du processeur passe de 25% à 75%. La moyenne de charge n'est pas modifiée de manière significative.
Nous exécutons des serveurs avec 12 cœurs avec 2 hyper threads chacun. Le système d'exploitation voit cela comme 24 CPU.
Les données d'utilisation du processeur sont collectées en exécutant /usr/bin/mpstat 60 1
chaque minute. Les données de la all
ligne et de la %usr
colonne sont présentées dans le graphique ci-dessus. Je suis certain que cela montre la moyenne des données par CPU, pas l'utilisation "empilée". Alors que nous voyons 75% d'utilisation dans le graphique, nous voyons un processus montrant l'utilisation d'environ 2000% de CPU "empilés" top
.
Le chiffre de la charge moyenne est tiré de /proc/loadavg
chaque minute.
uname -a
donne:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
La dist Linux Red Hat Enterprise Linux Server release 6.3 (Santiago)
Nous exécutons quelques applications Web Java sous une charge assez lourde sur les machines, pensez à 100 requêtes / s par machine.
Si j'interprète correctement les données d'utilisation du processeur, lorsque nous avons 75% d'utilisation du processeur, cela signifie que nos processeurs exécutent un processus 75% du temps, en moyenne. Cependant, si nos CPU sont occupés 75% du temps, ne devrions-nous pas voir une moyenne de charge plus élevée? Comment les CPU peuvent-ils être occupés à 75% alors que nous n'avons que 2 à 4 tâches dans la file d'attente d'exécution?
Interprétons-nous correctement nos données? Qu'est-ce qui peut provoquer ce comportement?