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% - это максимальная доля ЦП, которая может быть выделена этой виртуальной машине, эффективное использование ЦП составляет 40% / 40% = 100%. Какой номер отображается в CloudWatch.
Если вам интересно, откуда 40%, математика довольно проста. Система m1.small linux имеет право на 1 вычислительный блок EC2, который обеспечивает эквивалентную производительность процессора процессора Opteron 2007–1000 или Xeon 2007-1,0 ГГц. Поскольку виртуальная машина работает на машине с тактовой частотой 2,6 ГГц, она имеет право на долю процессора 38,4% - 46,2% на этом конкретном узле XEN. Вы можете запустить команду cat / proc / cpuinfo, чтобы выяснить архитектуру процессора за вашими экземплярами EC2.
Обратите особое внимание на подсказку о том, как обращаться с инструментами, которые не знают о специальной математике:
Другой вариант, который можно использовать для модернизации существующих средств мониторинга на основе агентов или SNMP, которые не интегрируются с CloudWatch, - это использовать показатель простоя ЦП. Все, что вам нужно сделать, это переписать правила для измерения простоя процессора вместо загрузки процессора. Например, если для занятого процессора установлено пороговое значение> 75%, создайте правило <25% для простоя процессора. Если процессор простаивает 0, то ваш сервер привязан к процессору.
Очень просто. Очень хорошо.
Когда вы запускаете top в экземпляре EC2, он измеряет загрузку ЦП компьютера физического ядра, на котором запущен ваш экземпляр, и других. Это использование некорректно, если вы хотите измерять использование процессора только вашим экземпляром (вычислительная единица EC2, назначенная вашему экземпляру).
Вот почему метрики cloudwatch являются реальными, поскольку они измеряются вне экземпляра для вычислительных единиц EC2, назначенных только вашему экземпляру.
Смотрите здесь - https://forums.aws.amazon.com/thread.jspa?threadID=99993