サーバの消費電力削減に対するメモ

Linuxデスクトップやサーバにおいて消費電力を減らし、省エネを行い、ラン ニングコストを下げる可能性について考えてみる。忘れないうちに書き留めて おく。 地球温暖化対策対応サーバシステム構築まではいうのは大げさだが、消費電力 削減によるランニンコストの低減ぐらいまではいえるだろう。

CPUの動的な電力消費抑制技術

近年、CPU性能の向上によりデスクトップやサーバで使用されるCPUの消費電力 は増加の一途をたどっている。モバイルコンピューティングおいては処理性能 と長時間稼働のニーズから動的にCPUのクロック周波数とコア電圧を制御する 技術を採り入れている。 このモバイルコンピューティングで使われている動的な電力消費の制御技術を、 近年、デスクトップやサーバ向けCPUにも採り入れられてきた。 AMDのサーバ向けCPU Opteron プロセッサでは 消費電力最適化機能AMD PowerNow! や、デスクトップ向けAMD Athlon 64プロセッサでは Cool'n'Quietが用意されている。 (参考 AMDサイト ) Intel ではHT テクノロジ インテル Pentium 4 プロセッサ 600番台 に拡張版 Intel SpeedStepが組み込まれている。 (参考 Intelサイト)

通常、デスクトップなどのプロセッサは数値演算を無限に繰り返すような使わ れ方ではなく、ユーザからのインタラクションを待つような使われ方である。 ユーザによるインタラクティブな処理要求に対する良好なスループットを確保 するための高い能力をCPUに求める一方で、ユーザの要求のない時間はアイド ルとして待つ。そしてアイドル時間は、CPUを使う時間よりもはるかに多い。

より高い処理能力をCPUに求めると、クロック数が速く、コア電圧が大きいも のが必要となる。つまり、それだけ消費電力が大きくなる。クロック数も電圧 も変わらなければ、アイドル時の消費電力も当然、そのクロック数の上昇やコ ア電圧に比例し大きくなる。短くいうと「電気を食う速いCPUはアイドル時で もそれなりに電気を食う」ということになる。消費電力が大きくなれば、総発 熱量も増えるので、結果として爆音を轟かす空冷ファンを使うか、あるいは静 かではあるが高価で複雑な機構を持つ水冷クーラなどを使うことになる。

総発熱量を下げるには、使っていないアイドル時は、クロック数やコア電圧を 下げて、処理の重さに比例して動的にクロック数やコア電圧をあげてやれば良 い。この考え方がデスクトップ・サーバ系のCPUに動的な電力消費制御技術が 採り入れられる背景にある。

なお、最近のデスクトップ・サーバ系のCPUでは発熱量が、排熱の限界を越え た場合(つまり熱くなりすぎた場合)、自動的にクロック数が落され発熱によ るCPUの損傷を防ぐ機能が入っている。モバイル系CPUのようにバッテリー時間 を伸ばすためにこまめな変化をさせるというよりは、CPUのサーマルコントロー ル機能の応用と考えれば分かりやすい。また実際にもCPUは3種類程度 (CPUの 100%、80%、50%のクロック)の荒い切替えしか用意していない。
サーバも同様である。タスクの発生は基本的には待ち行列として考えなければ ならない。処理のピーク時でも良好なスループットを確保しようとすると、 「暇な時間」における電力消費も大きくなる。あるいは人間の活動時間に連動 している場合、夜間などは「暇な時間」となる。学校の授業などでも授業のな い時間帯では同様に「暇な時間」が発生する。このようにサーバに対してでも 動的な電力消費制御技術が有効であるケースが多く考えられる。

どれくらいの削減が可能か

筆者の環境ではAMD Athlon 64 (ADA3000AXBOX)を使っているが、デフォルトの クロックは2GHz、最小のクロックは1GHzである。ワットチェッカーを使ってシ ステム全体の消費電力計測した所、2GHz時(デフォルト)で90W、1GHz時で65Wで あった。低クロックでは約28%違う。筆者のデスクトップマシンのロードアベ レージが0.1 以上になることは滅多にない。筆者のデスクトップの場合(たぶ ん多くのユーザと変わらない使い方であろう)、25% 以上の消費電力カットが 可能であると考えられる。

もちろん各サイトの利用形態により左右されるので、この数字は一定ではない が、条件がよければ4分の1程度の消費電力削減を期待出来る。

2007年8月の記録

AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (65W)を使いパソコンを組 み上げ、ワットチェッカーで実測した。結果は以下の通り。
# modprobe powernow-k8
# modprobe cpufreq_userspace
# echo 'userspace' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
....
CPU Freq Idle Task 1 Task 2
2.4G103127154
2.2G100122143
2.0G100118141
1.8G99116136
1.0G96106116
単位はワット

考察

このマシンは最小電力消費 96 Wであり、最大電力消費 154 Wである。

CPU稼働と非稼働時の差は大きい。2.4GHz 時で差が51Wである。

アイドル状態では 2.4GHzと1.0GHzで7W程度の差である。電気を使わない ようにアイドル時にクロックダウンしても思ったほどは差がないようだ。アイ ドル時、クロックを変化させなくてもトータルの電力消費量は大きく違うよう なことはないと判断するのか、一方でチリもつもれば山とみなすのかの判断は みなさんにおまかせする。

あと154Wで実行中に無理矢理116Wに落とすと38Wの差がでる。この差は大き い。こう考えると、Cool'n'Quietは実はサーマルコントロールのために作られ ているのではないかという考えがしてくる。

ちなみにXenのカーネルはpowernow-k8が含まれておらずコントロールはで きない。また、XenのDomain-Uが1つ動いていた場合、そのDomain-U上でプロセ スがほぼアイドル状態であっても、マシンの消費電力は127Wであった。これは コア1つ分がフルに動作している状況と同じである。もちろんDom0もDomUもロー ドアベレージはほぼ0.0である。このマシンはハードディスク4つの構成である が、すべてのハードディスクを動かし、かつ、CPUをフルに使うように2つのプ ロセスを走らせた状態で消費電力をはかってみると171Wであった。これは最小 電力の約1.8倍である。


目次へ

すずきひろのぶ Hironobu SUZUKI < hironobu -at- h2np -dot- net >

$Id: powerctl.html,v 1.4 2007/08/15 15:49:18 hironobu Exp hironobu $