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 |
|
||||
|
連載 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カーネルの開発体制などについて伺った |
|
|
- 【 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」コマンドです。
|
|