上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2005/6/21
linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えするLinux Kernel Watch。先月紹介したバージョン管理システムをめぐる混乱は、ひと月が過ぎてもまだドタバタしているようです。
では、5月のLinuxカーネル関連の状況を見てみましょう。
「git vs. Mercurial」がもたらすもの
4月にLinuxカーネルのソースコード管理システムとして突然デビューを果たしたgitですが、5月になってもgit自体の設計に関する議論が継続しました。
発端は、Matt Mackallが開発している分散モデルのソースコード管理システム“Mercurial”の出現でした。Mercurialの開発がスタートしたのは、Linusがgitの開発を開始した後だそうです。Mackallは、実際に動作するコードとパフォーマンスを計測した実データをもって、Linusと議論しました。
Mercurialは、gitよりもストレージ上での効率と処理速度を重視しています。両者の設計の違いとして、gitは各ファイルの各バージョンを圧縮したデータをそのまま持っていますが、Mercurialは容量を節約するためにデータを差分で保持しています。また、ネットワーク経由でデータをやりとりする場合、gitはrsyncで丸ごと同期するため負荷が高く、この点が将来的に問題になりそうです。一方のMercurialは専用のクライアント/サーバ方式を実装し、より効率よく複製するようになっています。
Mercurialの登場に刺激を受けたのか、gitにも動きがありました。Petr Baudisは、git専用のCGIをWebサーバに導入して、最後のコミットオブジェクトのID(注)さえあればすべてのデータを配布してくれるようにしたらよいだろう、と提案しました。
注:gitではすべてのオブジェクトを40文字のSHA-1文字列で表現する。 |
専用CGIを導入していない状態では、HTTP経由でgitのリポジトリのコピーを取得する際に多くのHTTPリクエストが発生します。各コミットオブジェクト(gitがあるバージョンに関しての情報を保持する形態)の中に親コミットオブジェクトの番号が書いてあるため、少なくともコミットの回数だけHTTPリクエストが発生してしまうのです。
専用CGIを導入すれば、これを改善することができます。コミットオブジェクトに書いてあるツリーオブジェクト(注)の番号を調べ、ツリーオブジェクトに書いてあるBLOBオブジェクト(gitの内部で各ファイルを表現)の番号を調べた時点で、あるバージョンのツリーを構成するファイルの一覧が分かるので、HTTPのリクエストを出すことができます。また、一連のコミットオブジェクトや、あるリビジョンから違うリビジョンまでに必要なファイルの一覧を知らせてくれる仕組みがサーバ側にあれば、HTTP経由での配布が効率化するでしょう。
注:gitの内部であるコミットに含まれているファイルの一覧を保持するデータ。 |
rsyncは「サーバ側とクライアント側のファイルをすべて調査して、存在しないファイルをコピーする」という動作を行うため、今後カーネルの開発が進んで履歴が蓄積するにつれて、サーバに掛かる負荷が増大すると予想できます。
問題を明らかにしてくれる競合の存在によって、gitが良い影響を受けるのは歓迎すべきことでしょう。
参考リンク: | ||
Mercurial | http://www.selenic.com/mercurial/ |
5月の-stableアップデート状況
5月の-stableはセキュリティホールの発見とその対応に追われ、慌ただしいリリースとなりました。とはいうものの、今回正規の「-stable review」サイクルを通ってリリースされたのは2.6.11.11だけです。
- 2.6.11.9(5月11日)
ELFローダのコアファイルを扱う部分にあったセキュリティホールのセキュリティフィックスです。
また、2.6.11.8には「DOSのパーティションタイプ0を無視する」パッチ(注)を取り込まないはずなのに、なぜかそれが取り込まれていたため、その部分を戻すパッチも同時に入っています。
注:このパッチは、ユーザーたちの中で物議を醸していました。
そのほか、セキュリティ関連の問題があった場合の連絡先がMAINTAINERSファイルに追加されました。
- 2.6.11.10(5月16日)
RAWデバイスとpktcdvdにあったセキュリティホールへの対応が行われました。また、このリリースから2.6.11.yカーネルもgit管理になりました。リリースノートも、cat-fileコマンドで見たgitのコミットオブジェクトの内容をそのまま掲載したものになっています。
- 2.6.11.11(5月27日)
このバージョンは、通常の2日間のレビューサイクルを通してリリースされました。2.6.11.8以降に蓄積していたさまざまな修正が入っています。
・x86_64やPPCアーキテクチャの不具合についての修正
・USBドライバの一部の問題に対する修正
・IDEドライバのDMAの認識に関する修正
・PPCの修正
・ext3の競合に関する修正
など、20近くに上ります。
参考リンク: | ||
2.6.11.9 ChangeLog | http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.11.9 | |
2.6.11.10 ChangeLog | http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.11.10 | |
2.6.11.11 ChangeLog | http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.11.11 | |
2.6.11.yのgitツリー | http://kernel.org/git/gitweb.cgi?p=linux%2Fkernel%2Fgit%2Fgregkh%2Flinux-2.6.11.y.git;a=log |
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」コマンドです。
|
|