Mendapatkan statistik cpu per utas

17

Saya tertarik dengan penggunaan cpu saat ini - tepatnya cpu% dan tunggu% - untuk setiap utas dalam aplikasi tertentu. Apakah mungkin mendapatkan informasi itu dari suatu tempat?

Saya tahu bahwa topdapat membagi informasi per utas nyata (yang dengan pid), tetapi tidak menunjukkan sistem / pengguna / menunggu pemisahan penggunaan cpu untuk masing-masing. Saya juga ingin beberapa cara untuk login info itu. Apakah Anda tahu ada aplikasi (atau apis) yang bisa melakukan itu?

viraptor
sumber

Jawaban:

4

Saya akan melihat SystemTap . Alat ini pasti akan memberi Anda apa yang Anda inginkan. Ada ini contoh profil benang; tidak tahu apakah ia memiliki semua yang Anda inginkan, tetapi Anda bisa memodifikasinya sehingga bisa.

Mei
sumber
14
top -H -p pid 

semoga bisa membantu

liu bluse
sumber
11

Persentase penggunaan cpu per utas yang dapat Anda peroleh dengan psperintah:

 ps -emo %cpu,pid,user,args

Cara perhitungannya dijelaskan dalam ps manpage:

Saat ini, ini adalah waktu CPU yang digunakan dibagi dengan waktu proses telah berjalan (rasio cputime / realtime), dinyatakan dalam persentase.

lexsys
sumber
Saya benar-benar tertarik pada waktu cpu dan waktu tunggu io. ps sayangnya tidak bisa menangani yang kedua.
viraptor
catatan untuk diri sendiri: ganti -e oleh -C java dan pid dengan spid untuk Id thread di aplikasi java
kellogs
2
catatan yang lebih besar untuk diri sendiri: ps -To pcpu,tid -C java | sort -r -k1 | moreuntuk utas hog di aplikasi java. ps --sort=pcputidak mencapai apa pun; lebih baik mengandalkan shell untuk bagian sortasi.
Kellogs
@Kellogs sangat berguna, terima kasih. Saya akan menambahkan -natau -gmengurutkan, sehingga "10" muncul di atas "2", misalnya.
EM0
0

Mungkin lihat di htop, Anda dapat mengkonfigurasi cukup banyak dengannya.

Sven
sumber
sayangnya tidak bisa membagi cpu pada user / sistem / menunggu waktu untuk thread tertentu - hanya untuk seluruh mesin
viraptor
Ya, tetapi bagaimana saya akan melakukannya?
rmobis
0

Apakah Anda mencoba sar? Itu dapat mengambil banyak informasi bahkan pada level pid.


sumber
0

Saya menemukan ini pada sistem tertanam di mana kita tidak memiliki alat mewah untuk melihat hal-hal ini.

Untuk ini, saya telah menggunakan cpuacct cgroupdan menempatkan setiap utas ke foldernya sendiri. Dengan cara ini saya bisa mengukur penggunaannya.

Hirarki terlihat seperti ini:

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

Lalu saya mengubahnya menjadi

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
Umut
sumber