IntelのPowerTOPでLinuxノートPCのバッテリ持続時間を延ばす

 最近IntelがリリースしたPowerTOPユーティリティは、Linuxカーネルの電力効率を高めるカーネル開発者の取り組みの上に構築されたものだ。PowerTOPを使えば、どのアプリケーションが最も電力を消費しているかのスナップショットが得られる。そうしたアプリケーションを終了するかその動作を変更すれば、すぐにでもバッテリの持続時間を延ばせるはずだ。

 先週、Linuxカーネルのメーリングリスト(LKML)でPowerTOPユーティリティの告知を行ったIntelのArjan van de Ven氏によると、最新のカーネル2.6.21におけるティックレス・アイドル(tickless-idel)機能では、タイマティックのために1ミリ秒ごとにウェイクアップを行わず、プロセッサを従来より長い時間アイドル状態にしておくことが可能であるため、かなりの電力を節減できるという。

 しかし、Linuxディストリビューションにはカーネル以上の利点がもたらされる。アプリケーションにも、消費電力節減のための調整可能な要素が存在することがあるからだ。ところで、どのアプリケーションがプロセッサを長時間使用して電力を消費しているかを確認するには、どうすればよいだろうか。topユーティリティは、個々のプロセスが使用しているCPUおよびメモリを百分率で表示してくれるが、消費電力に関する情報がないのでバッテリ持続時間の延長にはあまり役に立たない。そこで登場するのがPowerTOPだ。

PowerTOPのインストールと利用

 PowerTOPを実行する場合は、最高のパフォーマンスが得られるようにカーネルのティックレス・アイドル・パラメータ(CONFIG_NO_HZ)を有効にする必要がある。ただし、このパラメータはカーネル2.6.21以降にしか存在しない。また、詳細な統計情報を取得するためには、カーネルのCONFIG_TIMER_STATSオプションも有効にしておく必要がある。大半のディストリビューションはカスタムカーネルを持ち、それぞれに開発ブランチを管理しているため、適切なリポジトリを使ってカーネルを取ってくるだけで事足りるはずだ。私の場合、Fedora Core 7 Test 4上でPowerTOPがうまく動作しており、このFedoraのカーネルは2.6.20となっている。

 PowerTOPは既にいくつかのディストリビューションのリポジトリに入っているが、ソースからのインストールも難しくはない。実際、私としてはソースからのインストールをお勧めしたい。というのも、このユーティリティは今も人手をかけて開発が進められており、新たな改良版がリポジトリに追加されるまでに時間のかかることがあるからだ。

 PowerTOPの最新のtarball(本稿執筆時点ではバージョン1.2)をダウンロードし、「tar zxvf powertop-1.2.tar.gz」を実行して展開する。展開されたディレクトリに移り、makeコマンドでユーティリティのコンパイルを行う。コンパイルが完了したら、rootユーザになったうえで./powertopと入力してユーティリティを実行する。5分ほどかけてシステムに関する情報の収集が行われ、その後PowerTOPが立ち上がる。

Beagle終了前のPowerTOPの画面(クリックで拡大)
Beagle終了後のPowerTOPの画面(クリックで拡大)

 PowerTOPの画面構成は、実行する環境がデスクトップPCであるかノートPCであるかによって若干異なる。ノートPCであれば、一番上にC-STATEの情報が表示される。PowerTOPのWebサイトには、次のように記されている。「C-stateはCPUがアイドル状態にあるときの動作モードです。C-stateの数値が大きいほど、CPUが消費する電力は小さくなりますがCPUが命令実行状態に復帰するまでの時間が長くなります」。その下には、1秒あたりのウェイクアップ回数が表示される。この数値は小さいほど良い。

 電力使用量は、ノートPCをバッテリで駆動している時に限り表示される。PowerTOPでは、ACPIを利用して、ノートPCによる現在の電力使用量を表示したり、バッテリの残り時間を計算したりしている。その下には、マシンのスリープを妨げている動作の上位10件が表示される。これらの動作は、ハードウェア割り込みまたはアプリケーションによるもののどちらかである。その動作の内容に応じて、PowerTOPは画面の一番下に提案を出してくれる。こうした提案に従うことで、バッテリの持続時間が延びることがわかるだろう。

 ここに示したPowerTOP画面の2枚の画像からは、PowerTOPの提案どおりにBeagleを無効にしたことでウェイクアップ回数が156.8から142.7に減っているのがわかる。Beagleを無効にした後は、カーネルのCONFIG_USG_SUSPENDオプションを有効にするようにとの提案が得られた。このオプションにより、UHCIによるUSB割り込みが自動的に無効になり、電力が1ワット節約されることになる。

