Tentukan CPU yang menjalankan proses

19

Menggunakan Proses Explorer Sysinternals, apakah ada kolom yang dapat digunakan untuk menunjukkan CPU yang menjalankan proses? Jika tidak ada kolom, apakah ada cara lain?

rory.ap
sumber
3
@ Davidvidost - Jawaban terbaik hanya menunjuk ke halaman web Process Explorer. Pertanyaan saya adalah: diberikan proses explorer, bagaimana cara menentukan inti proses yang dimulai?
rory.ap

Jawaban:

47

Diminta pada tahun 2005 :

Saya sangat terkesan dengan fitur-fitur yang terintegrasi dalam Process Explorer tetapi ingin melihat opsi untuk menampilkan setiap proses afinitas CPU di jendela utama sebagai toggle kolom.

Tidak ada respon.

Diminta pada tahun 2007 :

Terima kasih atas utilitas yang luar biasa. Permintaan saya adalah menambahkan opsi kolom untuk memproses explorer untuk menampilkan afinitas CPU. Itu dia.

Tidak ada respon.

Mirip dibahas pada 2013 :

Akan sangat menyenangkan jika ada Kolom Tampilan Proses Kinerja baru yang disebut Core Usage yang akan menunjukkan jumlah penggunaan di atas inti yang sedang dijalankan oleh proses.

Sinopsis dasar: Tidak bisa dilakukan.

Thread adalah apa yang dikirim ke inti untuk diproses, bukan proses. Sebagian besar proses modern memiliki banyak utas.

Jika Anda secara manual mengatur afinitas untuk suatu proses, maka semua utas untuk proses tersebut harus menempel pada satu prosesor. Karena Anda mengaturnya secara manual, Anda harus tahu CPU mana yang hidup. ;)

Tetapi jika Anda tidak menentukan, maka utas akan dikontrol oleh OS dan perangkat keras pemrosesan yang mendasarinya, dan akan melompat-lompat di antara prosesor dengan kecepatan yang tidak dapat ditonton, dan sangat mungkin tidak akurat pada saat ditampilkan. kamu.

Mungkin lihat pertanyaan SU ini untuk lebih lanjut:

Juga, dari StackOverflow:

Sekarang jika Anda menulis program, Anda bisa menggunakan GetCurrentProcessorNumber , yang melaporkan prosesor saat ini digunakan oleh utas dari mana fungsi dipanggil.

Dengan menggunakan ini, Anda dapat membuat estimasi tentang penggunaan prosesor oleh utas Anda, karena Anda tidak akan pernah yakin di mana utas akan menjadi satu siklus ke siklus berikutnya (sekali lagi, kecuali jika Anda menetapkan afinitas dengan sengaja).

Info lebih lanjut:

Ƭᴇcʜιᴇ007
sumber
3
Jawaban yang bagus ... :)
DavidPostill
@DavidPostill - Setuju.
rory.ap
Jawaban yang bagus, ketika menjawab pertanyaan spesifik, masuk ke sejarah dan mengapa, dan membantu untuk memahami konsep-konsep.
Smithers
1
Baik di Linux maupun Windows dimungkinkan untuk mengatur afinitas berdasarkan per-utas. Namun, ini jarang berguna, oleh karena itu jarang dilakukan, oleh karena itu menampilkan afinitas per-utas dalam program pemantauan generik jika diset lebih atau kurang berguna - sebagian besar hanya akan membiarkan jadwal kernel sesuai keinginan.
Bob
OS bahkan dapat mengalihkan utas Anda ke prosesor lain tepat setelah GetCurrentProcessorNumber dipanggil (tetapi sebelum mulai dijalankan) dan kembali tepat setelah kembali, sehingga hasilnya bukan prosesor pada saat panggilan, atau prosesor pada saat itu. panggilan kembali!
gnasher729
8

Ini dapat dilakukan dengan menangkap jejak xperf dan membukanya dengan Windows Performance Analyzer (WPA.exe) dari Windows Performance Toolkit, di sini Anda dapat menambahkan kolom CPU untuk melihat CPU (Core) mana yang sedang dijalankan:

masukkan deskripsi gambar di sini

magicandre1981
sumber
Bagus. Apakah itu mencantumkan proses yang sama di bawah setiap CPU (jika menggunakan lebih dari satu)? Karena menggunakan jejak xperf yang ditangkap, apakah itu berarti itu bukan pelaporan langsung?
Ƭᴇcʜιᴇ007
@ Ƭᴇcʜιᴇ007 Acara ETW juga dapat dikonsumsi saat runtime. Menulisnya ke file ETL hanya satu cara. Ya, itu mencantumkan proses di bawah kedua CPU ketika menggunakan keduanya.
magicandre1981