Linux Kernel Watch

9月版 Hypervisor対応でLinuxをもっと仮想化しやすく

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

カーネル2.6.13リリース

 8月29日の月末ギリギリに、Linusはカーネル2.6.13をリリースしました。gitで管理し始めてから2つ目のリリースです。相変わらず、ChangeLogは巨大です。

 Linusはメールで、「pciデバイスのプローブの仕方などが変わったので気を付けてください」と宣言していました。ちょうどそのタイミングと前後して、Benjamin Herrenschmidt(benh)が「PowerMacでまったくデバイスが見えなくなった」と苦情を出していました。

 Linusは、「これから1週間旅行に出るけど、2.6.14にはリリースサイクルの最初の2週間に投げられたパッチしかマージするつもりはない。それ以降では、Ottawa Linux Symposiumで宣言(編注)したように、修正のみを受け入れる」と宣言しました。

編注:Ottawa Linux Symposiumで提案されたリリースプロセスについては、前回8月版の「リリースプロセスは改善するのか?」も参照。

 果たしてうまくいくのか、楽しみです。

参考リンク:
  ChangeLog http://www.kernel.org/pub/linux/kernel/v2.6/changelog-2.6.13
  gitリポジトリ http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary

-stableの進ちょく

 安定版として、カーネル2.6.12.4から2.6.12.6までがリリースされました。Chris Wrightが主体として実施していたようです。

 今回の変更点は、主として本当に問題となっている修正に限ったようです。-stableリリースも安定してきた、というところでしょうか。

  • 2.6.12.4(8月5日) 12パッチ
    • qla2xxxドライバの修正
    • AMD64のelfファイルローダの脆弱性に対する修正
    • ネットワークスタック、ネットフィルタのオーバーフローなどに対する修正
    • デュアルコアAthlonでoopsをする点についての修正など

  • 2.6.12.5(8月15日) 8パッチ
    • デュアルコアAthlonでのさらなる問題の修正
    • x86_64アーキテクチャでのSMPの問題の修正
    • zlibなどのセキュリティフィックスなど

  • 2.6.12.6(8月29日) 7パッチ
    • NPTLシグナルのデッドロックの修正
    • zlibの修正
    • いくつかのセキュリティフィックス
    • usbnetドライバの修正
    • /proc/scsi/sg/devicesのメモリリークの修正など

参考リンク:
  -stableリリースのgitリポジトリ
(Chrisw)
http://www.kernel.org/git/?p=linux/kernel/git/chrisw/linux-2.6.12.y.git;a=summary
  -stableリリースのgitリポジトリ
(Greg K-H)
http://www.kernel.org/git/?p=linux/kernel/git/gregkh/linux-2.6.12.y.git;a=summary

udevよ、おまえもか

 Henrik Brix Andersenが、watchdogデバイスの名称統一を目的とした提案パッチをLKMLに投げました。彼によると、現状では各デバイスが機種名に基づいた名前を付けているためデバイス名がバラバラである。そのため、利用しているwatchdogデバイスによって/dev以下のデバイスファイルの名前が異なり扱いにくい。そこで、デバイス名を「watchdog」に統一しよう、というわけです。

 Christoph Hellwigはその提案に関して、「デバイスの名前は『miscdevice.name』という内部的なデバイスの説明の文章であって、デバイスファイルの名前とは関係ない。そのため、デバイス名を統一しても実質的なメリットはないのでは」と意見しました。

 しかし、Olaf Heringによって、「sysfsではデバイスファイル情報が『/sys/class/misc/<デバイス名>/dev』というパスにできる。udevを利用していれば、そのデバイス名がそのまま/dev/以下に作成されるデバイスファイルの名前になってしまうため、デバイス名を統一する必要があるのだ」という指摘が入りました。

 では、デバイス名を統一すれば万事OKかというと、そうもいかないようです。「デバイス名のフィールドに入っている機種情報なども有用な情報源となるため、消さないでほしい」というChristoph Hellwigの要望も出ていました。

 以前、devfsでは既存のフィールドをほかの用途にも応用してしまったため、同じような問題を起こしていたようです。「まだ、udevを直すには遅過ぎるわけではないので、udevの仕様を修正してほしい」とChristoph Hellwigは提案しました。

PlugSchedでベンチマーク

 Xorgを利用する際、GPUが処理中の場合はXorgのプロセス自体がビジーループで待ってしまう実装になっていたという問題がありました。そこから、アプリケーションがそうした挙動を取った場合、カーネルのスケジューラ側で改善できる部分は少ないのではないか、という話が出ました。

 そこで、Peter WilliamsがPlugSched()を利用してベンチマークを取ってみたそうです。彼は、下記のスケジュールオプションを試して、それぞれのパフォーマンスを分析しました。

注:スケジューリングポリシーをPluggableに変更できるスケジューラ。詳しくは、CPUSE(CPU Scheduler Evaluation)プロジェクト参照。
  • ingosched
  • nicksched
  • staircase
  • spa_no_frills
  • zaphod

 複数のスケジューラのパフォーマンスを数字で比較することで、今後の高負荷時のパフォーマンス改善につながることに期待です。

参考リンク:
  CPUSE https://sourceforge.net/projects/cpuse/
  パッチ http://prdownloads.sourceforge.net/cpuse/plugsched-5.2.4-for-2.6.13-rc6.patch?download

sched_yieldの実装はどうなる?

 Bernardo Innocentiは、「OpenLDAPがsched_yieldを呼ぶとすごく遅くなる」という問題を提起しました。

 スレッドを利用したプログラムで、通常時持っているロックを解放してsched_yieldを呼び、ほかのスレッドにCPUを明け渡すという処理をしているものがあります。そうすることで、ロックを待っているほかのスレッドがまったく処理できないという事態を避けることができます。

 しかしながら、カーネル2.6系列のスケジューラでは、sched_yieldをいったん呼んでしまうと、例えばNICE値で優先度を低く設定しているプロセスまで処理させてしまうため、次にスケジュールされるまで時間がかかるようになってしまったのです。

 Nick Pigginの説明では、「sched_yieldは、POSIXのプライオリティが同じレベルのプロセスに対してはどのような実装でもよいことになっている。Linuxの挙動は、その点で間違っているわけではない」ということでした。それに対して、Howard Chuは「sched_yieldはpthread_yieldの代替として重要な機能なので、何とかしてほしい」と要望を出しました。

 sched_yieldの仕様と実装について熱い議論が交わされましたが、いまのところ特に良い結果は出ていないようです。

(以上、敬称略)

2/2

Index
Linux Kernel Watch 9月版
 Hypervisor対応でLinuxをもっと仮想化しやすく
  Page 1
 XenとVMwareに最適なLinuxを目指して
 時間管理機構の統一は難航中
 DynTicksによる低消費電力の試み
 ユーザー→カーネル空間のメモリコピーを最適化
  Page 2
 カーネル2.6.13リリース
 -stableの進ちょく
 udevよ、おまえもか
 PlugSchedでベンチマーク
 sched_yieldの実装はどうなる?

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

本日 月間