Stiamo riscontrando uno strano comportamento in cui vediamo un elevato utilizzo della CPU ma una media di carico piuttosto bassa.
Il comportamento è meglio illustrato dai seguenti grafici del nostro sistema di monitoraggio.
Alle 11:57 circa l'utilizzo della CPU va dal 25% al 75%. La media del carico non viene modificata in modo significativo.
Eseguiamo server con 12 core con 2 hyper thread ciascuno. Il sistema operativo lo vede come 24 CPU.
I dati di utilizzo della CPU vengono raccolti eseguendo /usr/bin/mpstat 60 1
ogni minuto. I dati per la all
riga e la %usr
colonna sono mostrati nella tabella sopra. Sono certo che questo mostra la media dei dati della CPU, non l'utilizzo "sovrapposto". Mentre nel grafico vediamo un utilizzo del 75%, vediamo un processo che mostra di usare circa il 2000% di CPU "sovrapposte" top
.
Il valore medio del carico viene preso da /proc/loadavg
ogni minuto.
uname -a
dà:
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
Linux dist è Red Hat Enterprise Linux Server release 6.3 (Santiago)
Eseguiamo un paio di applicazioni Web Java con un carico abbastanza pesante sulle macchine, pensiamo a 100 richieste / s per macchina.
Se interpreto correttamente i dati di utilizzo della CPU, quando abbiamo un utilizzo della CPU del 75% significa che le nostre CPU eseguono un processo il 75% delle volte, in media. Tuttavia, se le nostre CPU sono occupate il 75% delle volte, non dovremmo vedere una media di carico più elevata? Come possono le CPU essere occupate al 75% mentre abbiamo solo 2-4 lavori nella coda di esecuzione?
Stiamo interpretando correttamente i nostri dati? Cosa può causare questo comportamento?