|
今回は1台分の1U筐体に、二台のサーバーが入っている、という
特殊なサーバーについて性能や消費電流の計測をしてみました。
搭載されているCPUは、片方がXeon X3360(クアッドコア)、
もう片方がPentium Dual-Core E5200(デュアルコア)です。
評価環境
機器の構成
筐体の中にはいっている、二つのユニットをそれぞれ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のみ、共通部分のみ)について推定消費電力を算出します。
それぞれの状態に関しての計測方法は今までと同じように、以下の手順で行いました。
- サーバーをネットワークブートし、ディスクレスで起動
- wgetでlinuxのカーネルソース(linux-2.6.20)をダウンロードする
- linuxのカーネルソースをtmpfs上に展開する
- 展開したカーネルソースディレクトリに移動し、make menuconfigを実行、なにもせずに終了し.configを作成
- 「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を計測した結果(http://www.clustcom.com/content/view/139/32/)と比較してみます。
X3350の結果と比較すると、今回の方がやや早い、という結果が出ています。
コンパイル時間の比(X3350÷今回の数値)は、例えば同時実行数が12のとき1.11、クロック周波数の比は1.08なのでほぼ一緒です。
この差は、クロック周波数の差から発生していると考えられます。
つまり、通常のサーバーと、今回のサーバーの片方では、性能的な差はあまりないと考えても良さそうです。
消費電流
カーネルコンパイル中の消費電流のグラフを示します。
まずはA側のみを動かしている状態で計測したグラフです。
CPUアイドル時の消費電流は1.13(A)、ピーク時は1.65(A)です。
次に、B側のみを動かしている状態で計測したグラフです。
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台別々にサーバーを用意するより、大幅に省電力ということになります。
|