【レポート】
3月27日(米国時間)に公開された初の7系リリースFreeBSD 7.0-RELEASEでは、通常負荷時でピーク性能を350%改善、高負荷時で1500%のピーク性能改善が確認されたという印象的なアナウンスがおこなわれた。FreeBSD 7は8コアまでのシステムでリニアな性能のスケールが確認されるなどマルチコア/プロセッサでスケールするOSとして生まれ変わったことを示すターニングポイントとなったわけだが、その秘訣はどこにあったのだろうか。
最初に結論をまとめると、マルチコア/プロセッサでリニアにスケールするための万能薬があったのではなく、システムの全方位に渡る地道な改善がこうした結果をもたらしている。ULEスケジューラの改善によるスケールの実現や、マルチスレッドでスケールするメモリアロケータjemalloc(3)の導入は、いわばそうした取り組みのひとつであって、すべてではない。小さな改善の積み重ねが、1500%という驚異的な数値として表れている。
|
|
FreeBSDデベロッパRandall Stewart氏 - SCTPの開発やMIPSへの移植に携わっている |
AsiaBSDCon 2008に来日したFreeBSDデベロッパRandall Stewart氏はマルチコアシステムにおいてどのようにロックコンテンションを削減するかを、自身のSCTPの開発を例にあげながら説明した。そこに見て取れるのは、地道な改善のみがこうしたパフォーマンスの向上をもたらすということだ。
プロセッサのマルチコア化が進んでいるため、OSとしてはプロセッサが同じデータ構造に対して同時にアクセスする場合に、健全で首尾一貫した操作を提供する必要がある。たとえばその場合、もっとも一般的な方法といえばmutexを使うということになる。mutexはシンプルで効果的な方法だが、その場合、ロックをかけている間にほかのスレッドが同じデータに対してロックを要求して待ちが発生するロックコンテンションが問題となる。ロックコンテンションが多発するようだとマルチコアのパフォーマンスが効果的に発揮されないことになる。ロックコンテンションを削減することが、マルチコアにおける高いパフォーマンスを実現することにつながっている。
FreeBSDにはロックコンテンションを測定する目的でLOCK_PROFILING(9)オプションが用意されている。LOCK_PROFILINGをカーネルオプションに追加してカーネルを再構築するとdebug.lock.prof.enableをはじめdebug.lock.prof.reset、debug.lock.prof.acquisitions、debug.lock.prof.records、debug.lock.prof.maxrecords、debug.lock.prof.rejected、debug.lock.prof.hashsize、debug.lock.prof.collisions、debug.lock.prof.statsなどのsysctl値が現れる。debug.lock.prof.enableは0に設定されているため、これを1に設定すれば同プロファイリング機能が有効になる。
debug.lock.prof.enableを1に設定してから試験を開始し、試験が完了したら再び値を0に戻してからdebug.lock.prof.stats sysctl値をチェックする。同値に最大ロック保持時間、合計ロック保持時間、合計ロック待ち時間、合計要求数、平均ロック保持時間、平均ロック待ち時間、コンテンション発生回数などの情報が記録されているので、これを活用するという寸法だ。。
Randall Stewart氏は実際にSCTPの開発(sys/netinet/sctp_output.c)で計測したコンテンション結果を例にあげ、データ構造やアルゴリズムを工夫して本当にロックが必要になる最小限のケースへ実装を変更し、プロファイリング結果で最終的に12,252回要求されていたロックを632回まで削減することに成功したと説明した。ロック要求が従来の5%まで減ったことになる。ソケットセンダーとトランスミッタの競合は45%から0.02%へ削減されている。
同氏はこうした結果を通じ、マルチコアで動作するOSへ共有リソースを追加する場合には、
などが必要になるとしている。この方法は状況は違えどもカーネルランドにもユーザランドにも適用できると説明している。
同氏の紹介した方法はSCTPの実装に限定されたものだが、ロックコンテンションの発生を測定してデータ構造や処理を工夫しロックコンテンションが発生しないようにする作業は、FreeBSDカーネルとユーザランド全域に渡って続けられている改善内容だ。こうした継続的な努力がスケーラビリティの向上につながっている。こうした取り組みがどこまでパフォーマンスやスケーラビリティを発揮できるかはこれからの開発の課題でもあり、8系列の開発を通じて継続されることになりそうだ。
| グレートデベロッパRobert N. M. Watson氏、FreeBSDを語る [2007/3/19] |
| ZFS、FreeBSDへ移植への道 [2007/3/19] |
| FreeBSDでHPCクラスタリング - 目指すは総コア1400!! [2007/3/14] |
| こっちのファイルシステムも熱い - puffsって? [2007/3/13] |
| FreeBSDデベロッパサミット - BPFゼロコピーからJail、ULEまでアツく語れ! [2007/3/13] |
| McKusick氏、FreeBSDを語る - AsiaBSDCon 2007 [2007/3/9] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
【レポート】【2010年ガチオタ編】成功したと思う歴代深夜アニメランキング [13:00 5/26] ホビー |
|
【連載】今さら人に聞けない!! Photoshopのショートカットキー講座 第26回 クイックマスクモード/画像描画モードの切り替え [13:00 5/26] クリエイティブ |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第102回 今回のお題は…「a variety of」 [12:00 5/26] キャリア |
|
世界最大のアップライトピアノの音色を再現するソフト音源「THE GIANT」 [12:00 5/26] クリエイティブ |
|
読者アンケートのコメントで紹介する春期アニメレビュー [11:20 5/26] |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。