(CPUの処理性能と消費電流のまとめの記事はこちらに移りました。)

今回は1台分の1U筐体に、二台のサーバーが入っている、という 特殊なサーバーについて性能や消費電流の計測をしてみました。 搭載されているCPUは、片方がXeon X3360(クアッドコア)、 もう片方がPentium Dual-Core E5200(デュアルコア)です。

Image

評価環境

機器の構成

筐体の中にはいっている、二つのユニットをそれぞれAとBと呼ぶことにします。

CPU (A)Xeon CPU X3360 @ 2.83GHz、クアッドコア
(B)Pentium Dual-Core CPU E5200 @ 2.50GHz、デュアルコア
メモリ (A、Bそれぞれに)Kingston 2GB×4 計8GB

ソフトウェア

実験環境のLinuxカーネルのバージョンと、gccのバージョンは以下のとおりです。

$ 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-s
uffix=-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)
$ uname -a
Linux diag 2.6.26-net01edac #9 SMP Tue Sep 30 20:28:16 JST 2008 i686 GNU/Linux

測定方法

このマシンはファンや電源など、一部の部品をAとBの二つのユニットで共有しています。 そこで、その「共有部分」は、少なくとも片方が動いていれば動作し、 さらにその消費電力は常に変わらないと仮定し、

  • Aだけを動かした状態(A+共有部分)
  • Bだけを動かした状態(B+共有部分)
  • AとBの両方を動かした状態(A+B+共有部分)

の三つの動作状態関して消費電力を測定し、それぞれの部分(Aのみ、Bのみ、共通部分のみ)について推定消費電力を算出します。 それぞれの状態に関しての計測方法は今までと同じように、以下の手順で行いました。

  1. サーバーをネットワークブートし、ディスクレスで起動
  2. wgetでlinuxのカーネルソース(linux-2.6.20)をダウンロードする
  3. linuxのカーネルソースをtmpfs上に展開する
  4. 展開したカーネルソースディレクトリに移動し、make menuconfigを実行、なにもせずに終了し.configを作成
  5. 「make -jn」で、nの数値(同時に実行できるジョブ数)を変えながら、コンパイルを実行させたときの消費電力や時間などを測定する

測定結果

処理時間

同時実行数 A(Xeon X3360) B(Pentium Dual-Core E5200)
時間 CPU使用率 時間 CPU使用率
-j1 3m32.239s 1.008 4m8.054s 1.005
-j2 1m47.542s 1.973 2m18.505s 1.866
-j3 1m14.751s 2.834 2m12.735s 1.960
-j4 1m1.502s 3.487 2m12.729s 1.967
-j6 0m58.487s 3.695 2m13.534s 1.961
-j8 0m57.941s 3.750 2m13.475s 1.969
-j10 0m58.134s 3.753 2m13.602s 1.968
-j12 0m57.527s 3.802 2m13.636s 1.969

上の表は、カーネルのコンパイルにかかった時間と、処理時間の表です。 CPUの使用率は、「(ユーザー時間+カーネル時間)/実際にかかった時間」を計算したものです。 以前の評価結果と同様に、CPUのコア数(Aの方は4コア、Bのほうは2コア)と同数以上の同時実行数で 最大の性能が出ています。

A側に関して、以前Xeon X3350を計測した結果(Xeon X3350の記事)と比較してみます。 X3350の結果と比較すると、今回の方がやや早い、という結果が出ています。 コンパイル時間の比(X3350÷今回の数値)は、例えば同時実行数が12のとき1.11、クロック周波数の比は1.08なのでほぼ一緒です。 この差は、クロック周波数の差から発生していると考えられます。 つまり、通常のサーバーと、今回のサーバーの片方では、性能的な差はあまりないと考えても良さそうです。

消費電流

カーネルコンパイル中の消費電流のグラフを示します。

まずはA側のみを動かしている状態で計測したグラフです。 Image CPUアイドル時の消費電流は1.13(A)、ピーク時は1.65(A)です。

次に、B側のみを動かしている状態で計測したグラフです。 Image CPUアイドル時の消費電流は1.03(A)、ピーク時は1.24(A)です。

最後に、A、Bの両方同時に動かして、両方とも何もしていない時のアイドル時電流と、 両方同時に、実行数12でカーネルコンパイルしているときの消費電流を調べました。

結果は、アイドル時が1.44(A)、ピーク時(コンパイル時)が2.21(A)。

それぞれの部分の消費電流

上記の結果から、それぞれの部分(Aのみ、Bのみ、共有部分のみ)の消費電流を計算してみました。
(単位はすべてアンペア)

部分 アイドル時 ピーク時
Aのみ 0.41 0.97
Bのみ 0.31 0.56
共通部分のみ 0.72 0.68

これを見ると、共通部分の消費電流は、アイドル時でもピーク時でもおよそ0.7(A)で、比較的割合が大きいことが分かります。

まとめ

今回のサーバーは、1Uで2台分使うことが出来ます。 速度を比較してみると、計算性能の面では、通常の1Uと大きな差はないという事が分かります。 しかし、消費電流が大きな部分が、共有部分になっているので、 2台別々にサーバーを用意するより、大幅に省電力ということになります。