realforce

Gamer Book

水曜日, 7月 13, 2005

FreeBSD5.4 と ULEスケジューラ

前回、「FreeBSD5.x系列は、その開発当初から、マルチコア時代の到来を予期して、大がかりなマルチプロセッサ対応政策が進行中であり」と書いたが、重要な事を忘れていた。

肝心の「大がかりなマルチプロセッサ対応政策」という部分の「柱」とも言えるカーネルの設定を忘れていた。FreeBSD5.4となった現在でも、非標準であり「開発中」となっている、新たなるカーネルスケジューラ「ULE」である。

スケジューラとは、「どのプログラムに、どれだけのCPUを使わせる」という時間割を決める為のものである。例としては不適切かもしれないが、公共の施設などで「1階の会議室を1時から○○同好会が借りたいです。」と予約する場合に、受付で許可をくれる係員の人である。この際に「△△同好会さんが既に使っています。2階の会議室をお使いください。」と言ったりするような事もあるだろう。

FreeBSDのスケジューラは、「4BSDスケジューラ」と呼ばれる、遙か昔、4.xBSDの頃に開発され、時代の流れとともに必要に応じて改良を施したモノで、それが今なお「標準」として使っている。だが、HyperThreadingに代表されるようなCMT(SMT)技術の到来と、Athlon64X2やPentiumDのようなマルチコア・プロセッサの到来により一気に加速するであろうSMPの一般化に対して、改良もとい「増築」では限界に達してしまった感は否めない。

そこで、伝統的なカーネルスケジューラに取って代わるべく、新たに開発されているのが「ULE」である。ちなみに「ULE」という名前は、4BSDの内部的な呼び名である「SCHED_4BSD」を「SCHED_ULE」もとい「SCHEDULE」という、「ずばりそのもの」という呼称にしたいというだけのようで、特に意味はないようである。

肝心のULEで改良された最大の特徴だが、 「プロセス数/スレッド数が多くてもスケジューラの速度が低下しない」という点がある。これは、前述の例で言えば「一度に100組の予約がきて1人しかいない係員が大忙しで大混乱」という状況を、「優秀な係員が適切に対応し混乱を回避できる」というものである。

逆に欠点として、「従来の一般的なシングルプロセッサ環境では、4BSD_SCHEDよりも性能低下していまう」とのこと。

FreeBSD5.4でULEを使うにはカーネルを再構築する必要がある。 このとき、カーネル設定ファイルを下記のように「options SCHED_4BSD」と標準で指定されている部分をコメントアウトし、新たに「options SCHED_ULE」と書く。そして再コンパイルしてやるだけである。


#options SCHED_4BSD
options SCHED_ULE

すると標準状態であれば、


# sysctl kern.sched.name
kern.sched.name: 4bsd

となっている部分が、


# sysctl kern.sched.name
kern.sched.name: ule

となるはずである。

では、今回もAthlon64X2とFreeBSD5.4/amd64による簡易ベンチマークを行いたいと思う。計測方法は今回も前回に引き続き「time make buildworld」であるが、今日は時間がないので、j4/j8の計測のみ。あしからず。


# time make -j4 buildworld2310.688u 802.393s 27:11.34 190.8% 4366+2825k 2172+4587io 773pf+0w

# time make -j8 buildworld2316.708u 805.766s 27:15.78 190.8% 4364+2825k 1841+4943io 773pf+0w

結果は上記とおり、SCHED_4BSDの時と大差はないようである。 また、微妙ではあるが、SCHED_ULEの時の方が誤差が出にくいような気がする。あくまで憶測ではあるが。

ccなどを頻繁に起動/終了するマルチプロセスを前提とした計測ではなく、マルチスレッドを前提とした計測、たとえば「Apache2でworkerを使いabで計測」などという方法であれば、結果は変わってくるかもしれない。これは後日検証してみたいと思う。

最後に、ULEは「開発中」という事だが、Pentium4 with HTTやPentiumD、Athlon64X2を使っている人は是非試して欲しい。不具合が出ても私は保証出来ないが、そのフィードバックが今後のより良い環境を手に入れる手助けになることだろう。

posted by Xune @ 07:28   links to this post 0 comments

0コメント:

コメントを投稿

この記事へのリンク一覧:

リンクを作成 | バックリンクについて | バックリンク一覧

Previous Posts