Linuxでプロセスのプロセッサアフィニティを設定するにはどうすればよいですか?


29

Linuxでプロセスのプロセッサアフィニティを設定するにはどうすればよいですか?

回答:


24

私はこれにタスクセットを使用しました。タスクセットがインストールされている場合、次のようになります。

taskset -c 1,3 -p 45678

ID 45678のプロセスにcpus 1および3への親和性を設定します。


1
匿名の編集では、コマンドは次のようにtaskset -p -c 1,3 45678する必要があることが示唆されましたtaskset -c 1,3 -p 45678。すなわち、-c 1,3マスク仕様であり、そのため、-pとの間に配置する必要がありますpid
G-Manが「Reinstate Monica」と言う

7

プロセス内では、呼び出しはになりますsched_setaffinity()。pthreadの場合は、pthread_setaffinity_np()

関連する注意点として、プログラムのCPUアフィニティを心配している場合は、メモリ割り当ても同様に行うことに注意する価値があるかもしれません。メモリが複数のコントローラーに接続されている大規模システム(つまり、それぞれ独自の複数のCPUソケット)では、異なるCPUとメモリーのペア間でレイテンシーと帯域幅が変化します。numactlコマンドまたはそれが機能するシステムコールを使用して、NUMAアフィニティも調べる必要があります。私が取り組んだプログラムの1つでは、これによりパフォーマンスが10%向上しました。


3

インストールする必要がありschedutilsます(Linuxスケジューラユーティリティ)。Ubuntuデスクトップで使用しています。

SF リンク


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.