インテルがLinux向けにオープンソースで提供

電力効率の悪いプログラムをリストアップする「PowerTOP」

2007/07/26

 Linuxで各プロセスが消費しているCPU時間や占有率を知るには、topコマンドを使う。しかし、今やより深刻な問題はパフォーマンスよりも消費電力――。インテルがそう考えたのかどうかは分からないが、同社が最近オープンソースで公開しはじめた「PowerTOP」は、稼働中のプロセスのうち、電力消費に悪影響を与えているものを探し出すのに最適のツールだ。ノートPCでLinuxを使っているなら、バッテリライフを伸ばせるかもしれない。

 PowerTOPの動作はtopコマンドに似ている。違うのは各プロセスが、どれだけ不必要に電力消費を押し上げているかを数字で示すことができる点だ。インテルのCPUはフル稼働状態の「C0」を基準にして、何も処理を行っていないアイドル状態では「C1」、「C2」、「C3」と数字が増えるに従って自ら「ステート」を変更して“深い眠り”に落ちていく。数字が増えるに従ってCPUに供給するクロックや電圧を段階的に下げ、消費電力を抑える。数字が大きいほどフルパワー状態の「C0」に復帰するに時間がかかるため、CPUは、稼働状況に併せてC1〜C4の間でバランスを取る。

 問題はアイドル状態であるにもかかわらず、やたらと割り込みを発生させるようなプロセスだ。インテルの解説によれば、十分な省電力の効果が得られるには、CPUは95%の時間をC4ステートとして過ごすべきで、その場合には各アイドル状態は50ミリ秒以上続くという。しかし、使っていない無線LANのドライバが発生させる割り込みがあったり、できの良くないソフトウェアなどがあると、たちまちCPUはほとんどの時間をC2ステートで過ごすような状態となる。

powertop.png PowerTOPの出力例。C2ステートの比率が高く、電力効率の悪い状態。ただし、これは画面キャプチャのためにマウスを動かし、その結果、関連ドライバの「i8042」がアクティブに動いた結果だという

 PowerTOPは、CPUを眠りからさますような処理が1秒間に何度発生するかを「Wakeups Per Second」(WPS)という指標で表示し、各プロセスがWPSに与えている影響をパーセンテージで表示する。上の画面例ではWPSは193.6という値になっている。GNOMEデスクトップを使っている状態でもWPSは3程度に抑えられるため、これはきわめて高い(電力効率の悪い)例だという。C4ステートが20ミリ秒を占めるように改善すれば、ノートPCのバッテリライフは約1時間伸びるという。

 PowerTOPはインテルのモバイル系CPUと、バージョン2.6.21以降のLinuxカーネルで動作させたときに最も意味があるという。これはバージョン2.6.21から、1000Hzおきに発生するタイマーイベントを無効化するオプション(Tickless Idel)がカーネルに入ったためで、Linux自体がより省電力設計になっているからだ。

関連リンク

(@IT 西村賢)

情報をお寄せください:



@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)