2月版 仮想化技術「KVM」の高速化パッチ登場!


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

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

汚名返上なるか? 安定性重視の2.6.20

 2007年1月は、オーストラリアで開催されたLinuxのカンファレンス「linux.conf.au(LCA)」の影響で1週間ほど開発が中断しました。Linusたちは、2.6.20-rc5をリリースしてからLCAに参加。カンファレンス終了後に2.6.20-rc6をリリースしました。

 また、2.6.20についてLinusは「安定性を重視している」とコメントしました。2.6.19で大きな問題が露呈しただけに反省の意味が込められているようです。ちなみに、2.6.20の大きな変更点は2.6.20-rc1で追加され注目を集めている「KVM(Kernel-based Virtual Machine)」です。そのほかには、特に目立った変更点はないようです。

 果たして、安定性を重視した成果がしっかりと表れてくるでしょうか? 2.6.20リリース後のユーザーからの反応が気になります。

関連リンク:
linux.conf.au
http://lca2007.linux.org.au/

注目のKVMに高速化パッチが!

 注目の「KVM」ですが、2.6.20リリースに向けていくつか動きがありました。Avi Kivityは「KVM:MMU:Cache shadow page tables」というタイトルで高速化パッチを投稿しました。その際、「このパッチを2.6.20にマージするべきか否か」という点でAndrew Mortonと議論になりました。しかし、Avi Kivityは以下の理由を説明して無事にパッチをマージしてもらいました。

  • KVMは、2.6.20の新機能なので前より悪くなりようがない(2.6.19にKVMは存在しないので)

  • 「取りあえず動くことを証明した(proof of concept)バージョン」を実際に使用できるレベルまで引き上げるためのパッチである

  • 現状、安定稼働している

 高速化など、KVM関連の開発はますます盛り上がりを見せています。その半面、実用化に向けて互換性や安定性の課題が今後も出てくることでしょう。

 注目のKVMだけにしばらくはこの活発な開発状況が継続しそうですね。

関連リンク:
2006年12月版 ついに仮想化がカーネル標準機能に!?
http://www.atmarkit.co.jp/flinux/rensai/watch2006/watch12b.html
1月版 ext3でデータが破損!? メモリ管理で不整合
http://www.atmarkit.co.jp/flinux/rensai/watch2007/watch01a.html

蓄積し始めたgitの運用ノウハウ

 「-mmツリーの新しいリリースが出ても、すぐにファイルを取得できる状態にならない」という苦情などが来ている中、John Hawleyが「最近、kernel.orgのサーバの負荷が高い」という報告をしました。その問題の原因は「git」と「gitweb」にあるとのことで、「サーバのメモリ上にアクセス頻度の高いデータが乗り切らず、ディスクアクセスが発生して、その際のディスクI/Oがボトルネックとなっている」と指摘しました。

 また、サーバの挙動に関して、H.Peter Arvinは「getdents(注)システムコールが1回当たり200ミリ秒から1秒くらいかかっている」と指摘しました。

注:getdentsとは、ディレクトリのファイル一覧を取得するシステムコールです。

 この問題についてLinusは、「ext3で特に遅いことが分かっている。該当するディレクトリ情報がメモリ上にキャッシュされていない場合は、getdentsが直接ディスクを読みに行くが、ディレクトリ一覧を取得する処理がinodeセマフォアにより直列処理されているので、複数のプロセスがgetdentsを読もうとしても順番にしか処理されない。リードアヘッドも行わない実装なので特に遅いんだ」と説明しました。この説明を受けて「サーバのファイルシステムをXFSに切り替えよう」という話題などで盛り上がりました。

 そもそも、この問題は「メモリ上にディレクトリ構造の情報が乗り切らない」という点にあります。この問題を軽減するためH.Peter Arvinは、gitリポジトリのユーザーに対して「git pruneを実施して不要なファイルを減らすこと」「alternatesを設定すること」と注意を促しました。

 また、Jeff Garzikは「同じlinux-2.6のリポジトリのファイルがクローンされて複数の場所に置いてあることが問題だ」と指摘しました。さらに、「ファイル数の増加がパフォーマンスに大きく影響するので、サーバ上で既存のリポジトリから新しいリポジトリを作るgit cloneを実行する際は、ハードリンクを利用する

$ git clone -l linux-2.6 nigel-2.6

ではなく、
alternatesを利用する

$ git clone --reference linus-2.6 linus-2.6 nigel-2.6

とすべきだ」と主張しました。こうすることで、既存のリポジトリに存在するファイルは直接それを見て、新規追加のものだけが新規に作成されることになります。

 gitがリリースされてから約2年が経過して、大規模運用での課題やその対策方法などのノウハウが蓄積され始めているようです。

関連リンク:
2005年5月版 BitKeeperからgitへ、ソースコード管理ツール大変更
http://www.atmarkit.co.jp/flinux/rensai/watch2005/watch05a.html

1/2

Index
Linux Kernel Watch 2月版
 仮想化技術「KVM」の高速化パッチ登場!
Page 1
 汚名返上なるか? 安定性重視の2.6.20
 注目のKVMに高速化パッチが!
 蓄積し始めたgitの運用ノウハウ
  Page 2
 粘り勝ち? unionfsのマージ
 OLPCは面白いアーキテクチャ
 メンテナンスはいつまで続けるものか?

連載 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 記事ランキング

本日 月間