Значения странного значения cpu, сообщенные pidstat

У меня есть сценарий, который сообщает о потреблении процессора определенной программой, считывающей значения из pidstat. Скрипт запускается как:

pidstat -C ^frontend$ -h -l -p ALL 1 1 

Значения, сообщенные таким образом, иногда превышают 100% -ное использование процессора, что невозможно, поскольку процесс является однопроцессорным.

После того, как вы поднимаетесь и опускаетесь, пытаясь найти то, что может вызвать такое поведение, я попытался просто увеличить время, когда pidstat собирал информацию и нашел, что удивительно, что ценности, как правило, намного более разумны:

 pidstat -C ^frontend$ -h -l -p ALL 1 10 Linux 3.13.0-32-generic (eu-123) 09/22/2014 _x86_64_ (8 CPU) # Time PID %usr %system %guest %CPU CPU Command 1411396853 15884 28.43 29.41 0.00 57.84 1 /srv/propulsor/frontend-01/frontend 1411396853 15911 33.33 32.35 0.00 65.69 2 /srv/propulsor/frontend-02/frontend 1411396853 15968 58.82 0.00 0.00 58.82 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411396854 15884 141.00 4.00 0.00 145.00 1 /srv/propulsor/frontend-01/frontend 1411396854 15911 143.00 5.00 0.00 148.00 2 /srv/propulsor/frontend-02/frontend 1411396854 15968 32.00 13.00 0.00 45.00 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411396855 15884 0.00 0.00 0.00 0.00 1 /srv/propulsor/frontend-01/frontend 1411396855 15911 0.00 0.00 0.00 0.00 2 /srv/propulsor/frontend-02/frontend 1411396855 15968 32.00 32.00 0.00 64.00 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411396856 15884 61.00 0.00 0.00 61.00 1 /srv/propulsor/frontend-01/frontend 1411396856 15911 69.00 0.00 0.00 69.00 2 /srv/propulsor/frontend-02/frontend 1411396856 15968 33.00 31.00 0.00 64.00 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411396857 15884 30.00 7.00 0.00 37.00 1 /srv/propulsor/frontend-01/frontend 1411396857 15911 34.00 20.00 0.00 54.00 2 /srv/propulsor/frontend-02/frontend 1411396857 15968 32.00 32.00 0.00 64.00 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411396858 15884 31.00 32.00 0.00 63.00 1 /srv/propulsor/frontend-01/frontend 1411396858 15911 34.00 33.00 0.00 67.00 2 /srv/propulsor/frontend-02/frontend 1411396858 15968 141.00 7.00 0.00 148.00 3 /srv/propulsor/frontend-03/frontend [snip] 

