Xenはバージョン3.0からSMP(Symmetric Multi Processing,対称型マルチプロセッシング)に対応し,ゲストOSに複数のCPUを割り当てることができるようになった。そこで,ここでは一つのゲストOSに割り当てるCPUの数を変化させて,性能を測定する。検証用環境としては,CentOS 5.1を利用する。
複数のCPUを割り当てて性能試験を進める場合,当然,複数のCPUに対して負荷をかける必要がある。せっかくCPUが複数個あっても,ベンチマーク・ソフトウエア自体がシングル・タスクで動作し,さらにCPUを1個しか利用しないものであれば,性能の向上は期待できない。
さらにCPUが2個になっても,一般に性能は2倍にはならない。どの程度向上するのかは,実行したソフトウエアの内部構造にも依存する。
以上から,SMP環境でのベンチマークはシングルコア上でのテストに比べて評価が難しいとされている。
そこでここでは複数のCPUに対して負荷をかけるベンチマークとして,「LINPACK」というツールを使用した。
LINPACKベンチマークは,世界中のスーパーコンピュータの性能比較を試みているTOP500*1といわれるプロジェクトで利用されている。主に浮動小数点演算性能を測定するベンチマーク・テストである。このベンチマーク・テストは,大規模なシステム上で使用できるだけでなく,1台のパソコン上でも動作する。
通常LINPACKベンチマークを実行する場合は,各種ライブラリを集めた後,コンパイルを行い,並列計算プログラムとして実行する。その際,システム全体のリソースを考慮した上で,システム全体の性能限界値を探るためにパラメータ・チューニングなどを施す。
しかし,ここではSMPのテストとして,単純に1ゲストOS上でのCPU数を変化させて,違いを見ることが目的のため、チューニングは施さない。単体サーバーでLINPACKを実行するためのツールとして,米Intel社のWebサイト上で公開されているIntel Optimized(SMP)LINPACK Benchmark 10.0を使用する。
同サイトのページ下部にある「Download now」をクリックし,ライセンスに同意(Accept)すればダウンロード・サイトが表示される。もちろんLinux版を使用する*2。
LINPACKの実行手順
まず,ダウンロードしたLINPACKのファイルを展開しよう。
# tar xvzf l_lpk_p_10.0.004.tgz
# cd linpack_10.0/benchmarks/linpack/
このディレクトリにある「runme_」で始まるスクリプトを実行すると「lininput_」で始まるインプット・ファイルが読み込まれ,ベンチマークが始まる*3。
実行する際のスレッド数はデフォルト(初期設定)でCPUのコア数と同じになる。このスクリプトを使用することで,問題サイズ(problem sizes)を変化させながら順にベンチマークを実行可能だ。
ただし,注意点として,システムに割り当てられているメモリーの量に合わせて問題サイズの最大値を変更しなければならないことがある。問題サイズの値の2乗×8が,システムに割り当てられているメモリーよりも小さくなるように設定する。
この検証では64ビットの環境で,割り当てるメモリー量は4Gバイト(40億バイト)としたので,実行する際のパラメータ・ファイルlininput_xeon64を図1のように設定した*4。
# cat lininput_xeon64
Sample Intel(R) LINPACK data file (lininput_domU4c4g)
Intel(R) LINPACK data
6 # number of tests
1000 2000 5000 10000 15000 22000 # problem sizes
1000 2000 5008 10000 15000 22008 # leading dimensions
2 2 2 2 2 2 # times to run a test
4 4 4 4 4 4 # alignment values (in KBytes)