先週、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ワット節約されることになる。
