top
показує середнє споживання процесора у пік приблизно 20%, тоді як CloudWatch моніторинг показує середнє використання процесора 40%. Що обумовлює цю невідповідність?
top
показує середнє споживання процесора у пік приблизно 20%, тоді як CloudWatch моніторинг показує середнє використання процесора 40%. Що обумовлює цю невідповідність?
Відповіді:
Дуже добре спостереження, і ми також зіткнулися з цим. Ось що я знайшов:
Будьте уважні до вимірювання використання процесора в екземплярі EC2. Можливість бачити використання процесора набагато нижче 100% - і все-таки повністю заповнити. Повірте мені: був там, зробив це. (CloudWatch CPUUtilization, до речі, вимірюється поза екземпляром і завжди є правильним.)
Тут є дуже хороший опис всього цього: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/
У наведеному вище прикладі m1.small EC2 екземпляр виділив 0,4 процесорних одиниці, і тому 40% зайнятості процесора означає відсоткове використання базового ядра. Однак, оскільки 40% - це максимальна частка CPU, яка може бути розподілена на цей VM, ефективне використання процесора становить 40% / 40% = 100%. Яке число відображається CloudWatch.
Якщо вам цікаво, звідки береться 40%, математика досить проста. Система m1.small linux має право на 1 обчислювальну одиницю EC2, яка забезпечує еквівалентну ємність процесора 1,0–1,2 ГГц 2007 Opteron або 2007 Xeon. Оскільки VM працює на машині з тактовою частотою 2,6 ГГц, він має право на 38,4% —46,2% частки процесора в цьому конкретному вузлі XEN. Ви можете запустити команду cat / proc / cpuinfo, щоб дізнатися архітектуру процесора за вашими екземплярами EC2.
Зверніть особливу увагу на підказку про те, як поводитися з інструментами, які не знають про спеціальну математику:
Інший варіант, який можна використати для модернізації існуючих інструментів моніторингу на основі агентів або SNMP, які не інтегруються з CloudWatch, - використовувати показник процесора в режимі очікування. Все, що вам потрібно зробити, - це переписати правила для вимірювання простою процесора, а не процесор зайнятий. Наприклад, якщо для CPU визначено поріг> 75%, створіть правило <25% для роботи в режимі очікування. Якщо у режимі очікування процесора 0, то ваш сервер пов'язаний з процесором.
Дуже просто. Дуже хороший.
Коли ви пробігаєте зверху в екземплярі EC2, він вимірює використання процесора фізичної основної машини, на якій працює ваш екземпляр та інші. Це використання невірно, якщо ви хочете вимірювати використання процесора лише свого екземпляра (обчислювальний блок EC2, призначений вашому екземпляру).
Ось чому показники хмарного спостереження є реальними, оскільки вони вимірюються зовнішнім екземпляром для обчислювальної одиниці EC2, призначеної лише вашому екземпляру.
Дивіться тут - https://forums.aws.amazon.com/thread.jspa?threadID=99993