「top」コマンドはこれに役立つ可能性があります。CPU グループ化されたスレッドのリストはありませんが、スレッドのリスト (おそらく単一のプロセス) と、スレッドが実行されている CPU コアを確認できます
top -H -p {PROC_ID}
次に f を押します フィールド選択に入る j CPU コア列を有効にして、Enter 表示します。
ps
も使用できます 、次のようなもの:
ps -mo pid,tid,%cpu,psr -p `pgrep BINARY-NAME`
2014 年現在、以下の回答は正確ではありません
タスクは特定のコアでスリープしません。また、スケジューラは、スレッドを実行するコアを事前に知りません。これは、それらのコアの将来の使用に依存するためです。
必要な情報を取得するには、/proc/
31466 (紀元前) 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
現在実行されていません。最後にコア 3 で実行しました。
<ブロック引用>31466 (紀元前) R 31348 31466 31348 34819 31466 4202496 2557 0 0 0 3818 12 0 0 20 0 1 0 10196934 121827328 1091 18446744073709551615 4194304 4271839 140737264235072 140737264231824 4235516 0 0 0 2 0 0 0 17 2 0 0 0 0 0
現在、コア 2 で実行されています。
残りのフィールドの意味を確認するには、Linux カーネル ソース、特に do_task_stat
を見てください。 fs/proc/array.c
の関数 または Documentation/filesystems/stat.txt
.
この情報はすべて、入手するまでに古くなっている可能性があることに注意してください。 open
を作成するまでの間のある時点で、それは本当でした proc 内のファイルに対する呼び出しと、その呼び出しが返されたとき。
1 つの特定のコアをバインドするためにスレッドは必要ありません (固定していない場合)。したがって、使用できるコアの継続的な切り替えを確認するには (Dmitry の修正された回答):
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep BINARY-NAME\`
例:
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep firefox\`