GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa melihat inti CPU mana yang menjalankan utas?

Perintah "atas" dapat membantu dalam hal ini, ia tidak memiliki daftar utas yang dikelompokkan CPU, tetapi Anda dapat melihat daftar utas (mungkin untuk satu proses) dan inti CPU mana yang dijalankan oleh utas

top -H -p {PROC_ID}

lalu tekan f untuk masuk ke pemilihan kolom, j untuk mengaktifkan kolom inti CPU, dan Enter untuk ditampilkan.


Anda juga dapat menggunakan ps , sesuatu seperti ini:

ps -mo pid,tid,%cpu,psr -p `pgrep BINARY-NAME`

Jawaban di bawah tidak lagi akurat mulai tahun 2014

Tugas tidak tidur di inti tertentu. Dan penjadwal tidak akan tahu sebelumnya inti mana yang akan menjalankan utas karena itu akan bergantung pada penggunaan inti tersebut di masa mendatang.

Untuk mendapatkan informasi yang Anda inginkan, lihat di /proc//task//status. Bidang ketiga akan menjadi 'R' jika utas sedang berjalan. Kolom keenam dari kolom terakhir akan menjadi inti tempat thread sedang berjalan, atau inti tempat terakhir kali dijalankan (atau tempat tujuan migrasi) jika saat ini tidak sedang berjalan.

31466 (bc) S 31348 31466 31348 34819 31466 4202496 2557 0 0 0 5006 16 0 0 20 0 1 0 10196934 121827328 1091 18446744073709551615 4194304 4271839 140737264235072 140737264232056 217976807456 0 0 0 137912326 18446744071581662243 0 0 17 3 0 0 0 0 0

Saat ini tidak berjalan. Terakhir dijalankan pada core 3.

31466 (bc) R 31348 31466 31348 34819 31466 4202496 2557 0 0 0 3818 12 0 0 20 0 1 0 10196934 121827328 1091 1844674073726 02409426.2240926 0 0 0 0 0

Saat ini berjalan pada core 2.

Untuk melihat apa arti kolom lainnya, lihat sumber kernel Linux -- khususnya do_task_stat fungsi di fs/proc/array.c atau Documentation/filesystems/stat.txt .

Perhatikan bahwa semua informasi ini mungkin sudah usang pada saat Anda mendapatkannya. Memang benar di beberapa titik antara saat Anda membuat open panggil file di proc dan saat panggilan itu kembali.


Utas tidak diperlukan untuk mengikat satu Inti tertentu (jika Anda tidak menyematkannya). Oleh karena itu untuk melihat pergantian inti yang berkelanjutan, Anda dapat menggunakan (jawaban yang dimodifikasi dari Dmitry):

watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep BINARY-NAME\`

Misalnya:

watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep firefox\`

Linux
  1. Linux – Bagaimana Membatasi Proses Ke Satu Cpu Core Di Linux??

  2. Bagaimana Anda bisa menemukan nomor prosesor tempat utas berjalan?

  3. Bagaimana saya bisa mengetahui jalur absolut dari proses yang sedang berjalan?

  1. Cara Memeriksa Versi Postgres Yang Sedang Berjalan/Diinstal

  2. Bagaimana cara mengidentifikasi distro Linux mana yang sedang berjalan?

  3. Bagaimana saya bisa melihat keluaran dmesg saat berubah?

  1. Linux – Bagaimana Cara Mengidentifikasi Distro Linux Yang Sedang Berjalan??

  2. Bagaimana Cara Mendapatkan Tty Di Bash Yang Sedang Berjalan?

  3. Bagaimana saya bisa Menonaktifkan Penskalaan Frekuensi CPU?