GNU/Linux >> Linux の 問題 >  >> Linux

スレッドが実行されている CPU コアを確認するにはどうすればよいですか?

「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//task//status を調べます。スレッドが実行中の場合、3 番目のフィールドは「R」になります。最後のフィールドから 6 番目のフィールドは、スレッドが現在実行されているコア、または現在実行されていない場合は最後に実行された (または移行された) コアになります。

<ブロック引用>

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\`

Linux
  1. スレッドが実行されているプロセッサ番号を見つけるにはどうすればよいですか?

  2. Python はどの OS で実行されているかを検出できますか?

  3. MySQL が実行されているポートと、接続できるかどうかをテストする方法は?

  1. スワップを使用しているプロセスを知るにはどうすればよいですか?

  2. 高CPU使用率を引き起こしているプロセスを見つける方法

  3. 実行しているユーザー制限を確認するにはどうすればよいですか?

  1. 実行/インストールされているPostgresのバージョンを確認する方法

  2. Linux –実行中のLinuxディストリビューションを特定する方法は??

  3. Linux - ディスク IO を待っているものを確認するにはどうすればよいですか