Linux:どのプロセスがどのコアに固定されているのか、どうすればわかりますか?

Linux:どのプロセスがどのコアに固定されているのか、どうすればわかりますか?

現在どのコアに固定されたプロセスがあるかを知る方法はありますか?

他のユーザーが実行するプロセスも出力にリストする必要があります。

または、プロセスをコアに固定しようとしましたが、目的のコアにすでにプロセスが固定されている場合は失敗する可能性がありますか?

PS:関心のあるプロセスは、特定のコアで現在実行されているだけでなく、指定されたコアにビンを固定する必要があります。

PS:これは重複ではありません。もう一つの質問は、プロセスがCPUを独占しているかどうかを確認する方法です。ここでは、プロセスが特定のコアに固定されているかどうかを検出する方法を尋ねます(つまり、使用方法ではなくcpusetを使用します)。

ベストアンサー1

一般的な状況では、Linuxプロセスは指定されたコアに明示的に固定されず、通常はそうする理由はありませんが、可能です。

tasksetpsフィールドとpsrフィールドを使用してプロセスの優先順位を管理したり、現在どのプロセスがどのCPUで実行されているかを確認したりできます。

プロセス27395の現在のCPUアフィニティを確認します。

$ ps -o psr 27395
PSR
  6

プロセス27395の接続リストを確認してください。

$ taskset -pc 27395
pid 27395's current affinity list: 0-7

プロセス27395のアフィニティをCPU 3に設定

$ taskset -pc 3 27395
pid 27395's current affinity list: 0-7
pid 27395's new affinity list: 3

プロセス27395の現在のCPUアフィニティを確認します。

$ ps -o psr 27395
PSR
  3

プロセスがCPUに固定されていることを確認するには、プロセス識別子を繰り返しtaskset -p実行します。

$ for pid in $(ps -a -o pid=); do taskset -pc $pid 2>/dev/null; done
pid 1803's current affinity list: 0-7
pid 1812's current affinity list: 0-7
pid 1986's current affinity list: 0-7
pid 2027's current affinity list: 0-7
pid 2075's current affinity list: 0-7
pid 2083's current affinity list: 0-7
pid 2122's current affinity list: 0-7
pid 2180's current affinity list: 0-7
pid 2269's current affinity list: 0-7
pid 2289's current affinity list: 0-7
pid 2291's current affinity list: 0-7
pid 2295's current affinity list: 0-7
pid 2300's current affinity list: 0-7
pid 2302's current affinity list: 0-7
pid 3872's current affinity list: 0-7
pid 4339's current affinity list: 0-7
pid 7301's current affinity list: 0-7
pid 7302's current affinity list: 0-7
pid 7309's current affinity list: 0-7
pid 13972's current affinity list: 0-7

おすすめ記事