Saya memiliki akses ke simpul 8-inti dari cluster Linux. Ketika masuk ke node, saya bisa melihat daftar prosesor menggunakan perintah ini:
more /proc/cpuinfo
Dalam simpul 8-core saya, prosesor diberi nomor dari 0 hingga 7. Setiap prosesor adalah CPU Intel Xeon (E5430 @ 2.66GHz).
Sekarang anggaplah saya memanggil program foo
dengan beberapa argumen args
:
foo args
Program ini foo
membutuhkan waktu lama untuk dieksekusi (jam atau hari, misalnya). Setelah dipanggil foo
, apakah mungkin untuk menentukan prosesor tertentu (yaitu, 0 hingga 7) yang foo
sedang berjalan? The top
Program acara saya proses ID dan informasi serupa, tapi saya tidak melihat prosesor nomor . Apakah informasi tersebut tersedia?
foo
ke dua prosesor yang berbeda. Ketika saya meneleponfoo
sekali, itu berjalan dengan%CPU
sangat dekat dengan 100% (menuruttop
). Tetapi ketika saya memanggilfoo
kedua kalinya, keduafoo
proses berjalan sedemikian rupa sehingga%CPU
untuk kedua proses berjumlah kurang dari 100% (biasanya sekitar 45% untuk setiapfoo
proses). Bagi saya, ini menunjukkan bahwa dua panggilan untukfoo
berjalan pada prosesor yang sama (walaupun ada delapan prosesor yang tersedia); Saya ingin memverifikasi bahwa ini masalahnya.Jawaban:
ps
dapat memberi Anda informasi itu jika Anda memintapsr
kolom (atau menggunakan-F
bendera yang memasukkannya).Ex:
Atau:
Shell saya berjalan pada CPU 2 ketika saya menjalankan perintah pertama, pada CPU 0 ketika saya menjalankan yang kedua. Hati-hati karena proses dapat mengubah CPU dengan sangat cepat sehingga informasi yang Anda lihat sebenarnya sudah basi.
Beberapa info lebih lanjut dalam jawaban pertanyaan Pengguna Super ini:
Linux: perintah untuk mengetahui nomor prosesor di mana suatu proses dimuat?
sumber
Dengan
top
dariprocps
(umumnya default pada distribusi Linux saat ini), ditop
, tekan f, navigasikan keP = Last User CPU (SMP)
dan tekan Spaceuntuk memilih (Anda juga dapat memindahkan bidang misalnya sebelumCOMMAND
bidang dengan Righttombol dan kemudian bergerak ke atas dan ke bawah). quntuk kembali ke layar utama (di mana Anda akan melihat proses Anda berpindah dari satu prosesor ke prosesor lain kecuali Anda mengonfigurasinya secara eksplisit untuk tetap menggunakan satu). Anda dapat menekan Wuntuk menyimpannya sebagai default.Tekan ?untuk bantuan.
sumber
Perintahnya
taskset
adalah apa yang Anda cari:tasket - mengambil atau mengatur afinitas CPU suatu proses
Contoh
Topeng
f
berarti semua prosesor,0x00000001
akan menjadi hanya prosesor 0.Menampilkan format daftar cpu. Saya memiliki 4 core pada laptop saya dalam contoh ini.
Lihat halaman manual memiliki lebih banyak detail .
sumber
Anda juga bisa mendapatkan info ini langsung dari
/proc/[pid]/stat
. Ini adalah bidang terbatas-ruang ke-39 (sejak Linux 2.2.8).Misalnya untuk menampilkan prosesor CPU yang menjalankan shell saat ini (saat ini):
sumber