OLS 2日目:カーネル開発、ファイルシステムについての講演

 第9回年次Ottawa Linux Symposiumの2日目は、「Linuxカーネル開発――どのように、何を、どのようなスピードで、誰が?」と題されたGreg Kroah-Hartman氏による講演で始まった。講演は400人を越える聴衆で超満員の大部屋で行なわれた。

 Kroah-Hartman氏はセッション部屋後方の壁に大きなポスターを貼っていた。そのポスターには、現在の開発カーネルの開発者とパッチレビュアとの間の関係が線で結んで示されていて、ポスターに自分の名前を見つけたら是非そこに自筆のサインをして欲しいと書かれていた。

 Kroah-Hartman氏は、開発の組織階層図を示して講演を始めた。示された開発組織階層図は、本来そうなっているはずの階層であり、パッチを提出するカーネル開発者たちが最下位層にいて、その上にそれらのカーネル開発者たちからパッチを受け取る600人のドライバ/ファイル・メンテナがいて、さらにその上にドライバ/ファイル・メンテナからパッチを受け取るサブシステム・メンテナがいて、その上の最上位層にサブシステム・メンテナからパッチを受け取るAndrew Morton氏か、場合によっては直接Linus Torvalds氏がいる、ということが示されていた。

 Kroah-Hartman氏の説明によると、Andrew Morton氏はもともとTorvalds氏が開発版ツリーに取り掛かる間、安定版ツリーをメンテナンスする担当として選ばれたのだが、Morton氏はもともとMorton氏のサブツリーとなっている-mm(メモリ管理)という名前のツリーにあらゆる非安定パッチをマージしていて、事実上Torvalds氏が安定カーネルツリーをメンテナンスするようになっているという。Kroah-Hartman氏は、Torvalds氏もMorton氏も決してこの事実を認めないだろうが、現在のところは当初の意向とは正反対のこの状況は、非常にうまく働いていると述べた。

 パッチが前述したような組織階層を上に向かって提出されて行く際には、受け取ったパッチをレビューして上方に提出する人が必ず、各々の名前をパッチのsigned-off-byフィールドに付けるようになっている。Kroah-Hartman氏が印刷して張り出していた大きな図は、そのようなsigned-off-byフィールドの関係から作成されたものなのだが、その図を見ると組織階層内の実際のやり取りは必ずしも組織階層図通りに行なわれているわけではないことが分かる。

