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ć?

viraptor
źródło

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.

Mei
źródło
14
top -H -p pid 

mam nadzieję, że to może pomóc

liu bluse
źródł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.

Lexsys
źródło
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ć.

Sven
źródło
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.


źródło
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
Umut
źródło