実行中のすべてのプロセスをさまざまなCPUコアに制限する

実行中のすべてのプロセスをさまざまなCPUコアに制限する

合計32個の論理コアを持つAMD 7950X3D CPUがあり、そのうち16個(0-15)は追加のキャッシュにアクセスできます。マルチタスク時にゲームシステムを最適化するために、SteamとSteamが生成するすべてのプロセスをコア0〜15で実行し、残りのシステムをコア16〜31に制限してゲームを妨げないようにしたいと思います。私は、ゲームを実行していないときにシステムがすべてのリソースを持つことができるように、実行時にこの制限を設定できるようにしたいと思います。分類すると、ワークフローは次のようになります。

  1. 実行中または新しく作成されたすべてのプロセス(Steamを除く)をコア16-31に固定します。
  2. ランニングスチームは0〜15に固定されています。
  3. ゲームが完了したら、実行中のすべてのプロセスと新しく作成されたプロセスを0〜31で再度実行できます。

ステップ2は明確です。ただ実行すると動作taskset -c 0-15 steamします。ただし、ステップ1と3を行う方法は不明です。

私が試したことは次のとおりです。

sudo taskset -apc 16-31 1。フラグを使用してPID 1のアフィニティを設定することで、-aこれを生成するすべてのプロセスに適用すると予想しましたが(それはすべてです)、そうしません。すでに実行されている子プロセスではなくプロセスです。システムモニタでは、コア0-15がまだ2%の負荷にジャンプすることがわかります。テストを実行すると、stress -c 3216~31個のコアだけでなく、32個のコアもすべて100%でロードされます。

他の同様のスレッドで見つかったすべての提案は実行時に適用されず、起動時に(システム構成ファイルの変更)適用されるか、すでに実行されているすべてのプロセスを処理しないため、これは重複とは思われません。

どんな提案がありますか?

ベストアンサー1

for pid in /proc/[0-9]*;do taskset -apc 16-31 ${pid##*/};done

おすすめ記事