Eu examinaria o SystemTap . Esta ferramenta certamente lhe dará o que você deseja. Há este exemplo de tópicos de criação de perfil; não sei se tem tudo o que você quer, mas você pode modificá-lo para que isso aconteça.
Estou interessado no uso atual de cpu - precisamente cpu% e wait% - para cada thread em um aplicativo específico. É possível obter essa informação de algum lugar?
Eu sei que top
pode dividir informações por thread real (com pid), mas não mostra a divisão de uso do sistema / user / wait cpu para cada um deles. Eu também gostaria de alguma maneira de registrar essa informação. Você conhece algum aplicativo (ou apis) que possa fazer isso?
Porcentagem de uso da CPU por encadeamento que você pode obter com o comando ps
:
ps -emo %cpu,pid,user,args
A maneira como é calculada é descrita em ps manpage
:
Currently, it is the CPU time used divided by the time the process has been running (cputime/realtime ratio), expressed as a percentage.
top -H -p pid
espero que possa ajudar
Talvez dê uma olhada no htop, você pode configurar bastante com ele.
Você tentou sar? Pode buscar muita informação, mesmo no nível de pid.
Nagios e PNP link
Funciona muito bem ... pouca configuração.
Eu tropecei nisso em um sistema embarcado onde não temos as ferramentas sofisticadas para procurar essas coisas.
Para isso, usei cpuacct cgroup
e coloquei cada thread em sua própria pasta. Dessa forma, consegui medir seu uso.
A hierarquia estava assim:
my-app.service
|-tid1
|-tid2
|-tid3
Então eu mudei para
my-app.service
|-dir1
| -tid1
|-dir2
| -tid2
|-dir3
| -tid3