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?

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.



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.


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.


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.



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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.