インターネットデータセンターでラックを借りる場合、たとえば標準で20A-30Aの電源を一系統利用できます。しかしながら、昨今のCPUの高性能化に伴い、サーバが消費する電流もウナギ登りに増え、電源を追加する必要があったり、設備の都合上電源追加が叶わなかったりと悲鳴を上げている管理者の方も多いのではないのでしょうか?昨年のインテル社のCPU、Core 2 Duoの発売以来、高性能で低消費電力なサーバが手に入るようになり、弊社の計測ですとピーク時で1サーバ(シングルCPU)あたり1.5A程度の見積りで、1ラックに20台のサーバを収容する場合にも、30Aの電源一系統で済むようになって来ました。

一方で、同じ世代のコアを使ったCore 2 Quadも発売されており、性能は倍増しますが、消費電力も若干UPするという悩ましい状況にあります。しかも最近では、Core 2 Quadの方が安い場合もある。

今回、評価用サーバが手に入りましたので、クアッドコアプロセッサの消費電力、発熱特性、性能等を調べてみました。

評価機の構成は、弊社の製品515MMT+X3220-2G-1で、Core 2 Quad Q6600と同等の、Xeon 3220プロセッサが一個搭載されています。その他のスペックは以下の通りです。

評価機の構成

 
M/B Supermicro PDSMi+
CPU Xeon 3220 (Kentsfierd, 2.40GHz, FSB=1066MHz, L2 Cache=2x4M, Quad Core, TDP=105W, ....)
Memory Kingstone KVR667D2E5/1G x 2(DDR2 667MHz ECC 1GB x 2)
HDD Maxtor MaxlineIII 250GB SATAII ,12V 1500mA, 5V 740mA

評価方法

  1. サーバをネットワークブートし、ディスクレスLinuxを起動する。
  2. HDDをマウントし、あらかじめ置いてある、linuxカーネルソースを、tmpfs上に展開する。
  3. 展開したカーネルソースディレクトリに移動し、make menuconfigを実行、終了し、.configを作成。このときオプション設定は行わない。
  4. make -j nでカーネルコンパイルを行い、温度、消費電流などのデータを取得する。

ソフトウェア環境

ネットワークブートしたカーネルと、その後、apt-getによりダウンロードしたgccのバージョンは
次の通りです。

$ uname -a
Linux diag 2.6.22.9-net01 #3 SMP Thu Oct 25 17:24:08 JST 2007 i686 GNU/Linux

$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

電流の測定

クランプメーターは横河電機製 CW120
http://www.yokogawa.com/jp-mcc/gmi/clamp-on-powermeters/gmi-cw120-001-jp.htm
と×1倍のACラインセパレータを使いました。
家庭用(商用)の単相交流100Vの電源ケーブルのコンセント部分で、電流を測定しました。
もちろん、測定した消費電流にはCPU以外の部分 も含まれています。

Image

Image 

CW120には周期的に測定し、その結果をコンパクトフラッシュに書き込む機能があり、データはCSV形式で以下のようになっています。

"CW12x"
"FileType",0
"MeasureMode",1
"OUTPUT DATE","OUTPUT TIME","INTEG START DATE","INTEG START TIME","ELAPSED TIME","V1","I1","P","Q","PF","F","Wh(+)","Wh(-)"
2007/10/29,14:57:23,2007/10/29,14:57:23,02:50:47,+0.000E+00,+1.090E+00,+0.000E+00, "----","----","----", +0.00000E+00, +0.00000E+00
2007/10/29,14:57:24,2007/10/29,14:57:23,02:50:48,+0.000E+00,+1.090E+00,+0.000E+00, "----","----","----", +0.00000E+00, +0.00000E+00

7番目に測定値が格納されています。
 

消費電流測定結果

次のグラフには、make -j n(n=1, 1, 2, 4, 8, 10, 12)を休憩をはさみつつ連続して行った際の、電流値の値を示しています。 CPUアイドル時の消費電流が約1.1A、カーネルコンパイル時のピーク電流は、n=4以上で飽和し、約1.8Aであることがわかります。

Image 

クアッドコアCPUですので、n=4以上でようやくCPUを使い切っていると解釈することができます。以下の出力結果は、tcshのtimeコマンドの出力値で、単位が%の部分がCPU使用率を表し、n=4ではじめて、400%近く、すなわち4つのコアを十分に使っていることを裏付けていると言えます。また、n=1の場合にコンパイルに4分20秒程度かかっているのに対して、n=4以上で1分13秒程度で終了している点なども、さすがクアッドコアということで、嬉しい部分でもあります。

n=1  245.799u 15.184s 4:19.12 100.7% 0+0k 0+0io 0pf+0w
n=1  243.767u 15.520s 4:17.38 100.7% 0+0k 0+0io 0pf+0w
n=2  244.303u 15.532s 2:11.50 197.5% 0+0k 0+0io 0pf+0w
n=4  251.383u 17.025s 1:13.31 366.1% 0+0k 0+0io 0pf+0w
n=8  253.831u 17.489s 1:12.16 375.9% 0+0k 0+0io 0pf+0w
n=10 253.763u 17.785s 1:13.06 371.6% 0+0k 0+0io 0pf+0w
n=12 253.815u 17.929s 1:12.26 376.0% 0+0k 0+0io 0pf+0w

CPU温度の測定

ハードウェアのヘルスケア(CPU温度、ファン回転数のモニター)の表示を行なうlm-sensors
を使用してCPU温度を測定します。

このパッケージのDebianへの導入は簡単です。

