3月版 カーネルが無実のプロセスをkillし始めるとき


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/3/28

“不安定なsysfs”が含まれる“安定版カーネル”って……

 halやudevやALSAは、カーネル側のインターフェイスに対応したユーザー空間のアプリケーションを提供しています。ユーザー空間側のudevやALSAライブラリがカーネルのバージョンに対応したものである限り、問題はありません。しかし、現実には安定版リリースであってもユーザー空間との互換性を損なうような変更がカーネルに適用されています。カーネルとユーザー空間側でバージョンの不一致があると、うまく動作しなくなります。

 2月に行われたsysfsの構成変更のあおりを受けて、これまでのバージョンが動かなくなったlsscsi()ツールの新バージョン、0.17がリリースされました。

注:SCSIデバイスの一覧を表示するツール。/proc/scsi/scsiで従来提供されていた情報をsysfs経由で取得して表示する。

 sysfsでしばしば発生しているファイル名変更の責任者でもあるGreg K-Hの主張は、「sysfsは不安定でプライベートなインターフェイスなので、ユーザー空間のアプリケーションはその名前に依存するべきでなく、カーネル側はどんどん変更してもよいものだ」というものでした。さらにGreg K-Hは、「不安定なインターフェイスがどれなのか区別できていないのが問題なので明文化しよう」とドキュメントを書き始めました。

 それに対してLinusは、「“不安定だ”とマニュアルに書くのは言い訳にならない」と切り捨てました。彼は、「安定していないインターフェイスが安定版カーネルに含まれるのは間違っている。不安定なインターフェイスを持つサブシステムは、例えばHAL-unstableという別のカーネルのブランチを作ってそこで開発するべきであり、安定版カーネルにマージしたからにはユーザー空間から見えるカーネルのインターフェイスを安定させなさい」と反論しました。

 「新しいカーネルにバージョンアップした際に、ユーザー空間のアプリケーションもバージョンアップするのを忘れるとシステムが起動しなくなる」ということでは、ユーザーにとって不便です。この議論の行く末がどうなるのか注目です。

カーネルのキラーが無実のプロセスを殺して回る

 NUMAは、システムが複数のノードに分かれており、ノードをまたがるメモリアクセスが遅いというシステムです。当然ながら、同じノードにあるメモリにアクセスする方が高速なため、アプリケーションはローカルノードのメモリ領域を利用して実行した方が効率的です。そして、実行するノードのメモリしか利用しないように制限することを宣言するシステムコールがmbindです。

 Christoph Lameterは、mbindしているアプリケーションがローカルノードからメモリを確保しようとして失敗した場合、システム全体としてはメモリが十分足りているのにOOM Killer()が発動してプロセスを殺し始めるという挙動をすることを報告しました。

注:メモリを確保できない場合に、適当なプロセスをkillすることでメモリを解放してメモリを確保できるようにするLinuxカーネルの仕組み。

 OOM Killerは、メモリがローカルノードであるか非ローカルノードであるかを区別しません。mbindを使用せずにメモリの確保を試みた場合、解放されたメモリが非ローカルノードのものであっても(もちろんローカルノードのメモリであっても)利用できるため、特に問題は生じません。

 しかし、mbindを使っている場合は事情が異なります。OOM Killerは前述したようにメモリがローカルであるか非ローカルであるかを区別しないため、メモリを確保するために非ローカルノード上にあるプロセスを殺すかもしれません。しかし、mbindによって非ローカルノードのメモリは使用を制限されているためメモリ不足は改善されず、さらにプロセスを殺さねばなりません。こうして、「運良く」ローカルノードのメモリ上にあるプロセスを殺してメモリを確保できるまで、OOM Killerはプロセスを殺し続けるのです。つまり、無駄にプロセスを殺してしまう場合があるということです。この挙動は意味がないだろう、ということで議論になりました。

 結論としては、NUMAでmbindをしている場合はOOM Killerを発動しないように変更することで落ち着いたようです。OOM Killerの挙動にはご注意を。

-mmツリーにホットフィックスを

 2月も活発に-mmツリーのリリースが行われていました。その中で、-mmツリーのリリース方法に目立った改善がありました。

 Andrew Mortonは、カーネル2.6.16-rc2-mm1のリリースと同時に、「Matthias Urlichsにより、gitで-mmツリーの提供が開始された」と発表しました。従来、-mmツリーはquiltパッチのセットとして提供されていましたが、今後はgit利用者の利便性が向上します。

 また、Andrew Mortonは2.6.16-rc1-mm5から-mmツリーに対してホットフィックスパッチの提供を開始しました。これは、-mmツリーのリリース直後に発見された問題だけを修正するパッチをリリースするもののようです。このために、-mmツリーのパッチを置いているディレクトリに、hot-fixes/というディレクトリが追加されています。

 いままでは、修正版でありながら新機能も多く追加された-mmリリースが毎回リリースされていたことを考えると、仕組みとしては改善です。2.6.16-rc3-mm1以降、毎回数個のパッチが提供されており、少しずつ活用され始めているようです。このホットフィックスパッチによって-mmツリーの敷居が下がり、テストユーザーが増えるとよいですね。

関連リンク:
smurfのgitツリー
git://git.kernel.org/pub/scm/linux/kernel/git/smurf/linux-trees.git
ウェブフロントエンド経由で見る場合
http://kernel.org/git/?p=linux/kernel/git/smurf/linux-trees.git;a=summary
hot-fixesディレクトリの例
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc3/2.6.16-rc3-mm1/hot-fixes/

-stableリリース

 安定版2.6.15.yカーネル、2月は2つリリースされました。

  • 2.6.15.3(2月6日)
    ・ICMPネットワーキングのDoSのセキュリティフィックス(CVE-2006-0454)

  • 2.6.15.4(2月9日)
    ・alpha、sparc64、x86_64用にコンパイルが通らなかったり起動しなかったりすることの修正
    ・SELinuxやNFSのメモリリークの修正
    ・dm-cryptのキー管理の修正(CVE-2006-0095)
    など、24パッチ
2/2

Index
Linux Kernel Watch 3月版
 カーネルが無実のプロセスをkillし始めるとき
  Page 1
 カーネル2.6.16でglibc 2.4対応
 デバイスを管理するhaldがCD-Rの邪魔をする
Page 2
 “不安定なsysfs”が含まれる“安定版カーネル”って……
 カーネルのキラーが無実のプロセスを殺して回る
 -mmツリーにホットフィックスを
 -stableリリース

連載 Linux Kernel Watch


 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カーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間