上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
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をする点についての修正など
- qla2xxxドライバの修正
- 2.6.12.5(8月15日) 8パッチ
- デュアルコアAthlonでのさらなる問題の修正
- x86_64アーキテクチャでのSMPの問題の修正
- zlibなどのセキュリティフィックスなど
- デュアルコアAthlonでのさらなる問題の修正
- 2.6.12.6(8月29日) 7パッチ
- NPTLシグナルのデッドロックの修正
- zlibの修正
- いくつかのセキュリティフィックス
- usbnetドライバの修正
- /proc/scsi/sg/devicesのメモリリークの修正など
- NPTLシグナルのデッドロックの修正
参考リンク: | ||
-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
|
|
|
||||
|
連載 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」コマンドです。
|
|