ols2-1-thumb.jpg

 Kroah-Hartman氏によると、安定カーネルのリリースは約2.5ヶ月ごとに行なわれているという。2.6.11カーネルのリリース以降のこの2.5年の間、カーネルに対する変更は平均して1時間に2.89パッチという速度で行なわれていて、そのペースはこの2年半の間ずっと維持されているとのことだ。また、2.6.19カーネルだけについて言えば、1時間に4つの変更が行なわれるというペースだったということをグラフで示した。

 また2.6.21カーネルには820万行のコードが含まれているが、毎日(休日なく)の平均で、1日に2,000行が追加され、1日に2,800行が変更されているのだという。なお数字の実際の値については議論の余地があるものの、同氏自身の印象としては比較的現実を正確に表わしている数字のように感じると付け加えた。

 このような数字はWindows Vistaと比較するとどうなのかという質問に対してKroah-Hartman氏は、VistaのカーネルはLinuxよりも小さいが、ドライバがまったく含まれていないため、正確に比較することは不可能だと答えた。また各マイナーリリースで行なわれた変更はLinux 2.4が2.6になった際のカーネルの変更と同じくらいではないだろうかという質問に対しては、同じではないとしたが、当時と同じ量の変更は今のペースであれば約6ヶ月で実現することができるだろうと答えた。

 Kroah-Hartman氏はいったんいくつかの質問に答えた後、再び講演に戻った。そして、カーネルの様々な部分(core/drivers/arch/net/fs/misc)を比較してみると、ファイルの数という観点からはarch(アーキテクチャ)ツリーがカーネルの中で最も大きいが、全体に対するサイズで見るとドライバがカーネルの52%を占めているとした。なおそのようなカーネルの6つの部分は、どれも概ね同じようなペースで変更されているようだとのことだ。

 またKroah-Hartman氏は、Linuxは既存のオペレーティングシステムのどれよりもスケーラブルだと誇らしげに言った。Linuxは、USBメモリから世界でトップのスーパーコンピュータの75%まで、ありとあらゆるものの上で稼動しているとのことだ。

 さらに、カーネルの各リリースに貢献した開発者の数についての調査の発表もあった。それによると、2.6.11カーネルには475人の開発者が貢献したという。そして2.6.21カーネルでは800人、まだリリースされていない2.6.22カーネルについては今の時点ですでに920人の開発者が貢献したとのことだ。ただし実際の数字は以上に示した数字よりも多少小さくなるかもしれないとした。その理由は、カーネル開発者は自分の名前のスペルを間違う傾向が高いためだという。とは言え、そのような間違いはできるだけ正すようにベストは尽くした結果の数字だとのことだ。

 カーネル開発コミュニティは急速に成長しているようだ。最初の2.6カーネルツリーでは700人の開発者しかいなかったのに対し、2.6.11から2.6.22-rc5までの2年半では、約3,200人の人々がカーネルにパッチを寄与したのだという。なおそのうち半分の人が1つのパッチを寄与し、1/4の人が2つのパッチ、1/8の人が3つのパッチ……という興味深い統計結果になっているとも指摘した。

 Kroah-Hartman氏は、質ではなく量について言えば、としたうえで、Linuxカーネルへの最大の貢献者はAl Viro氏で、この2.5年間に1,339個のパッチを寄与したのだという。次点はDavid S. Miller氏の1,279パッチ、そしてAdrian Bunk氏の1,150パッチ、Andrew Morton氏の1,071パッチが続くとした。トップ10も発表されたが、さらに長いリストはこのトピックを扱った同氏の白書に掲載されているとのことだ。また現在はカーネル開発者の上位30%が全作業の約30%を行なっていて、このことは、カーネル開発者の上位20%が全作業の約80%を行なっていた2.5年前の状況と比較すると非常に大きな状況改善を表わしていると述べた。

 Kroah-Hartman氏は矢継ぎ早に統計情報を紹介し続け、その次には、パッチを実際に書くのではなく、サインしたパッチの数が多い開発者を紹介した。トップはLinus Torvalds氏の19,890パッチで、次にAndrew Morton氏の18,622パッチ、David S. Miller氏の6,097パッチ、Greg Kroah-Hartman氏自身の4,046パッチ、Jeff Garzik氏の3,383パッチ、そして土曜日のOLS基調講演者でもあるJames Bottomley氏が9位で2,048パッチだった。Kroah-Hartman氏自身は、パッチを読むことが自分の生活のすべてだと感じることもあると告白した。

 次に、カーネル開発を資金的に支援している企業についての話題があった。企業に雇用されていることが知られている人々によって寄与されたパッチの数を元に、当該期間に転職した人を考慮せずに計算したところ、Red Hat社が2位で11.8%、Novell社が3位で9.7%、Linux Foundationが4位で8.1%、IBM社が5位で7.9%、Intel社が6位で4.3%、SGI社が8位で2.2%、MIPS社が9位で1.5%、HP社が10位で1.3%だったという。

 注意深い読者は1位と7位が抜けていることに気付いたことと思う。1位と7位は後から発表された。7位は、学生など、独自に開発を行なうアマチュア開発者として知られる人々で、3.9%の割合だった。そして1位は、各々の寄与は10パッチ以下である、所属のわからない人々であり、この2.5年間のカーネル開発全体の33.2%を占めていた。

 Kroah-Hartman氏は、Linuxを使っているがコントリビュータのリストに名前の入っていない企業は、Linuxの開発に関して何か不満があるなら、自ら開発プロセスに参加するべきだと述べた。また、自社でカーネル開発に貢献しないのであれば、AMD社のようにNovell社(Kroah-Hartman氏の雇用主)などのディストリビュータと下請け契約を結ぶか、より安く抑えるためには、自社のニーズを満たすために必要なカーネルの開発をしてもらうよう個人コンサルタントと契約することなどができると述べた。

 今回もKroah-Hartman氏の講演は、非常に楽しく活気があった。上記のような内容の要約ではそのような様子を伝えきれないのが残念だ。

