5月版 マージウィンドウなんか1週間に縮めちゃえ?


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

linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えする、Linux Kernel Watch。2008年4月のLKMLでどんなことが起きたのか見てみましょう。

2.6.26に向けて再燃、リリースプロセスめぐる議論

 4月16日に2.6.25がリリースされ、それを受けて早速、2.6.26の開発が始まっています。しかし2.6.26の開発開始に伴って、リリースプロセスをどうすべきかという議論が再燃しました。

 相変わらず、Rafael Wysockiがリグレッションバグの管理を受け持っています。ただ、リグレッションの修正は思うように進んでいないようで、今回は個別のバグについて、それぞれの担当者にメールを打つ形にプロセスを変更してみたようです。

 このように、リリースプロセスについていろいろと議論があったため、2.6.26-rc1のリリースは少し遅くなり、前回から2週間以上過ぎた5月4日になっています。

マージウィンドウ、2週間の是非

 Linusのリリースする-rcツリーは、「マージウィンドウ」というコンセプトを中心に運営されています。リリース版が出たら、次バージョンの初期の-rcが作成される2週間程度の間に重要な変更をマージし、その後の-rcリリースは安定化のために利用する、という仕組みです。

 このプロセスに対し、Dave Millerが「Slow DOWN, Please!!!」というタイトルでメールを出しました。rcリリースに対し、「パッチをマージするペースが速過ぎて、テストが困難になっているのではないか」というのです。「今回のマージウィンドウでは起動すらしないバグがあるカーネルを連日使うことになっていて、自分のコードが書けなくなってしまっている」と苦言を呈しました。

 Rafael J. Wysockiも、「1日に1回か2回ビルドすることはできるが、こんな頻度では、テストするのは到底無理だ」とコメントしました。どうやら、マージウィンドウが短か過ぎると思っているのは1人だけではないようです。

 それに対してAndrew Mortonは、「-mmは、マージされる前にコードが正しく動くようにするために存在しているのだから、それをうまく活用すればいいんだ。現在、開発者自身があまり-mmツリーのLinuxカーネルをテストしていない現状が問題だ」と反論しました。

 これらに対するLinusの主張は、マージウィンドウを短くしようというものです。Dave Millerの苦言に対しては、「進展には問題が必ず伴うもので、これは、進化には特有の苦痛なのだ」という趣旨のコメントをしました。

 現在は、長いマージウィンドウを確保してゆったりマージするのではなく、意図的に短いマージウィンドウとし、まずコードをマージしてからテストし、修正を加えていくというスタイルを取っています。Linusによると、ゆったりとしたウィンドウを取るより、そちらの方がきっちりテストされるし、バグも修正される、というのです。

 現在、マージウィンドウは2週間確保されています。しかしLinusは、linux-nextでマージコンフリクトに関する事務的なボトルネックの解決が見込まれるため、さらに1週間にまで短縮してしまおうとすら提案しました。

linux-nextの存在意義とは?

 Andrew Mortonの提案を基に2月14日から始まったlinux-nextの存在意義も話題になりました。

 ARMの対応で問題があった際に、「ARMも-nextを利用すればよい」という指摘が出ました。これに対しRussel Kingは、「-nextにマージされる利点がないので、-mmでいいじゃないか」とコメントしました。

 Andrew Mortonがその点についてさらにコメントし、「-mmでは、マージされるパッチのコンフリクトの管理に手間が掛かっている。しかし-nextに入れば、コンフリクトの管理が継続的に行えるので、全体としては管理の負荷が下がる」と説明しました。

 linux-nextのように毎日マージされるようなツリーに対して作業していると、統合した際の品質向上が期待できます。しかし、マージ作業に追従するための各メンテナの作業負荷は高まります。どちらを優先するべきか、悩ましいところですね。

関連記事:
リンク 2008年3月版 Linusの片腕、Andrewの夢は「結合テストを楽に」
http://www.atmarkit.co.jp/flinux/rensai/watch2008/watch03a.html

cgroupでリソースを管理する幸せ

 Linux Kernelに、Control Group(cgroup)という仕組みが加わりました。これは、いままでリソース管理をプロセス単位で行っていたことによる制限を改善するためのものです。

 cgroupで制御される対象を「コントローラ」と呼びます。コントローラとしては、メモリの管理やCPU負荷の管理、ブロックI/Oの量の管理といった機能が、続々と追加されようとしているようです。

 cgroupは、複数のプロセスが所属しているグループを定義し、その単位で管理を行います。一度1つのグループに割り当てられたプロセスは、そのグループの中に所属することになります。そのため、従来であればプロセス単位でリソースの制限がなされていたのが、グループ単位で管理可能になります。

 これに関連して、カーネル2.6.25で追加された機能に、「Real Time Group Scheduling」という仕組みがあります。これは、SCHED_RTのプロセス(リアルタイム優先度のプロセス)に関してもcgroupで管理できるようにしたものだそうです。

 リアルタイム優先度のプロセスとは、優先的にCPUが割り当てられ、実時間で動かしたいプロセスを実行するというものです。身近な例では、音声処理や画像処理などでCPUが十分割り当てられないと不快なノイズが乗るといったパターンが思い浮かぶでしょう。

 従来、Linuxカーネルでリアルタイムプロセスをスケジューリングした場合、リアルタイムプロセスがCPUを100%占有し続けることで、プロセスが暴走したらほかのことが何もできなくなるという問題が起きる可能性がありました。しかしこの仕組みで、その課題を解決できるようです。

 cgroup関連については、便利な機能がどんどん追加されているようです。今後も新たな機能に注目しておきたいところです。

参考:
Documentation/cgroup.txt cgroupの全体の説明
Documentation/controllers/memory.txt メモリリソースコントローラの説明
Documentation/accounting/cgroupstats.txt cgroup単位のアカウンティングの説明
Documentation/controllers/devices.txt ディスクコントローラの説明
Documentation/scheduler/sched-rt-group.txt リアルタイムグループスケジューリングの説明

関連記事:
リンク 2007年12月版 おちゃめなLinus、「今回も遅れちゃったよ」
http://www.atmarkit.co.jp/flinux/rensai/watch2007/watch12b.html
リンク 番外編 Linuxメモリ管理の最先端を探る
http://www.atmarkit.co.jp/flinux/rensai/watch2008/watchmema.html

4月版へ
1/2

Index
Linux Kernel Watch 5月版
 マージウィンドウなんか1週間に縮めちゃえ?
Page 1
 2.6.26に向けて再燃、リリースプロセスめぐる議論
 マージウィンドウ、2週間の是非
 linux-nextの存在意義とは?
 cgroupでリソースを管理する幸せ
  Page 2
 着々と進化するKVM、準仮想化での改善
 とうとうマージされた便利機能、KGDB
 -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 記事ランキング

本日 月間