Linuxのカーネルメンテナは柔軟なシステム
〜 カーネルメンテナが語るコミュニティとIA-64 Linux 〜
IA-64 Linuxのカーネルメンテナにして米国Hewlett-PackardのOpen Source Labに所属するBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った。(編集局)
聞き手/文責:中澤勇
アットマーク・アイティ編集局
2004/3/23
Bjorn Helgaas氏はIA-64 Linuxのカーネルメンテナであり、EFI(最後部コラム参照)や64bitアーキテクチャなどの分野で活躍している。以前はhp-uxやPA-RISCにも携わっており、64bit CPUやOSに対する造詣も深い。
日本ヒューレット・パッカードのプライベートイベント「HP Integrity Technology Forum」(http://www.hp-aeforum2004.jp/itf/program/)のために来日した同氏に、カーネル開発者コミュニティやIA-64への移行について話を伺った。
コミュニティとHewlett-Packardのはざまで |
―― 現在、カーネルメンテナは何人存在するのですか?
Helgaas:数えたことはありませんが、かなりたくさんいます。
まず、PA-RISC、SPARC、Itanium、PowerPCなど、アーキテクチャごとに必ず1人います。それからVM(バーチャルメモリ)、SCSI、スケジューリングなど、サブシステムにも1人ずついます。各デバイスドライバにもメンテナが置かれています。
IA-64(Itanium)の場合、カーネル2.4は私が担当していますが、カーネル2.6はDavid Mosberger氏がメンテナです。
Linuxのカーネルメンテナは柔軟なシステムです。例えば、ある人が何らかのコードに対して修正を加えます。しばらくして、同じ人がまたそのコードに修正を加えるということを続けていると、非公式ではありますが、その人がそのコードのオーナー、つまりメンテナになります。
HP Integrity Technology Forumで講演中のHelgaas氏 |
―― あなたはHewlett-Packardでどのような仕事をしているのですか?
Helgaas:英語には、「2つの帽子」という表現があります(笑)。
「メンテナの帽子」をかぶっているときは、SGIやIBM、Intelといった、Hewlett-Packard以外の人たちと協力する必要があります。私がメンテナとして力を発揮するためには、他社の人たちの信頼を得なければなりません。つまり、私が「Hewlett-Packardを優遇することはない」ということを、きちんと理解してもらうことが重要ですね。
もちろん、Hewlett-Packardの人間としての責任もあります。これが「2つ目の帽子」です。Linuxを新しいプラットフォーム上で使えるようにするのが、HP Linux and Open Source Labにおける私の仕事です。
―― カーネル2.6の正式リリースで、カーネル2.4の開発は一段落ついたと思います。現在、あなたにパッチが送られてくる頻度を教えてください。
Helgaas:私にIA-64固有のパッチが送られてくるのは、週に2つ程度です。おっしゃるとおり、カーネル2.4がすでに安定している証拠といえるでしょう。
もう1つの理由としては、これもご存じのとおり、カーネル2.6に開発の比重が移っていることが挙げられます。現在はカーネル2.6用のパッチの方が多くなっており、Mosberger氏がそれらを管理しています。
参考: | ||
linux-ia64 ML | ||
http://vger.kernel.org/vger-lists.html#linux-ia64 | ||
IA-64 specific patch(kernel 2.4) | ||
http://www.kernel.org/pub/linux/kernel/ports/ia64/v2.4/ |
―― IA-64環境を自由に使える個人は、それほど多くないでしょう。では、IA-64用のパッチを送ってくる人はどのような人でしょうか?
Helgaas:ほとんどがハードウェアベンダの人です。ディストリビュータの人もいます。SGI、Intel、Dell、Red Hat、SUSE LINUXの人たちです。また、大学生からパッチが送られてくることもあります。
Linuxの開発で時々起こる問題があります。1人で孤立して大きなパッチを作ってしまい、しかもそれを完成するまで誰にも話さないことです。このような巨大なパッチは、大体失敗します。それを他人が理解するには、あまりにも複雑で大き過ぎるからです。
Linuxは、小さな修正を取り込んで徐々に進化するものなのです。
―― お話を聞いて思い出しましたが、LKCD(Linux Kernel Crash Dump)は標準カーネルへの取り込みを拒否されたと聞いています。その理由を教えてください。
Helgaas:確かに、LKCDはコミュニティに受け入れられませんでした。その理由を詳しくは知らないのですが、私の考えでは、まだ信頼性が足りないのではないかと思います。ディスクに直接クラッシュダンプを書き込むので、その処理に間違いが起こるとユーザーデータを破壊する危険があります。
Hewlett-Packardは、カスタムカーネルでLKCDをサポートしています。ただし、この方法は暫定的なものです。最終的には、netdumpで提供することになると思います。なぜなら、標準カーネルには将来的にnetdumpが取り込まれると考えているからです。それには2つの理由があります。まず、Red Hatがnetdumpをサポートしていること。そのため、業界やコミュニティにはnetdumpの経験が豊富に蓄積されています。2つ目の理由は、netdumpの方が安全だからです。ネットワークを通してデータを書き込むので、LKCDに比べてユーザーデータを破壊する危険が非常に低いのです。
注:LKCDは、もともとSGIが開発を開始した機能。2002年1月にIBM、NEC、日立、富士通の4社がLKCDの機能強化で協業を発表している。 http://www.nec.co.jp/press/ja/0201/2203.html |
32bitから64bitへの移行は |
Hewlett-Packard
Linux and Open Source Lab
Software engineer Bjorn Helgaas氏 |
―― Itaniumには32bitエミュレーション機能がありますね。すると、32bitアプリケーションをIA-64 Linuxで実行するには、単にバイナリをコピーするだけでよいのでしょうか。
Helgaas:そのとおりです。x86マシンから32bitアプリケーションのバイナリを持ってくれば、そのまま実行することが可能です。ただし、32bit PCで実行するのと同じことになってしまい、Itaniumを使うメリットはないといえるでしょう。
32bitアプリケーションをItaniumで実行する場合は、アプリケーションと一緒にライブラリもコピーする必要があります。コピーしてきたライブラリを32bitライブラリ用のディレクトリに入れておくと、32bitバイナリを起動するときにそこのライブラリを利用します。つまり、同一マシン上に32bit用と64bit用のライブラリが共存することになります。
―― アプリケーションを64bit化するために、コードの修正は必要ですか? リコンパイルするだけでも構わないのでしょうか。
Helgaas:正しく書かれたアプリケーションは、Itanium上でリコンパイルするだけで64bitアプリケーションになります。しかしご存じのとおり(笑)、ほとんどのアプリケーションはそうではないため、うまくいきません。
32bitマシンではint(integer)、long、ポインタが同じサイズですが、64bitではintが32bit、longとポインタが64bitです。きちんと書かれていないコードは、これが問題になります。
―― Itaniumにおいては、コンパイラによる最適化がより重要になると思います。そして、最適化のためにパフォーマンスモニタを利用するとのことですが、パフォーマンスモニタの情報はどのように使うのですか?
Helgaas:パフォーマンスモニタの利用方法には、2つのストラテジがあります。1つは、プログラムを普通にコンパイルして数回実行し、そこからプロファイルを取る方法です。そのプロファイルによって、「どの方向にブランチが起きやすいか」といった情報がコンパイラに送られます。それを基に、アプリケーションの最適化方法を改善します。
もう1つは、昔からよく行われてきたマニュアルな手法です。パフォーマンス情報を収集して、アルゴリズムやデータストラクチャを再編成することです。
どちらの方法にしても、最適化の方法を変えながら何度もリコンパイルを繰り返して、最終的なバイナリを生成することになります。
|
Linux Square全記事インデックス |
Linux Squareフォーラム Linuxカーネル関連記事 |
連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|