Xeon X3350(2.66GHz、クアッドコア)について、Supermicro X7SBiと組み合わせ、 Linuxカーネルのコンパイルを行い消費電力、性能を調べてみました。 さらに、以前のXeon 3070(2.66GHz、デュアルコア)の評価をしたときのものと比較もしてみました。

評価環境

機器の構成

M/B Supermicro X7SBi
CPU Xeon X3350 (2.66GHz, FSB=1333MHz, L2 Cache=12M, QuadCore, TDP=95W)
Memory (2.5GB)
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の使用率は、「(ユーザー時間+カーネル時間)/実際にかかった時間」を計算したものです。 同時実行数(make -jnのnの値)が1〜3までは、数字が上がる度に明らかに処理速度が向上していますが、 4以上になると処理速度も頭打ちになっています。 これは使用しているCPUのコア数が4つなので、 同時に4つ以上同時に実行したときにコア4つ分の能力を発揮することが出来たのだと考えられます。

コマンド 時間 CPU使用率
make -j1 3m47.742s 1.007
make -j2 1m56.056s 1.976
make -j3 1m20.660s 2.850
make -j4 1m06.053s 3.522
make -j5 1m03.002s 3.720
make -j6 1m03.836s 3.684
make -j8 1m03.047s 3.752
make -j12 1m03.753s 3.732

消費電力

次のグラフは、make -j1〜make -j12の消費電流量グラフを重ねたものです。

CPUのアイドル時の消費電力値は約0.96(A)です。 コンパイル時のピーク電流は、n≧4のとき、約1.47(A)です。 このときのアイドル時とピーク時の差は0.51(A)です。 同時実行数が1〜3までは数字に応じて消費電流量が増加していますが、 4以上になるとほとんど同じ消費電流になっています。 これは使用しているコア数の分だけ消費電流量が上がっていると考えられます。

Image

Xeon 3070

以前のXeon 3070のテスト結果と比較してみます。 Xeon X3350はXeon 3070と比べて、クロック数は同一ですがコア数が2つから4つに増えています。 またL2キャッシュも4MBから12MBと3倍に増えています。

処理速度

下の表はX3350と、3070でのカーネルコンパイルにかかった時間と、 二つのCPUの時間の比率([Xeon X3350]÷[Xeon 3070])です。

同時実行数が2までの場合は比率がおよそ1になっていて、 実行時間に大きな差がないことが分かります。 それ以上(4以上)の場合はX3350が3070の2倍近くの性能を出しています。 コア数の差がそのまま性能差に出ているようです。

コマンド Xeon X3350 Xeon 3070 比率
make -j1 3m47.742s 3m54.50s 1.03
make -j2 1m56.056s 2m17.88s 1.19
make -j4 1m06.053s 2m03.27s 1.87
make -j8 1m03.047s 2m03.13s 1.95
make -j12 1m03.753s 2m03.14s 1.93

消費電流

Xeon X3350のコンパイル時のピーク電流は約1.47(A)でした。 Xeon 3070のピーク電流は1.31(A)ですので差は約0.16(A)ということになります。

アイドル時の電流はXeon X3350が0.96(A)、Xeon 3070が0.92(A)ですので差は約0.04(A)です。 アイドル時ではあまり差がありませんが、ピーク時の電流でやや差が出ています。

まとめ

処理速度に関しては、同時実行数が十分に多い場合であればコア数に応じた性能が出る という事が分かりました。

消費電流は2コアのCPUと比較して、ピーク時にはやや差が出るようです。