Linux Kernel Watch

11月版 ドライバに変数を渡すのにうってつけの方法


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

linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えする、Linux Kernel Watch。10月のLinuxカーネル関連の状況について、見てみましょう。

カーネル2.6.14リリース!

 10月28日に、とうとうカーネル2.6.14がリリースされました。

 Linusの計画では、10月11日にリリースしたrc4の後にリリースするつもりでした。しかし、さまざまな問題が解決できなかったため、当初の計画にはなかった-rc5を出すことになりました。これにより、カーネル2.6.14は予想よりも遅れてのリリースとなったのです。

 当初宣言していたリリースプロセスでは、「リリースから2週間経過した後はメールのみでパッチを適用する」としていました。しかし、この方法は運用上のオーバーヘッドが大き過ぎて、2.6.14のリリースには適用できませんでした。そのため、gitのツリーで丸ごとマージする処理も発生していました。

 今後もこのまま運用することになりますが、「最初の2週間に大きな変更を導入し、以後は修正のみを適用する」という方針を維持していくつもりのようです。

 なお、2.6.14がリリースされたことにより、新規の取り込みを止めていた大量のパッチがすごい勢いでLinuxのツリーに取り込まれ始めました。次の2.6.15はどうなるのか、そのリリースプロセスをどうするのか、楽しみです。

プライベートネームスペースに懸念

 ユーザーレベルでファイルシステムをマウントできるv9fsやFUSEが、とうとう安定版カーネル2.6.14の一部としてリリースされました。

編注:FUSEとv9fsについては、Linux Kernel Watchの
 「10月版 Reiser4と激怒するLinuxカーネル開発者たち
も参照。

 ただし、これらのファイルシステムが導入されたことにより、「ユーザーごとにファイルシステムツリーが異なって見える」という、従来はより実験的で特殊な状況に限られていた状態が普通に発生することになります。

 例えば、「/etc/mtabをどう維持するのか?」という問題があります。mountコマンドは、/etc/mtabを管理する際に「複数のファイルシステムネームスペース空間がない」ことを前提にしています。FUSEなどにより、この前提条件が成立しなくなるのです。実は、これまでにも、chroot環境などでは問題になっていたことです。

 今後、/etc/mtabの仕様が変わることもあるのでしょうか。/etc/mtabに依存しているツールもいくつかあると思われるので、今後の対応が心配です。

参考リンク:
FUSE http://fuse.sourceforge.net/
v9fsプロジェクトページ http://v9fs.sourceforge.net/

広がる-RTカーネル

 -RTカーネルは、Linuxカーネル上でのリアルタイム処理実現を目指して開発が続けられています。-RTカーネルでは、長時間カーネル内部で処理をし続けるような状況を回避するため、プリエンプションや長時間の処理を複数に分割したりする変更が加わっています。音声データのリアルタイム処理など、処理のレイテンシが重要な用途でのユーザーが定着しています。

 これまで開発はx86対応が中心で、まだ移植版を作成するという雰囲気ではありませんでした。最近は、デスクトップPCやノートPC向け64bit CPUであるx86_64アーキテクチャのユーザーが増加しているため、x86_64の対応が進んでいます。LKMLにも、「デバッグ機能が動かなかったりしたのを修正した」というメールが流れていました。今後、x86_64でも安定してリアルタイムの音声処理ができるようになるかもしれません。

 なお、ARM向けの対応も少しずつ進んでいるようです。

ディスクI/Oとniceレベル

 「大きなディレクトリに対して“cp -a”などを実行すると、システムの速度がかなり低下するため作業ができない」。Marc Perkelの苦情がLKMLに流れました。

 それに対して、Con Kolivasは「CFQ(Complete Fair Queuing)スケジューラではniceレベルを選択できる」と説明しました。

 niceコマンドを使うと、CPUの優先度を変更することができます。フロントエンドで実行しているアプリケーションのレスポンスタイムへの影響を低減するため、バックグラウンド実行しているバッチジョブの優先度を下げる場合などによく利用するコマンドです。

 最近のカーネルは、ディスクI/Oのスケジューラを選択できるようになっています()。そのうちの1つであるCFQスケジューラでは、発行しているプロセスごとに優先度を指定できるようになっているとのことでした。CFQの優先度は、ioniceコマンドで設定できます。また、デフォルトではnice情報を利用するため、niceコマンドを使えばCFQスケジューラを利用しているデバイスに対する処理の優先度を変更できるようです。

注:I/Oスケジューラには、anticipatory(デフォルト)、CFQ、deadline、Noopがある。ちなみに、Red Hat Enterprise Linux 4.0はCFQをデフォルトとして採用している。

参考:Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel(http://www.redhat.com/magazine/008jun05/features/schedulers/

 残念ながら「READなど一部の処理についてのみ有効」とのことですが、便利な機能かもしれません。

参考(カーネルソース内):
CFQの優先度設定について
(ioniceツールなどが紹介されている)
Documentation/block/ioprio.txt

1/2

Index
Linux Kernel Watch 11月版
 ドライバに変数を渡すのにうってつけの方法
Page 1
 カーネル2.6.14リリース!
 プライベートネームスペースに懸念
 広がる-RTカーネル
 ディスクI/Oとniceレベル
  Page 2
 デバイスドライバの変数の設定はどうしたらよいか
 2つの-stableリリース
 メモリ空間のフラグメント化対応
 ソースツリーってどうなってるの?

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

本日 月間