Supermicro X7DVLiに、Intel Xeon L5420(2.5GHz Quad Core)を二つ乗せたマシンでLinuxカーネルのコンパイルを行い、消費電力と性能を調べてみました。
評価環境
機器の構成
CPU | Intel Xeon L5420 × 2 |
M/B | X7DVLi |
MEM | DDR2 667 FBDIMM 4GB × 4 |
HDD | Barracuda ES2 500GB × 2 |
ソフトウェアの環境
実験環境のLinuxカーネルのバージョンと、gccのバージョンは以下のとおりです。
# uname -a Linux lenny64 2.6.30-64net01 #7 SMP Sat Jul 4 04:30:47 JST 2009 x86_64 GNU/Linux
# gcc -v Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.2-1.1' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages= c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-cld --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.3.2 (Debian 4.3.2-1.1)
評価方法
- サーバーをネットワークブートし、ディスクレスで起動
- wgetでlinuxのカーネルソース(linux-2.6.20)をダウンロードする
- linuxのカーネルソースをtmpfs上に展開する
- 展開したカーネルソースディレクトリに移動し、make menuconfigを実行、なにもせずに終了し.configを作成
- 「make -jn」で、nの数値(同時に実行できるジョブ数)を変えながら、コンパイルを実行させたときの消費電力や時間などを測定する
測定結果
処理時間
次の表は、カーネルのコンパイルにかかった時間と、CPUの使用率を表したものです。CPUの使用率は、 「(ユーザー時間+カーネル時間)/実際にかかった時間」を計算したものです。
コマンド | 時間 | CPU使用率 |
---|---|---|
24 | 0m37.706s | 6.831 |
16 | 0m36.235s | 7.030 |
12 | 0m37.099s | 6.794 |
8 | 0m41.127s | 6.025 |
7 | 0m42.059s | 5.871 |
6 | 0m45.220s | 5.415 |
5 | 0m51.769s | 4.678 |
4 | 1m1.519s | 3.880 |
3 | 1m19.786s | 2.963 |
2 | 1m56.933s | 2.009 |
1 | 3m48.984s | 1.019 |
クアッドコア×2なので、同時実行数が8以上の時に効率が最大になると考えられます。 結果を見ても、同時実行数8までは性能が上昇していますが、それ以降はほとんど頭打ちになっています。
消費電力
以下のグラフは、カーネルコンパイル中の消費電力を示したものです。
CPUアイドル時の消費電流は1.60(A)、ピーク時は2.33(A)でした。
他の構成との比較
Xeon X3330やXeon X3350と同程度のCPUを2つ使用しているので、当然ではありますが そのデータと比較すると、並列度を十分に高くしたときの処理速度は二倍近くまで向上します。 消費電力も、CPUの使用率に応じて増加することになります。