Uzyskiwanie statystyki procesora dla wątku


17

Interesuje mnie bieżące użycie procesora - dokładnie procesora% i czekania% - dla każdego wątku w określonej aplikacji. Czy można skądś uzyskać te informacje?

Wiem, że topmoże dzielić informacje według rzeczywistych wątków (z pid), ale nie pokazuje podziału systemu / użytkownika / oczekiwania procesora dla każdego z nich. Chciałbym też w jakiś sposób zalogować te informacje. Czy znasz jakieś aplikacje (lub api), które mogą to zrobić?

Odpowiedzi:


4

Zajrzałbym do SystemTap . To narzędzie z pewnością da ci to, czego chcesz. Jest ten przykład profilowania wątków; nie wiem, czy ma wszystko, czego chcesz, ale możesz to zmodyfikować, aby to zrobiło.



12

Procent wykorzystania procesora na wątek, który można uzyskać za pomocą pspolecenia:

 ps -emo %cpu,pid,user,args

Sposób jego obliczania opisano w ps manpage:

Obecnie jest to czas pracy procesora podzielony przez czas działania procesu (stosunek wydajności do czasu rzeczywistego), wyrażony w procentach.


Naprawdę interesuję się zarówno czasem procesora, jak i czasem oczekiwania. ps niestety nie może obsłużyć drugiego.
viraptor,

uwaga do siebie: zamień -e na -C java i pid przez spid dla wątków ID w aplikacji Java
kellogs

2
większa uwaga dla siebie: ps -To pcpu,tid -C java | sort -r -k1 | moredla wątków wieprzowych w aplikacji Java. ps --sort=pcpunic nie osiąga; lepiej polegać na powłoce podczas sortowania.
kellogs

Bardzo przydatne @kellogs, dzięki. Dodałbym -nlub -gposortował, aby na przykład „10” pokazywało się powyżej „2”.
EM0,

0

Może rzucisz okiem na htop, możesz go całkiem sporo skonfigurować.


niestety nie można podzielić CPU na użytkownika / systemu / czas oczekiwania do konkretnego wątku - tylko dla całej maszyny
viraptor

Tak, ale jak miałbym to zrobić?
rmobis

0

Próbowałeś sar? Może pobrać wiele informacji, nawet na poziomie pid.



0

Natknąłem się na to w systemie wbudowanym, w którym nie mamy fantazyjnych narzędzi, aby zajrzeć do tego.

W tym celu użyłem cpuacct cgroupi umieściłem każdy wątek w osobnym folderze. W ten sposób mogłem zmierzyć ich użycie.

Hierarchia wyglądała tak:

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

Potem zmieniłem na

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.