サーバのスペックシートに書いてある最大消費電力には安全確保のためのマージンが含まれているため、そこからは実使用時の消費電力が分かりません。そこでここでは測定対象サーバの稼働状況を変化させながら、クランプメータで電流値(A)を測定することにします。
マシンへの負荷をstressコマンドで変化させながら、電流値を計測しました。stressのオプションについては次項を参照してください。Xeon L5410はインテルの省電力機能であるC1E(Enhanced HALT)とEIST(Enhanced Intel SpeedStep Technology)に対応しているので、BIOSで両者を有効にした場合と無効にした場合のそれぞれで計測を行っています。なお、EISTを有効にするにはOS側の対応が必要になります。今回は標準でEIST対応の省電力機能が有効なるCentOS 5.2(x86_64版)を利用しました。
状態(stressのオプション) | 電流(A):C1E/EIST有効 | 電流(A):C1E/EIST無効 |
電源オフ(待機電力) | 0.08 | 0.08 |
アイドル(OS起動状態) | 1.20~1.21 | 1.24~1.25 |
--cpu 4 | 1.65~1.66 | 1.66~1.67 |
--cpu 8 | 2.06~2.08 | 2.09~2.10 |
--cpu 16 | 2.05~2.07 | 2.08~2.09 |
--io 2 | 1.49~1.54 | 1.58~1.59 |
--io 4 | 1.59~1.61 | 1.66~1.67 |
--io 8 | 1.59~1.60 | 1.64~1.65 |
--vm 2 | 1.64~1.66 | 1.71~1.74 |
--vm 4 | 1.74~1.75 | 1.77~1.78 |
--vm 8 | 1.72~1.74 | 1.75~1.77 |
--hdd 1 | 1.27~1.28 | 1.30~1.32 |
--hdd 2 | 1.26~1.30 | 1.30~1.31 |
--hdd 4 | 1.27~1.31 | 1.29~1.32 |
--cpu 8 --io 4 | 1.86~1.98 | 1.89~1.91 |
--cpu 8 --vm 4 | 1.93~1.97 | 2.04~2.07 |
--cpu 8 --hdd 1 | 2.12~2.13 | 2.13~2.15 |
--cpu 4 --io 2 --vm 2 --hdd 1 | 1.98~2.01 | 2.01~2.05 |
--cpu 6 --io 2 --vm 2 --hdd 1 | 2.14~2.15 | 2.17~2.19 |
--cpu 8 --io 2 --vm 2 --hdd 1 | 2.14~2.15 | 2.14~2.17 |
--cpu 8 --io 4 --vm 4 --hdd 1 | 2.09~2.13 | 2.11~2.18 |
--ioと--hddはどちらもディスクに負荷をかけるオプションですが、負荷のかけ方が異なります。--hddはファイルの生成と削除(write()/unlink())を繰り返し実行することでディスクに重点的に負荷をかけます。一方、--ioはメモリとディスクの同期(sync())を繰り返し実行するため、ディスクとメモリの両方に負荷がかかります。
CentOSにはstressのパッケージが用意されていないので、stressの公式サイトからソースのtarballをダウンロードし、「./configure」→「make」→「make install」の手順でインストールしました。
$ wget http://weather.ou.edu/~apw/projects/stress/stress-1.0.0.tar.gz $ tar zxf stress-1.0.0.tar.gz $ cd stress-1.0.0 $ ./configure && make $ su # make install
なお、UbuntuおよびDebianでは公式リポジトリにstressのパッケージが用意されているので、以下のコマンドでインストールできます。
$ sudo apt-get install stress
今回使用した機材はクアッドコアプロセッサ×2の構成で、総コア数は8になります。そのため、CPUの負荷テストでは「--cpu 8」で負荷プロセスを8個生成したときにほぼCPU使用率が100%になり、これ以上プロセス数を増やしても消費電力は増えませんでした。むしろ、プロセス数を増やしすぎると消費電力は下がる傾向が見られます。これはプロセス間の競合を調停するためにCPUリソースが使われて十分な負荷が掛けられなくなるためです。
--ioや--vmといったメモリに負荷をかけるテストでは、負荷プロセス数が4の状態で消費電力が飽和状態になっています。これは現在のコンピュータシステムでは高度に高速化したCPUに対してメモリ性能が追いついておらず、いわゆる“メモリ待ち”の状態になってしまうためです。さらに--hddに負荷をかける--hddのテストでは、負荷プロセス数を1、2、4と変化させてもほとんど消費電力は増えませんでした。これもディスクのアクセス性能がメモリよりも格段に低いため、1個のプロセスだけでシステムを“ディスク待ち”の状態にすることができてしまうためです。
今回の構成では、「--cpu 6 --io 2 --vm 2 --hdd 1」を与えたときに消費電力(電流)が最大となりました(C1E/EIST有効時2.15A、無効時2.19A)。C1E/EIST有効時は「--cpu 8 --io 2 --vm 2 --hdd 1」でも2.15Aが測定されましたが、無効時は2.17Aとピーク状態から少し下がっています。ほとんど測定誤差の範囲ですが、これも負荷プロセス数が多すぎすると負荷プロセスの実行時間が減少することによるものと思われます。
なお、C1E/EISTの有効/無効による違いに注目すると、たしかに有効時の省電力効果は認められるものの、その効果は限定的でした(C1E/EISTの有効/無性による電流値の差は、最も大きかったもので引数「--cpu 8 --vm 4」のときに測定された0.1A=約10W)。そもそもXeon L5410はTDP(熱設計電力)50Wと省電力機能を使わなくても消費電力が低く、しかも省電力モード時のクロックダウン幅が333MHz(2.33GHz→2.00GHz)と小さいため、省電力機能の有効/無効による差が生じにくいようです。もっとも、8コアのサーバであるにも関わらず最大電流値がわずか2.19Aですので、逆に言えば省電力機能を有効にする必要がないほどi120Ra-e1の消費電力は低いと言うこともできるでしょう。
ちなみに、EISTのようなアイドル時にクロックを下げるタイプの省電力機能を有効にした場合、突発的な負荷の上昇に対するレスポンスが若干低下すると言われています(低クロックから高クロックへの切り替え時にタイムラグが発生するため)。CentOSのように標準で省電力機能が有効となるディストリビューションならあえて無効にする必要はないと思いますが、別途設定が必要となるディストリビューションの場合は設定の手間とパフォーマンスのバランスを考慮して省電力機能を有効/無効のどちらに設定するか適宜判断してください。
なお、消費電力は負荷に応じて常に一定というわけではなく、気温の変化によっても変動し、気温が高いほど効率が悪く(消費電力が高く)なります。今回の測定環境は室温27℃のオフィス空間なので、同じ構成のマシンをデータセンターなどのサーバルールに設置した場合は消費電力が下がるはずです。そのため、このページの情報はi120Ra-e1の消費電力の目安としてお受け止めください。