# apt-get install lm-sensors

# sensors-detectしてモジュールを自動検出します。

#----cut here----
# I2C adapter drivers
i2c-i801
# Chip drivers
w83781d
w83793
lm92
eeprom
w83627hf
#----cut here----

上記の内、515MMT+で必要なのは、i2c-i801 とw83793だけです。二つのモジュールをmodprobeで組み込むと、 sensors コマンドが使用できます。sensors コマンド一般ユーザーでも実行できます。 

 $ sensors
w83793-i2c-0-2f
 ERROR: Can't get adapter or algorithm?!?
VCoreA:    +1.29 V  (min =  +0.92 V, max =  +1.49 V)
VCoreB:    +1.55 V  (min =  +0.92 V, max =  +1.49 V)   ALARM
Vtt:       +1.21 V  (min =  +1.08 V, max =  +1.33 V)
in3:       +0.50 V  (min =  +0.38 V, max =  +0.69 V)
in4:       +1.82 V  (min =  +1.62 V, max =  +1.98 V)
+3.3V:     +3.36 V  (min =  +2.96 V, max =  +3.63 V)
+12V:     +11.90 V  (min = +10.75 V, max = +13.25 V)
+5V:       +5.00 V  (min =  +4.64 V, max =  +5.65 V)
5VSB:      +5.02 V  (min =  +4.64 V, max =  +5.65 V)
VBAT:      +3.20 V  (min =  +2.99 V, max =  +3.66 V)
fan1:     11440 RPM  (min =  712 RPM)
fan2:     13106 RPM  (min =  712 RPM)
fan3:     12272 RPM  (min =  712 RPM)
fan4:        0 RPM  (min =  712 RPM)                   ALARM
fan5:        0 RPM  (min =  712 RPM)                   ALARM
fan6:        0 RPM  (min =  712 RPM)                   ALARM
fan7:        0 RPM  (min =  712 RPM)                   ALARM
fan8:        0 RPM  (min =  712 RPM)                   ALARM
fan9:        0 RPM  (min =  712 RPM)                   ALARM
fan10:       0 RPM  (min =  712 RPM)                   ALARM
CPU1 Temp: +31.2 C  (high = +60.0 C, hyst = +55.0 C)
CPU2 Temp:-106.0 C  (high = +60.0 C, hyst = +55.0 C)
temp3:    -128.0 C  (high = +60.0 C, hyst = +55.0 C)
temp4:    -128.0 C  (high = +60.0 C, hyst = +55.0 C)
temp5:       +35 C  (high =   +80 C, hyst =   +75 C)
temp6:       +33 C  (high =   +50 C, hyst =   +45 C)

$ sensors | grep CPU1 | awk {'print $3'}
+31.2

周囲温度と湿度

室温は25度、湿度は51%でした。
10月下旬です、窓を開けて自然換気しています。環境に優しいオフィスで実験しました。
ひょっとするとデータセンターよりは涼しいかもしれません。  

CPU温度測定結果

次のグラフは、 make -j n(n=1, 1, 2, 4, 8, 10, 12)を実行した際のCPU温度の時間変化を表しています。アイドル時の温度は、約34°Cです。n=4, 2, 1と同時実行ジョブが減るに従いピーク温度が下がっています。それぞれ、46°C、44°C、41°Cである。ピーク温度は、カーネルコンパイル終了時の温度であるため、もしカーネルコンパイルにもっと時間がかかれば、更に温度上昇する可能性があります。(追試が必要ですね。)

Image 

弊社のサーバでは次の写真に見られるようにエアシュラウドを取り付け、CPUヒートシンクに集中的に風が当たるようにしています。CPUの冷却性能向上を目論んでいるのですが、その効果を定量的に調べるために、同じ測定を、エアシュラウドを外した状態でも、行ってみました。

Image

Image

次のグラフは、 エアシュラウド無しでの測定結果です。グラフの形は、エアシュラウド有りの場合と変わりありませんが、アイドル時温度、ピーク温度ともに、だいぶ上昇していることがわかります。アイドル時の温度は、エアシュラウド有りの場合が、34°Cであったのに対し、無しの場合は38°Cと4°Cも高く、ピーク温度はn=4の時で、エアシュラウド有りの46°Cに対し無しで52°Cと5°Cも高いことがわかります。つまり、エアシュラウドの効果が非常に高いと言えます。

Image

シュラウドを装着するとファン3台の風はCPUヒートシンクへ集中的に導かれるのでCPU単体の放熱性能、冷却性能は向上します。しかしながら、メモリーやその他の基板上の部品への風量が少なくなりますので、冷却ファンを追加し補うべきかも知れません。

まとめ

クアッドコアXeon 3220搭載サーバを用い、I/O待ちのほとんど発生しないtmpfs上でカーネルのコンパイルを行ない、消費電流、CPU温度の測定を行いました。makeの多重度 -j4  でCPU使用率 367%(二つの平均値)となりほぼ飽和状態となっています。
-j4以降の場合、コンパイルは1分ほどで終了しています。この間、4つのコアがほぼフル回転している状態になっていることが
CPU使用率、消費電流、発熱からわかりました。

平常時、無負荷時には 1.1A程度、ピーク時には1.8Aの電流が流れることがわかりました。データセンターを利用する場合には、消費電流を事前に見積もっておく必要がありますが、今回の測定結果により、1ラック当たり、何台のサーバが搭載できるのか、その逆に、何本の追加電源系統が必要かなどを見積もることができるでしょう。