Меня интересует текущее использование cpu - а именно cpu% и wait% - для каждого потока в конкретном приложении. Можно ли откуда-нибудь получить эту информацию?
я знаю это top
может разделять информацию на реальный поток (те, что с pid), но не показывает разделение использования системы / пользователя / ожидания процессора для каждого из них. Я также хотел бы как-нибудь записать эту информацию. Знаете ли вы какие-нибудь приложения (или API), которые могут это сделать?
top -H -p pid
надеюсь, это поможет
Процент использования ЦП на поток, который вы можете получить с ps
команда:
ps -emo %cpu,pid,user,args
Способ его расчета описан в ps manpage
:
В настоящее время это используемое время ЦП, разделенное на время выполнения процесса (соотношение процессорного времени / реального времени), выраженное в процентах.
Я бы посмотрел в SystemTap. Этот инструмент обязательно даст вам то, что вы хотите. Там есть этот пример профилирования резьбы; не знаю, есть ли в нем все, что вам нужно, но вы можете изменить его так, чтобы оно было.
Может быть, взгляните на htop, вы можете настроить с его помощью довольно много.
Вы пробовали сар? Он может получать много информации даже на уровне pid.
Nagios и PNP http://docs.pnp4nagios.org/pnp-0.4/start
Работает офигенно ... небольшая настройка.
Я наткнулся на это во встраиваемой системе, где у нас нет причудливых инструментов для изучения этого материала.
Для этого я использовал cpuacct cgroup
и поместил каждый поток в свою папку. Таким образом я смог измерить их использование.
Иерархия выглядела так:
my-app.service
|-tid1
|-tid2
|-tid3
Затем я изменил его на
my-app.service
|-dir1
| -tid1
|-dir2
| -tid2
|-dir3
| -tid3