スケジューラがFreeBSDで特定のカーネルを使用するのを防ぐ

スケジューラがFreeBSDで特定のカーネルを使用するのを防ぐ

このユーティリティを使用すると、cpuset(1)プロセスを特定のコアに固定することができるようです。他のすべてのプロセス(現在および将来のプロセス)に特定のコアを使用しないようにスケジューラに指示できますか?

答え1

あなたは読むことができます古いスケジューラが入っています。FreeBSDオペレーティングシステムのプロセス管理

新しい"ULEスケジューラFreeBSD 5に導入されましたが、7.1まではデフォルトで有効になっていません。説明する論文を見つけることができます。ここ。これにより、スケジューラの仕組みをよりよく理解することができます。

ヒント:CPUの好みを調べるときは、CPUトポロジを理解するのが最善です。

  $ sysctl kern.sched.topology_spec

ヒント: プログラム統計-Sフラグを使用すると、使用されているCPUセットを簡単に説明するのにも役立ちます。

 $ procstat -a -S

はい - 「cpusets」を管理して、スケジューラにコアを「回避する」ように指示できます。例については、マニュアルページを確認してください。CPUグループ(1)。 CPUset 1 がデフォルト設定です。コレクションを編集するだけです。

~から男性ページ:

最初の4つのCPUのみを含み、残りはアイドル状態になるように、すべてのスレッドがデフォルトで配置されているCPUsetを変更します。

cpuset -l 0-3 -s 1

CPUが8つあると仮定すると、基本CPUセットのすべてのスレッドを最初の4つに移動しました。これにより、基本セットを変更するときに残りのコアがアイドル状態になるのを防ぐことができます(基本プロセスはセット1から始まります)。

残りのCPUに新しいCPUセット(例:2)を作成し、必要に応じて割り当てることができます。

関連情報