特定のプログラムのCPUアフィニティを設定しますか?

特定のプログラムのCPUアフィニティを設定しますか?

特定のコアまたはマルチコア(たとえば、コア1)で常に実行されるように特定のプログラム(gzipなど)のCPUアフィニティを設定するにはどうすればよいですか?

ワークセットについて読みましたが、実際にプログラムを使用してプロセスを作成する前に使用できますか?

ベストアンサー1

実行可能ファイルのすべての呼び出しに対してアフィニティを設定することはできません。アフィニティはカーネルによって管理され、親プロセスから子プロセスに継承されます。実行ファイルの実行中にプロセスの好みを変更するメカニズムはありません。

gzipすべての呼び出しをCPU 1で実行するには、gzip実際のスクリプトの前に呼び出されるラッパースクリプトを配置します。PATHたとえば、次のようになります。~/bin/gzip

#!/bin/sh
exec taskset 1 /bin/gzip "$@"

しかし、私はこれが完全に役に立たないと思います。プロセスの好みを明示的に設定すると、速度が遅くなることがよくあります。時には、CPU集約的なタスクを特定のプロセッサに制限し、システムの反応性を向上させることが役に立つかもしれませんが、一般的に全体的に優れたniceパフォーマンスを発揮します。ただし、実行可能ファイルへのすべての呼び出しに対して無差別にこれを行うことは、次のように聞こえます。XYの問題

おすすめ記事