VA LinuxのLinux Kernel開発への取組み(2005年6月版)

「VA Linux」によるLinux Kernelに対する代表的な開発実績としては、「Zerocopy NFS」、「Memory hotplug」、「Mini Kernel Dump」の3つが挙げられます。
「Mini Kernel Dump」については、株式会社NTTデータとの共同開発プロジェクトの一貫として2004年10月13日に公開されています。
「Memory hotplug」については、次期リリースでの取り込みに向けて活溌にカーネル開発コミュニティと議論を続けている最中です。
また、「Zerocopy NFS」については、全てのコードが現在の安定リリースであるLinux Kernel2.6に取り込まれています。これらの他にも多くのLinux Kernelに対する多くの改良等を行っています。

カーネル技術者への育成活動

「VA Linux」では毎年国内のカーネル技術者の育成のために「Linux Kernel Conference」を開催してきました。「Linux Kernel Conference」は、Kernel関連の技術者が毎年300名以上集まり、日本におけるLinux Kernel開発の議論の場として国内最高峰の技術イベントとなっています。

サミットへの参画

 

「VA Linux」では、毎年世界中から重要な開発を担っている選ばれたKernel技術者だけが50名ほど招待されて開催される「Linux Kernel Developers Summit」に毎年のように参加者を送り出してきました。
「Linux Kernel Developers Summit」は、開催後、一年間のLinux Kernel開発の方向性に多大な影響を与える重要な会議ですが、日本国内から参加者を送り出せている企業は「VA Linux」だけです。(2005年現在)。また、2004年度のオタワ会議では、「VA Linux」技術部の岩本 俊弘が「Hot PlugMemory and CPU」のセッションチェアマンを任されてもいます。

 

開発事例

「Mini Kernel Dump」は、Linuxシステムの障害発生時に自動的に内部情報の全記録を外部の記録装置に行うためのクラッシュダンプ機能です。既にLinuxシステムでは、LKCD、netdump、diskdumpといったクラッシュダンプ機能が存在しますが、これらはダンプの出力をそのLinuxシステムで使用されている既存のデバイスドライバを使用するなど、Linux Kernelがもはや信用できないという障害発生時においてLinux Kernelが正常に動いていることを前提として設計されているという大きな矛盾を抱えています。
「Mini Kernel Dump」では、これらの問題を解決するために、システム障害時に障害が起きているLinux Kernelとは別の小さなダンプ取得専用のLinux Kernelを起動してダンプを行うという、既存のLinux Kernelに全く依存せずダンプを採取する手法を用いています。
また、「Mini Kernel Dump」では、既存のLinux Kernelに対する修正が非常に少ないため、ダンプ機能の組み込みのためのハードルは低く、またデバイスドライバの修正が必要ないためどのようなハードウエア構成のシステムでも動作するという特徴を持っています。

 

Linux Memory Hotplug

メモリホットプラグ機能は、システム運用中に動的にメモリモジュールの追加や削除を行なえるようにする機能であり、高可用性を求めるエンタープライズクラスのシステムで求められている機能です。しかし、メモリのホットプラグ機能は、デバイスのホットプラグ機能とは異なり、多くの課題があります。
メモリモジュール上に配置された重要なデータを、そのメモリモジュール削除後にも継続して利用可能な状態におくことと、システムを中断せずにその処理を行えるようにすることの二点が設計上のポイントです。また、この機能は今後普及が進む仮想マシン環境においても、非常に重要視されています。論理的にメモリを抜き差しすることにより、仮想マシン上で動作するゲストOS間でメモリを融通しあうことが可能となるためです。また、Linuxを搭載した多プロセッサNUMAマシンにおける、プロセスのノード間マイグレーションを実現するためにも、必須の機能とされています。ノードによりCPUとメモリの距離が異なるため、メモリの最適配置を行うために利用されます。

Zerocopy NFS

NFSサーバがREADリクエストを処理する際、Linux Kernel2.4ではページキャッシュからNFS送信用バッファへいったんメモリコピーを行います。それをプロトコル層でさらにソケットバッファにコピーし、その上でネットワークドライバが送信処理を行っていました。
Linux Kernel2.6では、ページキャッシュに使われているページを直接プロトコル層に渡し、可能であればそのままネットワークドライバまで渡すように改良を行いました。これにより、無駄なコピー処理のオーバーヘッドが削減されるのはもちろん、プロセッサ内部のキャッシュメモリから他の有用なデータが追い出されることが減ることになります。この一連の機構を便宜上「Zerocopy NFS」と呼びます。
また、「VA Linux」では「Zerocopy NFS」以外にもNFS実装に対して下記に示すような様々な改良および修整を行っています。

 

  • カーネル内部での排他処理の改善
  • I/O待ちから復帰したプロセスを優先的処理
  • NFS処理サブシステム(nfsd)のCPU奪取抑制
  • メモリ奪取抑制による負荷耐性の強化
  • CPUキャッシュ利用効率の改善