2

複数のプロセッサ/コアと2つのスレッドがある場合を考えてみましょう。Linuxスケジューラーに、実行のすべてのインスタンスで常に特定のスレッド(両方)を特定のプロセッサーにスケジュールするように強制することは可能ですか?作成中に、この目的には十分なプロセッサアフィニティをスレッドに設定していますか

4

1 に答える 1

3

のマニュアルページをtaskset見ると、次のステートメントが表示されます。

Linux スケジューラは指定された CPU アフィニティを尊重し、プロセスは他の CPU では実行されません。

つまり、特定のプロセスに CPU アフィニティを設定すると、そのプロセスが常にその CPU で実行されるようになります。

特定のスレッドにスレッド アフィニティを設定できる API が存在します。これも OS スケジューラによって尊重されると思います。

見ると、次のようsched_setaffinityな行が表示されます。

プロセスが実行される CPU の実際のセットに対するこれらの制限は、カーネルによってサイレントに課されます。

これは、スレッドがこの関数によって設定された CPU でのみ実行されるようにすることを意味します。

于 2013-02-20T11:49:28.613 に答える