top
mostra 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?
top
mostra 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:
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