Мы сталкиваемся со странным поведением, когда мы видим высокую загрузку процессора, но довольно низкую среднюю нагрузку.
Поведение лучше всего иллюстрируется следующими графиками из нашей системы мониторинга.
Примерно в 11:57 загрузка ЦП снижается с 25% до 75%. Средняя нагрузка существенно не изменилась.
Мы запускаем серверы с 12 ядрами с 2 гиперпотоками каждый. ОС видит это как 24 процессора.
Данные об использовании ЦП собираются путем запуска /usr/bin/mpstat 60 1
каждую минуту. Данные для all
строки и %usr
столбца показаны на диаграмме выше. Я уверен, что это показывает среднее значение для каждого процессора, а не «сложенное» использование. В то время как мы видим 75% загрузки на графике, мы видим процесс, показывающий использование около 2000% «стекового» процессора top
.
Среднее значение нагрузки берется с /proc/loadavg
каждой минуты.
uname -a
дает:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Линукс дист есть Red Hat Enterprise Linux Server release 6.3 (Santiago)
Мы запускаем пару веб-приложений на Java при довольно большой нагрузке на машины, примерно 100 запросов / с на машину.
Если я правильно интерпретирую данные об использовании ЦП, то при использовании ЦП 75% это означает, что наши ЦП выполняют процесс в среднем 75% времени. Однако, если наши процессоры заняты 75% времени, разве мы не видим более высокую среднюю нагрузку? Как процессоры могут быть заняты на 75%, в то время как у нас есть только 2-4 задания в очереди выполнения?
Правильно ли мы интерпретируем наши данные? Что может вызвать это поведение?