Linux Kernel Watch

8月版 割り込み頻度変更で消費電力は低下するか?

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

linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えするLinux Kernel Watch。7月はOttawa Linux Symposiumがあった影響か、いつもより心なしかパッチの流れが盛況だったLKML。何か新しい展開が生まれたのでしょうか。

では、7月のLinuxカーネル関連の状況について、見てみましょう。

ついに来た、devfs削除の波紋

 /devの管理をdevfsのみに依存していたユーザーは、新バージョンのカーネルをインストールして再起動したら、/devが空になっているのに衝撃を受けたはずです。

 そう、devfsを削除したカーネル(2.6.13-rc3)が、Linusから初めてリリースされたのです。まだ正式リリース版ではないものの、LinusのリリースするRC版は多くの人が利用しています。LKMLには、その影響を受けた苦情のメールがいくつか流れていました。

 これまでdevfsを利用していた人たちには、

  • /devを静的に生成する
  • udevに移行する

という2つの選択肢があります。とはいえ、両方ともdevfsとは運用方法が大幅に変わるため、インパクトは大きいといえます。

 Greg Kroah-Hartman(以下Greg K-H)は、「1年以上前から消すと宣言していたのだから、驚くほどのことではないでしょう」「開発版カーネルなんてものはもうないのだから、2.6系を安定版カーネルと呼ぶのはちょっと違うかな」と主張していました。

 devfsを利用していたユーザーの受難の日々はしばらく続きそうです。

タイマー割り込み頻度変更で議論沸騰

 カーネル2.6.13-rc1にて、タイマー割り込みの頻度「HZ」が変更可能になりました。その際に、デフォルトの値が以前の

HZ=1000

から

HZ=250

になりました。このデフォルト値変更は多くの議論を巻き起こしました。

 デフォルト値を250から1000に戻してほしいという要求に対して、Linusは「それが必要なユーザーが1000に変更したらよいだけだろう」と反論しました。そして、「『デフォルトを1000にするべきだ』と主張するのであれば、それが本当に良いということを示すデータを見せろ」というのです。

 議論の焦点となっているHZは、前述したとおりシステムの割り込みの頻度です。その頻度で割り込み処理が発生し、プロセスの切り替えを行ったり、Linuxが内部的にクロックを数え上げるために利用している「jiffies」という変数の値が増大したりします。

 割り込み頻度(つまりHZの値)を歴史的に見ると、例えばi386アーキテクチャにおいては「100」というように、アーキテクチャごとにそれぞれの値が設定されていました。カーネル2.6系列では、これが1000に変更されていました。そして、カーネル2.6.13-rc1からデフォルト値が250になったというわけです。

 HZの値は消費電力に影響すると考えられます。では、HZの値を下げることによって、本当に電力消費が下がるのか? これを実際に計測しようとした人たちがいました。

250Hzを選んだのは、低い周波数の方が割り込み処理が少なくなり、処理に必要な電力が低くなるからである

という説明に根拠があるのか、調査してみようというわけです。

 結論からいうと、何も処理していない状態でも、

プロセッサが「C3」という状態に入らなければ消費電力は低下しない

ということでした。また、

C3に入るのであれば、20%程度の差が出ることもある

という結果を出していました。

 Marc Ballarinは、現実的な利用状況における消費電力についてベンチマークテストを実施し、数値をメーリングリストに投稿しました。KDEの場合、artsdを動作させているとCPUがC3状態に入るのを阻害するため、消費電力をあまり低減できないことが分かりました。また、USB関連は定期的にポーリングする必要があるため、CPUの消費電力の観点からいうとあまり好ましくない動作をするらしいということも分かりました。

 
条件
HZ=100 HZ=1000 差分
backlight on, artsd off 765.00 812.12 42.12
backlight off, arstd off 637.17 679.67 42.5
backlight on, artsd on 927.60 933.33 5.73
backlight off, artsd on 799.46 806.13 6.67
KDE実行中の場合の消費電力(単位mA)。電圧は16.5V
出典:Power consumption HZ100, HZ250, HZ1000: new numbersスレッド
http://www.uwsg.iu.edu/hypermail/linux/kernel/0507.3/1904.html

 Linux-audio-devメーリングリストでは、音楽関連の人たちがsleepの精度やシステムの応答速度について議論を交わしています。

 音声処理では、波形データを

 
サウンドカードから入力
CPUで処理
サウンドカードで出力

という一連の流れを短時間で実施します。

 音声処理ではレイテンシが重要です。サウンドカードへ出力するデータが必要になるまでに完了しなかった場合、「プチ」という音が出力されてしまいます。オーバーヘッドを無視すれば、HZは細かい方が良いことになります。また、現在は「HZ=1000」で動くようにアプリケーションの動作も調整しているため、この方面からも急に「HZ=250」などに変更されるのは困るという声が上がりました。

 音声処理関係以外でも、タイミングに依存するアプリケーションはHZ=250になると影響が出てきそうです。また、selectで利用できる待ち時間の精度が変わってしまう、という議論も出ていました。

 以前、parisc-linux MLで、PA-RISCのgprofなどにも問題が発生したことがレポートされていました。時間の取得にはtimes(2)関数を利用するのですが、その関数はCPU利用時間を「クロック数」で返します。クロック数をユーザーランドに見せる際の処理などがカーネルとglibcで一致していなかったために混乱が生じたようです。

 タイマー関連については改善の必要性が認識されているようなので、今後タイマー関連の話題がさらに熱くなっていくでしょう。

1/2

Index
Linux Kernel Watch 8月版
 割り込み頻度変更で消費電力は低下するか?
Page 1
 ついに来た、devfs削除の波紋
 タイマー割り込み頻度変更で議論沸騰
  Page 2
 リリースプロセスは改善するのか?
 7月の-stableリリースは2.6.12.3のみ
 gitで問題のカーネルリビジョンを検索
 崖っぷちに立たされたFUSEの行方は

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

本日 月間