これにはタスクセットを使用しました。タスクセットがインストールされている場合は、次のようになります:
taskset -cp 0,2 45678
は、ID 45678 のプロセスを設定して、CPU 1 および 3 にアフィニティーを持たせます。
プロセス内では、呼び出しは sched_setaffinity()
になります 、または pthreads の場合は pthread_setaffinity_np()
これに関連して、プログラムの CPU アフィニティについて心配している場合は、メモリ割り当てがどのように行われているかにも注意を払う価値があるかもしれません。メモリが複数のコントローラに接続されている大規模なシステム (つまり、それぞれが独自の複数の CPU ソケット) では、CPU とメモリのペアが異なると、遅延と帯域幅が変化します。 numactl
を使用して、NUMA アフィニティも調べる必要があります。 コマンドまたはそれが動作するシステムコール。私が取り組んだ 1 つのプログラムは、これにより 10% のパフォーマンス向上を達成しました。
schedutils
をインストールする必要があります (Linux スケジューラ ユーティリティ)。Ubuntu デスクトップで使用しています。
SF リンク