今日のシステム管理者にとって消費電力は、サーバを選定するうえでの重大な条件の1つになっています。ところが、スペックシートに書いてある最大消費電力には安全確保のためのマージンが含まれているため、そこからは実使用時の消費電力は分かりません。そこでここでは測定対象サーバの稼働状況を変化させながら、クランプメータで電流値(A)を測定することにします。
今回はマシンへの負荷をstressコマンドで変化させながら、電流値を計測しました。stressのオプションについては次項を参照してください。Core 2 Duoはインテルの省電力機能であるC1E(Enhanced HALT)とEIST(Enhanced Intel SpeedStep Technology)に対応しているので、BIOSで両者を有効にした場合と無効にした場合のそれぞれで計測を行っています。
状態(stressのオプション) | 電流(A):C1E/EIST有効 | 電流(A):C1E/EIST無効 |
電源オフ(待機電力) | 0.08 | 0.08 |
アイドル(OS起動状態) | 0.75 | 0.86~0.90 |
--cpu 1 | 0.78~0.79 | 0.98~1.00 |
--cpu 2 | 0.80~0.82 | 1.10~1.12 |
--cpu 4 | 0.80~0.83 | 1.09~1.11 |
--io 1 | 0.78~0.79 | 1.03~1.04 |
--io 2 | 0.80~0.82 | 1.09~1.11 |
--io 4 | 0.81~0.82 | 1.11~1.12 |
--vm 1 | 0.81~0.83 | 1.10~1.12 |
--vm 2 | 0.88~0.90 | 1.19~1.21 |
--vm 4 | 0.88~0.90 | 1.18~1.19 |
--hdd 1 | 0.78~0.80 | 0.89~0.92 |
--hdd 2 | 0.78~0.80 | 0.89~0.93 |
--hdd 4 | 0.77~0.81 | 0.89~0.92 |
--cpu 2 --io 2 | 0.81~0.84 | 1.10~1.12 |
--cpu 2 --vm 2 | 0.86~0.88 | 1.15~1.17 |
--cpu 2 --hdd 2 | 0.83~0.85 | 1.11~1.13 |
--cpu 2 --vm 2 --io 2 | 0.79~0.85 | 1.10~1.16 |
--cpu 2 --vm 2 --hdd 2 | 0.87~0.90 | 1.13~1.18 |
--cpu 2 --vm 2 --io 2 --hdd 2 | 0.81~0.89 | 1.13~1.19 |
--ioと--hddはどちらもディスクに負荷をかけるオプションですが、負荷のかけ方が異なります。--hddはファイルの生成と削除(write()/unlink())を繰り返し実行することでディスクに重点的に負荷をかけます。一方、--ioはメモリとディスクの同期(sync())を繰り返し実行するため、ディスクとメモリの両方に負荷がかかります。
UbuntuおよびDebianでは公式リポジトリにstressのパッケージが用意されているので、以下のコマンドでインストールできます。
$ sudo apt-get install stressパッケージが用意されていないディストリビューションの場合は、公式サイトからソースのtarballをダウンロードし、「./configure」→「make」→「make install」の手順でインストールしてください。
Core 2 Duoはデュアルコアプロセッサですので、「--cpu 2」を与えたときにCPU使用率が100%になります。「--cpu 4」として2倍のプロセスを生成しても、CPU使用率は100%以上にはならないので、電流値はほとんど変わりません。また、同時に処理できるプロセスが2つであるためか、--ioと--vmに関しても引数に2を与えた状態で負荷が飽和してしまうようです。--hddにいたっては引数が1の状態で飽和しています。
複数のオプションを組み合わせた場合、単体のオプションのときよりも電流が下がるケースがあることも興味深いポイントです(たとえば「--vm 2」よりも「--cpu 2 --vm 2」のほうが低い)。これはプロセスが競合することで、CPUやメモリなどに十分な負荷がかけられなくなるためと思われます。
結果を見ると、負荷状況に応じた変動よりもC1EとEISTの有効/無効による差が非常に大きいことに驚かされます。稼働状態での電流量は、C1E/EIST有効の場合で0.75~0.90A、無効の場合で0.86~1.21Aという値になっており、アイドル時で0.11A、高負荷時で0.31Aの差が生じました。C1EとEISTはどちらも低負荷時にCPUのクロック周波数や動作電圧を下げて消費電力を抑える機能なのですが、面白いことに今回の計測では高負荷時のほうが効果が高いという結果になっています。
以上の結果をふまえると、C1EとEISTを有効にすれば、電源容量40Aのラックでも単純計算で44台(i110Rc-1hは奥行き1/2のハーフサーバなので40Uのラックに40台以上設置できます)、20%のマージンを取ったとしても35台までのi110Rc-1hが収容できることになります。電源容量30A×2系統のラックであれば52台です(マージン20%の場合。単純計算なら66台)。一方、C1E/EIST無効の場合は40Aのラックで26台、30A×2のラックで38台までとなります(いずれもマージン20%の場合。単純計算の場合はそれぞれ33台と48台)。
ラック電源容量 | 設置可能台数(C1E/EIST有効) | 設置可能台数(C1E/EIST無効) |
40A | 35 | 26 |
30A×2 | 52 | 38 |
40A×2 | 70 | 52 |
さて、この表からも明らかなようにi110Rc-1hではC1EとEISTを有効にすることで、設置コストを大幅に削減することが可能です。ただし、C1EはBIOSの設定だけで機能しますが、EISTはOS側の対応が必要となり、古いLinuxカーネルの場合は障害が発生する可能性もありえます(今回使用したUbuntu 7.10のカーネルバージョンは2.6.22です)。そのためEISTを有効にするときは運用前に十分な負荷テストを実施し、問題がないことを確認しておくことをお勧めします。
なお、消費電力は負荷に応じて常に一定というわけではなく、気温の変化によっても変動します(気温が高いほど効率が悪く、つまり消費電力が高くなります)。そのため、このページの情報はi110Rc-1hの消費電力の目安としてお受け止めください。