Получение статистики по процессорам

17

Меня интересует текущее использование cpu - именно cpu% и wait% - для каждого потока в конкретном приложении. Можно ли получить эту информацию откуда-то?

Я знаю, что это topможет разделить информацию по реальным потокам (те, что с pid), но это не показывает разделение использования процессора системой / пользователем / ожиданием для каждого из них. Я также хотел бы каким-то образом регистрировать эту информацию. Знаете ли вы какие-либо приложения (или API), которые могут сделать это?

viraptor
источник

Ответы:

4

Я бы посмотрел в SystemTap . Этот инструмент, безусловно, даст вам то, что вы хотите. Вот этот пример профилирования потоков; не знаю, есть ли у вас все, что вы хотите, но вы можете изменить его, чтобы он сделал.

Mei
источник
14
top -H -p pid 

надеюсь, что это может помочь

Лю Блюз
источник
12

Процент использования процессора на поток, который вы можете получить с помощью psкоманды:

 ps -emo %cpu,pid,user,args

Способ его расчета описан в ps manpage:

В настоящее время это использованное процессорное время, деленное на время выполнения процесса (отношение cputime / realtime), выраженное в процентах.

lexsys
источник
Я действительно интересуюсь как временем процессора, так и временем ожидания. PS не может справиться со вторым, к сожалению.
viraptor
примечание к себе: замените -e на -C java и pid на spid для идентификаторов потоков в java-приложении
kellogs
2
больше примечание к себе: ps -To pcpu,tid -C java | sort -r -k1 | moreдля свиней темы в приложении Java. ps --sort=pcpuничего не достигает; лучше полагаться на оболочку для сортировки.
kellogs
Очень полезный @kellogs, спасибо. Я бы добавил -nили -gотсортировал, чтобы «10» показывалось выше «2», например.
EM0
0

Может быть, посмотрите на htop, вы можете настроить довольно много с ним.

Свен
источник
к сожалению, он не может разделить процессор по пользователю / системе / времени ожидания для определенного потока - только для всей машины
viraptor
Да, но как мне это сделать?
rmobis
0

Ты пробовал сар? Он может получить много информации даже на уровне pid.


источник
0

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

Для этого я использовал cpuacct cgroupи поместил каждый поток в свою папку. Таким образом, я смог измерить их использование.

Иерархия выглядела так:

my-app.service
|-tid1
|-tid2
|-tid3

Затем я изменил его на

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
Умут
источник