Xeon 3085(3.00GHz)とSupermicro X7SBiの組み合わせで、Linuxカーネルのコンパイルを行い消費電力、性能を調べてみました。

評価環境

機器の構成

M/B Supermicro X7SBi
CPU Xeon 3085 (Conroe, 3.00GHz, FSB=1333MHz, L2 Cache=2x2M, DualCore, TDP=65W)
Memory Kingstone KVR667D2E5/2G x 2(DDR2 667MHz ECC 2GB x 2)
HDD Maxtor MaxlineIII 250GB SATAII, 12V 1500mA, 5V 740mA

ソフトウェアの環境

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

$ uname -a
Linux diag 2.6.24.3-net01 #3 SMP Mon Apr 28 15:22:38 JST 2008 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=posi x --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)

 

評価方法

次のような方法で評価を行いました。

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

測定結果

処理時間

次の表は、カーネルのコンパイルにかかった時間と、CPUの使用率を表したものです。CPUの使用率は、「(ユーザー時間+カーネル時間)/実際にかかった時間」を計算したものです。同時に実行するタスク数(-j?の値)が1の場合と2以上の場合で大きく離れています。やはりデュアルコアのCPUなので、同時に2つ以上実行することで全ての処理能力を発揮するこてができるようです。

コマンド 時間 CPU使用率
make -j1(1) 3m27.747s 1.002
make -j1(2) 3m27.752s 1.003
make -j2 1m56.309s 1.838
make -j4 1m49.987s 1.972
make -j8 1m50.963s 1.972
make -j10 1m51.622s 1.960
make -j12 1m51.678s 1.962

消費電力

次のグラフは、カーネルのコンパイルを連続して実行したときの、消費電力を表したものです。並列数は左からそれぞれ[1, 1, 2, 4, 8, 10, 12]です。それぞれのコンパイルの間には 4分間の休憩時間があります。 CPUアイドル時の消費電力は0.91(A)で、コンパイル時のピーク電流はn≧2のとき約1.32(A)であることが分かります。アイドル時とピーク時の差は0.41(A)です。

Image

上のグラフのそれぞれのコンパイル時のグラフを重ねて表したものが、次のグラフです。同時実行なし(-j1)で実行した1回目と2回目は消費電力が低く、それ以外(n≧2)は全て同じような消費電力になることが分かります。

Image

Xeon 3070との比較

以前行ったXeon 3070のテスト結果と比較してみます。 Xeon 3085とXeon 3070とのクロック比は、3.00(GHz)/2.66(GHz)=1.13になっています。

処理速度

まずはmake -j1の場合を比較してみます。それぞれ一回目の実験の値を見ます。 Xeon3085は3分27.75秒、Xeon3070は3分54.50秒で、 Xeon3070を1とした時のXeon3085の処理速度を計算すると、 Xeon3070の実行時間(234.5s)/Xeon3085の実行時間(207.75)=1.13で、ほぼクロック比と等しくなっています。それ以上の場合についても、やや比率が少なくなってはいますが、大体クロック数に比例して処理速度も向上している事が分かります。

コマンド Xeon 3085 Xeon 3070 比率
make -j1 3分27.75 3分54.50 1.13
make -j2 1分56.31 2分17.88 1.08
make -j4 1分49.98 2分03.27 1.12
make -j8 1分50.96 2分03.13 1.11
make -j10 1分51.62 2分03.19 1.10
make -j12 1分51.68 2分03.14 1.10

消費電力

今回の実験ではコンパイル時のピーク電流は約1.32(A)でした。前回の実験では、 3070のピーク電流は約1.31(A)ですので、ほぼ等しいと言えるでしょう。また、アイドル時間の消費電力についても、今回は約0.91(A)、Xeon 3070の数値は約0.92(A)でしたのでこれもほぼ等しいと言えます。Xeon3070もXeon3085も TDP(Thermal Design Power)は同じく65(W)であるので、その点から考えればこの結果に関しては当然であるとも考えられます。

まとめ

消費電流に関しては、クロック周波数が1.13倍になってにも関わらず Xeon 3070とXeon 3085はほぼ等しいという結果でした。

ピーク時の処理速度では、Xeon3085に関してもクロック数に応じた性能が出るという結果となりました。