Apakah ada cara untuk mengukur proses tertentu penggunaan CPU berdasarkan inti?
Saya tahu top bagus untuk mengukur penggunaan CPU seluruh sistem dengan inti dan kumpulan tugas dapat memberikan informasi tentang inti CPU mana yang diizinkan untuk menjalankan proses.
Tetapi bagaimana cara mengukur penggunaan CPU proses tertentu oleh inti CPU?
I
untuk beralih mode Irix (sebagai lawan dari mode Solaris ). Jikaon
, persentase yang ditampilkan dalam daftar proses relatif terhadap utas CPU . Ketikaoff
, persentase tersebut ditampilkan relatif terhadap keseluruhan kapasitas CPU (yaitu SEMUA utas - alias semua inti).top
,man
kata halamantop -1
tetapi mengeluh! Akan menyenangkan untuk mendapatkantop -1 -n 1
satu iterasitop
tetapi dengan penggunaan CPU terpisah ditampilkan.Kamu bisa memakai:
Ini menunjukkan seberapa banyak setiap inti sibuk dan diperbarui secara otomatis setiap detik. Outputnya akan seperti ini (pada prosesor quad-core):
Perintah ini tidak menjawab pertanyaan asli, yaitu tidak menunjukkan penggunaan inti CPU untuk proses tertentu.
sumber
Anda bisa menggunakan
ps
.misalnya memiliki proses python dengan dua utas sibuk pada CPU inti ganda:
(PSR adalah id CPU tempat utas saat ini ditetapkan)
Anda melihat bahwa utas berjalan pada inti cpu yang sama (karena GIL)
menjalankan skrip python yang sama di jython, kita lihat, bahwa skrip menggunakan kedua inti (dan ada banyak layanan lain atau utas apa pun, yang hampir tidak aktif):
Anda dapat memproses output dan menghitung total CPU untuk setiap inti CPU.
Sayangnya, pendekatan ini tampaknya tidak 100% dapat diandalkan, terkadang saya melihat bahwa dalam kasus pertama, dua utas kerja dilaporkan dipisahkan ke setiap inti CPU, atau dalam kasus terakhir, dua utas dilaporkan berada di inti yang sama ..
sumber
htop
memberikan gambaran yang bagus tentang penggunaan inti individusumber
The
ps
solusi hampir apa yang saya butuhkan dan dengan beberapa pesta dilemparkan tidak persis apa pertanyaan awal meminta: untuk melihat per-core penggunaan proses tertentuIni menunjukkan penggunaan per-inti dari proses multi-thread juga.
Gunakan seperti: cpustat `pgrep processname`` pgrep otherprocessname` ...
Catatan: Statistik ini didasarkan pada umur proses , bukan X detik terakhir , jadi Anda harus memulai ulang proses untuk mengatur ulang penghitung.
sumber
Juga akan memberi Anda penggunaan CPU dari 4 inti pertama. Tentu saja, jika Anda memiliki 32 inti maka perintah ini menjadi sedikit lebih lama tetapi berguna jika Anda hanya tertarik pada beberapa inti.
Misalnya, jika Anda hanya tertarik pada inti 3 dan 7 maka Anda dapat melakukannya
sumber
Saya baru saja mengalami masalah ini dan saya menemukan jawaban yang serupa di sini .
top
Caranya adalah dengan menyetel sesuai keinginan Anda lalu tekanW
(kapital W). Ini menyimpantop
tata letak saat ini ke file konfigurasi di $ HOME / .toprcMeskipun ini mungkin tidak berhasil jika Anda ingin menjalankan beberapa
top
dengan konfigurasi berbeda.Jadi melalui apa yang saya anggap sebagai pekerjaan di sekitar Anda dapat menulis ke file konfigurasi yang berbeda / menggunakan file konfigurasi yang berbeda dengan melakukan salah satu hal berikut ...
1) Ubah nama biner
Sekarang
.top2rc
akan ditulis ke $ HOME Anda2) Setel $ HOME ke beberapa jalur alternatif, karena ini akan menulis file konfigurasinya ke file $ HOME / .binary-name.rc
Sekarang
.toprc
akan ditulis ke folder saat ini.Melalui penggunaan komentar orang lain untuk menambahkan berbagai akuntansi penggunaan di atas, Anda dapat membuat output batch untuk informasi tersebut dan kemudian menggabungkan informasi melalui skrip. Mungkin tidak sesederhana skrip Anda tetapi saya menemukan bagian atas untuk memberi saya SEMUA proses sehingga nanti saya dapat merekap dan menangkap keadaan selama jangka panjang yang mungkin saya lewatkan jika tidak (penggunaan CPU tiba-tiba yang tidak dapat dijelaskan karena proses yang menyimpang)
sumber
Saya pikir
perf stat
itu yang Anda butuhkan.Ini menunjukkan penggunaan tertentu dari suatu proses saat Anda menentukan
--cpu=list
opsi. Berikut adalah contoh pemantauan penggunaan cpu dalam membangun proyek menggunakanperf stat --cpu=0-7 --no-aggr -- make all -j
perintah. Outputnya adalah:Kolom kiri adalah indeks CPU spesifik dan kolom paling kanan adalah penggunaan CPU. Jika Anda tidak menentukan
--no-aggr
opsi, hasilnya akan digabungkan. The--pid=pid
pilihan akan membantu jika Anda ingin memantau proses yang berjalan.Coba
-a --per-core
atau-a perf-socket
juga, yang akan menyajikan informasi yang lebih rahasia.Lebih lanjut tentang penggunaan
perf stat
dapat dilihat di tutorial ini: statistik kinerja cpu , jugaperf help stat
akan membantu tentang arti opsi.sumber