В сравнении с:

 root@eu-123 ~ # pidstat -C ^frontend$ -h -l -p ALL 3 10 Linux 3.13.0-32-generic (eu-123) 09/22/2014 _x86_64_ (8 CPU) # Time PID %usr %system %guest %CPU CPU Command 1411397159 15884 37.09 10.60 0.00 47.68 1 /srv/propulsor/frontend-01/frontend 1411397159 15911 30.46 29.80 0.00 60.26 2 /srv/propulsor/frontend-02/frontend 1411397159 15968 60.60 13.25 0.00 73.84 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397162 15884 29.33 29.33 0.00 58.67 1 /srv/propulsor/frontend-01/frontend 1411397162 15911 66.00 2.00 0.00 68.00 2 /srv/propulsor/frontend-02/frontend 1411397162 15968 41.00 15.00 0.00 56.00 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397165 15884 66.33 0.00 0.00 66.33 1 /srv/propulsor/frontend-01/frontend 1411397165 15911 30.00 19.67 0.00 49.67 2 /srv/propulsor/frontend-02/frontend 1411397165 15968 61.00 13.33 0.00 74.33 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397168 15884 30.00 23.33 0.00 53.33 1 /srv/propulsor/frontend-01/frontend 1411397168 15911 66.00 21.33 0.00 87.33 2 /srv/propulsor/frontend-02/frontend 1411397168 15968 42.00 15.67 0.00 57.67 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397171 15884 59.00 12.33 0.00 71.33 1 /srv/propulsor/frontend-01/frontend 1411397171 15911 30.00 0.67 0.00 30.67 2 /srv/propulsor/frontend-02/frontend 1411397171 15968 70.00 24.67 0.00 94.67 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397174 15884 37.67 11.00 0.00 48.67 1 /srv/propulsor/frontend-01/frontend 1411397174 15911 30.00 29.67 0.00 59.67 2 /srv/propulsor/frontend-02/frontend 1411397174 15968 33.00 4.67 0.00 37.67 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397177 15884 65.33 21.67 0.00 87.00 1 /srv/propulsor/frontend-01/frontend 1411397177 15911 65.67 2.33 0.00 68.00 2 /srv/propulsor/frontend-02/frontend 1411397177 15968 32.33 32.00 0.00 64.33 3 /srv/propulsor/frontend-03/frontend # Time PID %usr %system %guest %CPU CPU Command 1411397180 15884 29.00 0.00 0.00 29.00 1 /srv/propulsor/frontend-01/frontend 1411397180 15911 30.00 19.33 0.00 49.33 2 /srv/propulsor/frontend-02/frontend 1411397180 15968 70.00 2.33 0.00 72.33 3 /srv/propulsor/frontend-03/frontend [snip] 

Итак, теперь чтение выглядит более разумным, но вопрос для меня остается, что вызывает такую ​​разницу? И как pidstat 1 1 возвращает значения более 100%?

Бонусный вопрос: Должен ли я просто использовать разные инструменты для отслеживания использования процессора в процессорах?

заранее спасибо

Редактировать: Я продолжал исследовать проблему. Похоже, что процесс только начинает делать такую ​​странную вещь через некоторое время (а именно ~ 2 недели жизни). В то же время мы обнаружили увеличение количества подключений, обрабатываемых процессом.

Наблюдаемое поведение состоит в том, чтобы получить пару прогонов pidstat с плоской загрузкой 0% cpu, за которой следует высокий пик, который усреднен по величине десятых остается в пределах ожидаемых значений использования процессора.

Я начинаю думать, что это может быть что-то вроде приложения, которое делает какой-то цикл системных вызовов через пул соединений, который через некоторое время достаточно велик, так что он не записывает свои /proc/ stats, делающие pidstat верю, что использование составляет 0% и, следовательно, набирает большую> 100% -ую пользу после пары раундов на 0.

Когда процесс записывает /proc/ data? Насколько я понимаю, pidstat использует эту информацию для вычисления использования процессора, или я ошибаюсь?

Я надеюсь, что кто-то прольет свет на этот вопрос …

Interesting Posts

Когда своп становится опустошенным, после его использования?

Переместить / tmp в оперативную память

Как заставить smartd игнорировать жесткий диск?

solaris awk проблемы с датой и заявлениями

Разница между Xorg и Gnome / KDE / Xfce

как узнать, какие расширения php установлены

установка драйвера nvidia на archLinux и добыча dogecoin

Что заставляет logcheck загружать 100% загрузки процессора?

Не удается получить пользователя $ HOME поверх su на Solaris и AIX

Установленный (внешний) Linux, дата изменения

Добавьте / удалите рабочую станцию ​​ip в / etc / sysconfig / iptables, а затем запустите перезапуск службы iptables

Вещи, которые нужно проверить после того, как ненадежное устройство USB было установлено

Какова релевантность «en_AU» в «LC_CTYPE»? и что такое `locale LC_CTYPE` вывод?

Найти файлы, grep для шаблона, возглавить первые 10, затем tar

Командный поток команды Shell Script перезаписывает старые строки

Linux и Unix - лучшая ОС в мире.