Perché top segnala un utilizzo della cpu diverso da CloudWatch?


9

topmostra un utilizzo medio della CPU durante le ore di punta di circa il 20% mentre il monitoraggio CloudWatch mostra un utilizzo medio della CPU del 40%. Cosa causa questa discrepanza?

Risposte:


15

Un'ottima osservazione e ci siamo imbattuti anche in questo. Ecco cosa ho trovato:

Prestare attenzione a misurare l'utilizzo della CPU all'interno di un'istanza EC2. È possibile vedere l'utilizzo della CPU ben al di sotto del 100%, e tuttavia essere completamente massimizzato. Fidati di me: ci sono stato, fatto. (CloudWatch CPUUtilization, a proposito, è misurato dall'esterno dell'istanza ed è sempre corretto.)

C'è un'ottima descrizione di tutto qui: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/

Nell'esempio sopra, l'istanza EC1 m1.small è stata allocata a 0,4 unità processore e quindi il 40% di CPU occupata indica l'utilizzo percentuale del core sottostante. Tuttavia, poiché il 40% è la quota massima di CPU che può essere allocata a questa VM, l'utilizzo effettivo della CPU è del 40% / 40% = 100%. Qual è il numero visualizzato da CloudWatch.

Se ti stai chiedendo da dove provenga il 40%, la matematica è piuttosto semplice. Il sistema linux m1.small ha diritto a 1 unità di calcolo EC2 che fornisce la capacità equivalente della CPU di un processore Opteron 2007 o Xeon 2007 1,0-1,2 GHz. Poiché la macchina virtuale gira su una macchina con una velocità di clock di 2,6 GHz, ha diritto alla condivisione del processore del 38,4% —46,2% su questo particolare nodo XEN. È possibile eseguire il comando cat / proc / cpuinfo per scoprire l'architettura della CPU dietro le istanze EC2.

Presta particolare attenzione al suggerimento su come gestire strumenti che non conoscono la matematica speciale:

Un'altra opzione che può essere utilizzata per aggiornare gli strumenti di monitoraggio esistenti basati su agente o SNMP, che non si integrano con CloudWatch, è utilizzare la metrica di inattività della CPU. Tutto quello che devi fare è riscrivere le regole per misurare la CPU inattiva anziché la CPU occupata. Ad esempio, se è stata definita una soglia> 75% per CPU occupata, creare una regola <25% per CPU inattiva. Se la CPU inattiva è 0, il server è associato alla CPU.

Molto semplice. Molto bella.

Quando esegui il massimo all'interno dell'istanza EC2, sta misurando l'utilizzo della CPU del computer fisico principale che esegue l'istanza e altri. Questo utilizzo non è corretto se si desidera misurare l'utilizzo della cpu solo della propria istanza (l'unità di calcolo EC2 assegnata alla propria istanza).

Questo è il motivo per cui le metriche di cloudwatch sono reali poiché vengono misurate all'esterno dell'istanza per le unità di calcolo EC2 assegnate alla sola istanza.

Vedi qui - https://forums.aws.amazon.com/thread.jspa?threadID=99993


In altre parole, hanno entrambi ragione ma misurano cose diverse.
bahamat,

1
Potresti dirlo in questo modo. Tuttavia, l'OP è preoccupato che ciò che pensa di vedere non sia ciò che Amazon dice di vedere. Quindi, nel suo caso, i dati migliori non sono corretti per lui. Ma, se dovessi misurare l'utilizzo della CPU del core sottostante per eseguire il debug dei problemi di prestazioni, è molto utile eseguire top. Se sei preoccupato solo dell'utilizzo della tua istanza, cloudwatch è la strada da percorrere. Quindi sì, entrambi misurano cose diverse.
Chida,

1
Immagino che avrei dovuto seguire la mia affermazione con "il primo è quello che pensi di voler, il secondo è quello che vuoi veramente ", ma ho pensato che fosse già stato coperto.
bahamat,

+1 per quello che hai appena detto :)
Chida,

1
Ho recuperato il contenuto del link non funzionante dalla macchina di ritorno e l'ho aggiunto direttamente al post.
Johano Fierra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.