アプリケーションの電力効率を高める

 PowerTOPは、Intelによる省電力プロジェクトの一部に過ぎない。また、このプロジェクトのWebサイトには、Linuxカーネルや数々のLinuxアプリケーション向けのパッチが存在する。ある種のアプリケーションについては終了させたり無効にしたりできない、またはそうしたくないので、こうしたパッチを使えば動作の調整や消費電力の削減を行うことができる。

 カーネル用パッチの他、現在はWebブラウザFirefox、IMクライアントPidgin、メールクライアントEvolutionをはじめとするアプリケーション用のパッチも用意されている。これらのパッチを利用するには、それぞれのアプリケーションをソースからコンパイルする必要がある。ディストリビューションによって既にインストールされたアプリケーションにはパッチを適用できないからだ。

 Firefoxにパッチを当てる場合は、Firefoxのソースtarballをダウンロードして、「bunzip2 firefox-2.0.0.3-source.tar.bz2」による伸張と、「tar xvf firefox-2.0.0.3-source.tar」による展開を順に行う。続いて、MikeのHommey Firefox用パッチをダウンロードし、展開したFirefoxのソースディレクトリ内に置く。このパッチを試すには、「patch --dry-run -p0 -i firefox.patch」を実行する。これにより、実際に変更を加えることなく、パッチが適用できるかどうかを試すことができる。それがうまくいけば、先ほどコマンドから「--dry-run」オプションを除いた「patch -p0 -i firefox.patch」を実行してパッチの適用を行う。パッチの適用が済んだら、引き続き「./configure」、「make」、「make install」を順に実行してFirefoxをコンパイルする。

 ソースからアプリケーションをインストールすることに慣れていない場合、パッチの適用は少し難しいかもしれない。しかし、急がなくてもよいのなら、こうしたパッチはそのうちに各アプリケーションに含まれることになるはずだ。事実、Pidginの開発版には、PowerTOPのWebサイトにあるのと同等のパッチが既に当てられている。

 PowerTOPは、消費電力を削減してノートPCのバッテリを最大限に活用するためのより大きなプロジェクトの一部である。消費電力の監視は、省電力機能の一面に過ぎない。実際に効果を生み出すのは、アプリケーション動作の調整である。さまざまなアプリケーションにパッチを提供することにより、PowerTOPの開発陣は、アプリケーションがプロセッサバスを不必要に占有してバッテリを消費させる事態を回避している。パッチの適用方法は、もっぱらデスクトップ環境を利用するコマンドラインに不慣れなLinuxユーザにとっては習得が難しいため、PowerTOP開発陣は各種アプリケーションの開発者と連携しながらチューニングやアプリケーション自体へのパッチの組み込みを進めている。PowerTOP本体の開発にも力が入れられており、開発者たちの手元には、PowerTOPによる提案をボタンの押下によって実行する機能など、実装すべき機能の一覧が存在する。

コラム:Arjan van de Ven氏へのインタビュー
PowerTOPプロジェクトの詳細と同ユーティリティの機能を知るために、プロジェクトリーダーであるIntelのArjan van de Ven氏に電子メールでいくつかの質問を送り、答えてもらった。

NewsForge(以下、NF): このプロジェクトの背景について少し説明してもらえますか。

Arjan van de Ven氏(以下、AV): 現在、コンピュータの消費電力が注目されています。データセンタ向けのサーバも然り、モバイル社員向けのノートPCも然りです。Thomas Gleixner氏とIngo Molnar氏によるティックレス・アイドル機能の追加は、Linuxカーネル関係者にとって消費電力の面での重要な前進でした。