新しいExt4ファイルシステム:現在と今後のプラン

 続いてIBM Linux技術センターのAvantika Mathur氏による講演が行なわれた。テーマは、Ext4ファイルシステムの現在と今後のプランだった。Mathur氏はまず最初になぜExt4なのかと問いかけた。現在のLinuxの標準ファイルシステムであるExt3には、ファイルシステムのサイズとして16テラバイトという大きな制約がある。Ext4の開発は、その問題やそれ以外の性能上の問題などから決断されたのだという。

 次にMathur氏は、ではなぜXFSやまったく新しいファイルシステムではないのかと問いかけ、その主な理由は既存のExt3のコミュニティが非常に大きいことだと説明した。Ext4であれば後方互換性を維持することができ、Ext3からアップグレードする際にも、一般的にファイルシステムの移行にはつき物である長々しいバックアップとリストアの作業の必要もなくすことができるとのことだ。また彼女は、XFSのコードベースはExt3よりも大きく、コードベースは小さい方が好ましいと述べた。

 Ext4ファイルシステムは、Linux 2.6.19カーネルにおいてExt4-devとして始まった。Ext4は、64ビットJBDをともなったExt3ファイルシステムのクローンだという。なおJBDというのが何なのか私にはよく分からなかった。Mathur氏の説明によると、Ext4プロジェクトの目標は、後方互換性を保ったうえで、スケーラビリティ、fsck(ファイルシステムチェック)に必要な時間、性能、信頼性を改善することだという。

 Ext4ファイルシステムは現在、最大1エクサバイトまでのファイルシステムのサイズをサポートしているという。言い換えるとExt4では、1ブロックあたり4KBで、48ビットのブロック番号を使用しているため、1,152,921,504,606,846,976バイトを取り扱うことができるということだ。これにより、Mathur氏はExt4が今後5年から10年ほどの間は需要を満たすことができるだろうと予測している。なおそれ以降にそれ以上に大きなファイルシステムのサポートが実際に必要になり、64ビットのファイルシステムへの移行が必要なのであれば、それほど大掛かりな変更をせずに64ビット化することも可能なのだという。

 Mathur氏によるとExt3では間接ブロックがすぐに使われることになるが、Ext4では「エクステント」のおかげで、間接ブロックをすぐに使わなくても済むのだという。彼女の説明によると、エクステントとは連続したブロック領域に対して1つのアドレスを使用するもので、各エクステントは、同一ファイルに対して最大20,000ブロックを割り当てることができ、各iノードの本体には4つのエクステントを含めることができる。

 さらに、Ext4パッチツリーの中にすでにある機能や間もなく取り入れられる機能についての説明も行なわれた。Ext4では、0を実際にディスクに書き込まずにファイルに空間を割り当てることができる(ディスク空間が前もって保証される)永続先行割り当てが実現される予定だ。彼女の説明によると、割り当てられた領域が0で初期化されているかいないかはフラグを使用して判別し、初期化されていないブロックを読み取った場合にはファイルシステムのドライバが0を返すのだという。

 またExt4の遅延割り当てについての報告も行なわれた。遅延割り当てではディスク空間は、ファイルがバッファに書き込まれる際に割り当てられるのではなく、バッファがディスクに書き込まれる際に割り当てられるようになる。その結果、ファイルはディスク上でより連続した場所に保存されるようになり、短期間や一時的にしか存在しないファイルは、物理ディスク空間が最終的に割り当てられる前に消去される可能性もあることになる。Ext4ではまた、エクステントで示される領域全体を一度に割り当てることのできる「複数ブロックアロケータ」も実現されている。また、オンラインでデフラグするツールも現在開発中だとのことだ。

 Mathur氏によると、1エクサバイトという大きさを取り扱うファイルシステムにとって、ファイルシステムチェックの速度は悩みの種なのだという。現在のfsckを使った場合、1エクサバイトのファイルシステム全体をチェックするには119年もかかってしまうだろうとのことだ。そのためExt4用のfsckでは、割り当てられていないiノードについてはチェックしないなどの改良が加えられているのだという。また、e4fsckがその前身よりも性能的にかなり向上していることを示す性能グラフも示された。

 Mathur氏は、Ext4にはExt3と比較してスケーラビリティに関する数多くの改良点があるとし、最大ファイルサイズが2テラバイトから16テラバイトに拡大したことを挙げた。なおファイルサイズの限界が16テラバイトになっているのは、性能とサイズとのトレードオフ的なことが理由だとのことだ。またExt3ではデフォルトで128バイトだったiノードエントリの大きさは、Ext4ではデフォルトで256バイトになった。さらにExt3ではタイムスタンプは秒単位だったが、Ext4ではナノ秒単位のタイムスタンプが導入された。なおその理由は、操作速度が上がり、現在ではファイルを1秒間に何度も変更することができるためだという。さらにExt4では、NFSが利用するための64ビットのiノードのバージョン番号も導入されたという。

 Mathur氏は、Ext4プロジェクトに寄与している19人の開発者たちに謝辞を述べることで同氏のプレゼンテーションを締めくくった。

 OLSでは企業レセプションが2回開かれたが、OLS 2日目の夜はその2回目の、IBMによるレセプションがコンファレンスルームの一室で開かれ、IBMのPower6プロセッサの紹介とともに食物や景品が振る舞われた。

 Anton Blanchard氏によって手短にデモが行なわれたPower6プロセッサには、4.7GHzのコアが16基搭載されていた。Blanchard氏がデモを印象付けるために、Linuxカーネルを10回コンパイルするベンチマークツールを使用してデモを行なったところ、たったの20秒で完了した。

 特に注目に値することとして、Blanchard氏によるとIBMはPower6チップのテストとデバッグ用にLinuxを使用しているとのことだ。このデモの後IBMは、PS/3やFreescaleマザーボードなどをくじ引きの景品として配った。4日間のOLS 2007の2日目はこのようにして終わった。

Linux.com 原文