Я запускаю сценарий python в экземпляре ec2, который вставляет строки в базу данных в другом экземпляре. В мониторинге ec2 я увидел 100% использование процессора, тогда как top показывает только 20% для процесса python. Чего не хватает сверху? Накладные расходы сети?
Данные, предоставленные top
часто бывает недостаточно или вводит в заблуждение в виртуализированных средах, таких как Amazon EC2 и сообщаемый процент зависит от типа вашего экземпляра и используемого ядра процессора (которое обычно не соответствует виртуализированному оборудованию, которое вы получаете от гипервизора), среди прочего - то, что вы видите, скорее всего, вызвано соответствующими Время кражи процессора как показано в большинстве связанных инструментов мониторинга Unix / Linux в настоящее время - см., например, столбцы% steal или st in sar
или top
:
st - украсть время
Объем процессора, «украденного» с этой виртуальной машины гипервизором для других задач (например, для запуска другой виртуальной машины).
Сообщение в блоге Мониторинг EC2: случай кражи процессора дает хорошее исследование и иллюстрацию этой темы:
Когда верхняя команда показывает, что ЦП загружен на 40%, но CloudWatch сообщает, что сервер загружен на 100% - на какую сторону вы выберете? Ответ прост (CloudWatch правильно, верх - нет) [...]
Обратите внимание, что эта метрика гипервизора кажется (легко) доступна только в системах Unix / Linux, но, похоже, не наблюдается в Windows (пока), см. Мой вопрос Есть ли Windows-эквивалент Unix «CPU steal time»? для получения дополнительной информации об этой проблеме.
Amazon, вероятно, проверяет загрузку и отсутствие процентного использования из TOP. Если у вас есть два процесса на процессоре, их можно использовать на 20%, но у вас может быть нагрузка 2.