Intereting Posts
Каковы минимальные требования для запуска графического приложения? Сценарий завершения работы Hook для закрытия sequnce Почему эта бомба вилка-раковины не работает на моей RHEL VM? Перемешать два параллельных текстовых файла Корневой корень между двумя установками Linux Как смонтировать существующий RAID-5? Как интегрировать несколько сценариев Python / Perl для исполнения в одном сценарии bash? Как использовать регулярное выражение в sed? Включают ли записи в / etc / fstab то, к каким точкам разделов устройств подключается автоматически? Как узнать, сколько каталогов на этом пути? Почему configure принимает переменные в качестве аргументов? Нужна помощь в интерпретации ответа sendmail maillog Сценарий оболочки для резервного копирования VMware VM, экспорт каждой виртуальной машины в список, а затем запрос пользователя на ввод Как перенести вещи из моего репозитория Glelab git в мой репозиторий Gitlab git? Как найти машину, с которой пользователь вошел в текущую машину с помощью ssh?

Использование процессора в соответствии с ps и operf

Я приобрел некоторые данные, казалось бы, в конфликте из двух источников, которые можно было бы считать надежными. По всей видимости, я неправильно читаю один из источников.

Серверная среда: Ubuntu 14.04.2 LTS, 3.13.0-53-generic

С одной стороны, есть сценарий Python, который отображает использование ЦП и превращает его в InfluxDB, который получает от Grafana. Используемая команда сводится к чему-то вроде:

ps -eLo pid,lwp,pcpu | grep 2924 | awk {'print $2,$3'} ... 2924 2924 0.1 2924 2926 2.4 2924 2927 2.4 2924 2930 2.4 2924 2933 2.4 2924 2935 0.0 2924 3096 0.0 2924 3099 9.0 2924 3100 5.7 

Графики отчетливо прогнозируются в большинстве случаев, хотя использование ЦП производится только каждые 45 секунд.

Согласно этому графику, поток, который вызывает Foo() когда он появляется, имеет самое высокое использование ЦП всего вышеперечисленного. Фактически, TID 3099 из указанного фактического выхода является рассматриваемой нитью. Это высокое использование сохраняется в течение дня при различных нагрузках данных и т. Д.

С другой стороны, у нас есть пакет OProfile. Я бегал operf -gl на эту программу в течение нескольких часов вчера и получил здоровый кусок данных взамен. Когда отображается opreport -gc , я получаю следующую строку:

 46423 0.2396 FooManager.cpp:625 foobinary.V0.28 Foo() 

Это строка, в которой Foo() имеет ограничений. Поэтому я читаю об этом: Foo() отвечает за значительно большее использование ЦП, чем его сопутствующие потоки, последовательно. Тем не менее, при профилировании всего 0,2396% отснятых образцов показывали функцию в стеке вызовов.

Это кажется невозможным. Конечно, поток, который имеет наибольшее относительное использование ЦП для своих коллег, будет составлять наибольший процент проб профилей?