Ми стикаємося з дивною поведінкою, коли ми бачимо високу ефективність використання процесора, але досить низьку середню завантаженість.
Поведінка найкраще проілюстрована наступними графіками нашої системи моніторингу.
Близько 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
Linux dist є Red Hat Enterprise Linux Server release 6.3 (Santiago)
Ми запускаємо пару веб-додатків Java під досить великим навантаженням на машини, подумайте 100 запитів / с на машину.
Якщо я правильно інтерпретую дані використання CPU, коли ми використовуємо 75% процесора, це означає, що наші процесори виконують процес в середньому 75% часу. Однак, якщо наші процесори зайняті 75% часу, чи не слід бачити вищу середню завантаженість? Як процесори можуть бути на 75% зайняті, поки у нас у черзі запуску лише 2-4 завдання?
Чи правильно ми інтерпретуємо наші дані? Що може спричинити таку поведінку?