src
- Brain Fuck Scheduler for FreeBSD
current - 現在、
Rudo Tomori氏の手によって新しいスケジューラの実装が進められています。実装しようとしているスケジューラはCon Kolivas氏が2009年に発表した 「Brain Fuck Scheduler」 と呼ばれるスケジューラです。BFSと短縮名で呼ばれています。BFSはシンブルな仕組みで動作するスケジューラで、 性能の低いマシンでとくに性能を発揮できるものだと言われています。 「FreeBSD FBFS live DVD image is available now」 にBFSを有効にしたFreeBSDのライブDVDイメージが公開されていますので、 興味がある場合には試すことができます。FreeBSD 8. 2-RELEASE i386をベースに軽量GNOMEの環境が起動するようにカスタマイズされたライブDVDです。 ULEスケジューラを使っている場合のsysctl値 # sysctl kern.
sched kern. sched. cpusetsize: 8 kern. sched. preemption: 1 kern. sched. topology_ spec: <groups> <group level="1" cache-level="0"> <cpu count="4" mask="f">0, 1, 2, 3</cpu> <children> <group level="2" cache-level="2"> <cpu count="4" mask="f">0, 1, 2, 3</cpu> </group> </children> </group> </groups> kern. sched. steal_ thresh: 2 kern. sched. steal_ idle: 1 kern. sched. steal_ htt: 1 kern. sched. balance_ interval: 127 kern. sched. balance: 1 kern. sched. affinity: 1 kern. sched. idlespinthresh: 16 kern. sched. idlespins: 10000 kern. sched. static_ boost: 152 kern. sched. preempt_ thresh: 80 kern. sched. interact: 30 kern. sched. slice: 12 kern. sched. name: ULE # FreeBSD BFSに切り替えると表示がこのように変わる # sysctl kern.
sched kern. sched. preemption: 1 kern. sched. slice: 12 kern. sched. name: FBFS # FreeBSDには4BSDとULEという2つのスケジューラがあります。4BSDはシングルコアで高い性能を発揮し、
ULEはマルチコアで高い性能を発揮します。現在ではULEがデフォルトになっており、 4BSDはULEとの性能比較や、 組み込みデバイスでの利用を想定して残されています。 4BSDもULEも優れたスケジューラですが、
かなり多くの設定項目を持ち、 その値の微調整はとても大変なものだと言われています。歴史的に何度も調整が実施された部分があり、 どのパラメータがどのような影響を及ぼすのか、 全体を把握している開発者は存在しないのではないかと見られます。BSFはこうしたヒューリスティックに決定される部分を排除した上で、 性能を発揮できるスケジューラを実現するという側面を持っていました。 BFSはULEに取って変わるようなタイプのスケジューラではないのですが、
FreeBSDにとっていくつかのメリットがあります。まず、 BFSが現在のPCとカーネルにおいてどの程度の性能を発揮するのか、 どういった特徴を見せるのか観測できること、 そうした結果をULEと比較できることなど、 改善を進めるための指標としての側面です。もうひとつは、 組み込みで採用するスケジューラとして新しい選択肢となる点にあります。 FreeBSDは組み込みで使われる機会が増えていますので、
4BSD以外のスケジューラが選択できるようになるのか好ましいことといえます。4BSDほど複雑な仕組みにもならないとみられており、 それなりにカスタマイズしやすい候補が増えるということになります。