しかし、この新しい機能を我々が評価したところ、残念な結果が出ました。カーネルが1ミリ秒ごとにウェイクアップすることはなかったのですが、ユーザ空間がそうなっていたのです。こうした頻繁なウェイクアップにより、Linuxは我々Intelのハードウェア専門家が自社製品に追加したこの先進の電力節減機能を十分に活用できず、私自身のLinuxノートPCでもバッテリの持続時間が減ってしまいました。そこで、Linuxでも電力を節減できるようにしようとする個人的な意欲が湧いてきたのです。

NF: プロジェクトの目的は何でしょうか。見たところ、PowerTOPユーティリティの開発と、電力節減のためのアプリケーション用パッチの作成に分かれているように思えますが。

AV: 主たる目的はLinuxの消費電力を減らすこと、つまり、コンピュータの持つ省電力機能をLinuxが最大限に活用できるようにすることです。ただし、この目的はIntel単独では達成できません。広範囲にわたるLinuxコミュニティの協力が必要です。各機能の修正版やパッチの提供も目的の1つですが、これは我々がずっと以前から続けてきて現在も行っていることです。PowerTOPに関しては、開発者が自分のセットアップ環境上の問題をすばやく把握して修正できるようなツールを用意しています。我々は今後もこのツールの利用を続けるので、他のプロジェクト向けのパッチはこのツールによって提供されます。

NF: コミュニティの参加を求めていますか。また、ユーザが貢献できるのはどんな分野でしょうか。

AV: もちろん、コミュニティの参加を求めています。既にIRCチャンネル(irc.oftc.netの#powertop)ではこうしたことが行われています。普通は30~50名の人々がいて、各種アイデア、問題を修正するためのパッチ、PowerTOPのバグレポートをやりとりしています。こうした活動をしている人々のうち数名は、PowerTOP内のバグを修正するパッチも提供してくれています。開発者はさまざまなオープンソースプロジェクトで見つかった問題を修正するパッチを提供し、エンドユーザは自分のマシンでの動作状況を報告したり、そこでわかったチューニング可能な対象について情報交換をしたりしているわけです。良い結果を生み出す優れたアイデアがあれば、他の人々のシステムでも利用できるようにWebサイトに掲載しています。

また、私はさまざまなオープンソースプロジェクトが各自のソフトウェアのチェックと修正にPowerTOPを使い始めることを期待しています(KDEとGNOMEの両プロジェクトでは、既にこうしたことが行われているようです)。

NF: 今のところ、PowerTOPプロジェクトにはドキュメントが用意されていません。メーリングリストとIRCチャンネルは存在するのですが、フォーラム、Wiki、静的なHTML文書は、準備を進めているところですか。

AV: Webサイトの更新は絶えず行っており、そこにはユーザの皆さんからの提案、ヒント、ちょっとしたテクニックの他、IRCやメーリングリストで我々に寄せられた質問に対する回答を載せています。現在、取り組んでいるのはオープンソースプロジェクトの開発者向けのページです。このページは、状況の診断方法や、各アプリケーション内に特定の構造体をコーディングする方法の共通パターンとして見られるアイデアを提供するものです。

Webサイト上のドキュメント全体は「その都度記述される」環境になっていて、掲載される情報やヒントの大半は、IRCチャンネルやメーリングリストから得られたものです。

NF: 私が集めた情報によると、PowerTOPの64ビット版が進行中とのことですが、これまで以上の機能や パッチが期待できるのでしょうか。

AV: PowerTOPは既に64ビット環境で動作しています。ただ、ティックレス機能だけがまだ主要カーネルに組み込まれていません(パッチはLKMLにあります)。本当に省電力の効果を得るには、このティックレス機能が必要です。ソフトウェアの問題はありますが、今でも64ビット環境で省電力機能を動作させることは可能です。

その先には、PowerTOPでまだ実現されていない最大の機能要求として、どのアプリケーションがディスクをビジー状態にしているかを示すという機能が存在します。我々が考えているもう1つの機能強化が、実行中にPowerTOPが「その場で」行う提案の数を増やすことです。おそらく、「この提案を実行するにはキーを押してください」といった機能も実現されるでしょう。

NewsForge.com 原文