シングルスレッド評価(姫野ベンチ)

最近のプロセッサはマルチコア技術により、マルチスレッド(並列処理)にて効果的な計算が可能になってきました。
では、シングルスレッド(逐次処理)ではどうでしょうか?
シングルスレッドで大量のメモリを消費するアプリケーションでは、ホストあたりに12コアも搭載されていても、実際に使用するコアは数個といったことも考えられます。
そこで、シングルスレッドの性能を比較することにしました。

Compiler: gcc 4.1.2
Benchmark: himenoBMTxp
Size: L

[TABLE=8]

マルチスレッドでは、Opteron 6174が圧倒的に優位であったことを考えると、CPUにも得意・不得意があり、使用するアプリケーションによりCPU選択することが重要…と今更ながら再認識しました。。。

InfinibandによるiSCSIの書込み速度

Infiniband SDR HCA
■テスト環境
NFSサーバおよびNFSクライアント
MB: Supermicro X8DTi
Chipset: INTEL 5520
CPU: Xeon L5530 x2
MEM: 24GB (4GB DDR3-1333 Reg x 6)

インターコネクト
Infiniband SDR (10GBase): Mellanox MHES18-XTC
(IPoIBにてHCAポートにIPアドレスを設定)

OS: CentOS 5.5 x86_64
ホストスタック: CentOS 5.5 標準 OFED
(CentOS標準ホストスタックでは、IPoIBのMTU 1500がDefault値となっている。これをMTU 65520に設定変更をする。)

■環境設定
iSCSI Target
kernelパラメータ ramdisk_size=20971520 で起動し、20GBのramdiskをTargetとする。

iSCSI Initiator
kernelパラメータ mem=1024m で起動し、OS上のメモリ容量を1GBとする。 (クライアント側のpagecache効果を少なくするため)
iSCSI Targetデバイスのファイルシステムをext3にし/mntにマウントする。

■テスト方法
200MBファイルを連続50回書出しをするスクリプトを用意する。

#!/bin/sh
LOOP=50
DIR=/mnt

COUNT=0
while [ $COUNT -lt $LOOP ]
do
dd if=/dev/zero of=$DIR/$COUNT bs=32768 count=6400
let COUNT=COUNT+1
done

このスクリプトをtimeコマンドの引数として実行しreal値から速度を算出する。

■事前テスト
iSCSI Targetローカルでramdiskのファイルシステムをext3にして書込み速度を計測しておく。
計測方法は同じスクリプトを使う。
[TABLE=3]

ディスク側の律速がこの値まではないことを前提とする。

■結果
[TABLE=7]

■評価
ネットワーク性能測定ツール iperf では、SDRで7.7Gbps程度となっている。
Infinibandを利用したNFSの書込み速度でもSDRで275MB/sであったことも考えると、この環境ではIPでのデータ転送の律速がこのあたりにあるのかもしれない。

iSCSIストレージは、仮想化分野の発展とともに注目度が高まってきています。
高速なネットワークストレージとしてFC-SANは実績も多く有効な手段です。しかし多大なコストが必要とされることが多く導入が困難な場合も多いでしょう。
そこでInfinibandを利用したIP-SANです。高速なネットワークストレージでもありコスト面でも大きく有利と思います。
Infinibandも上位機種なHCAやSwitchは高額ですが、10Gbps SDR Single port HCAであれば導入しやすい価格です。
また、Switchに関しても10Gbps SDR 8portであればこれも導入しやすい価格です。

Xeon X5650 + Intel 5520 + DDR3-1333 ECC Reg 性能評価(姫野ベンチ)

MB: Supermicro X8DTi
Chipset: Intel 5520
CPU: Xeon X5650
MEM: 6GB (DDR3-1333 1GB ECC Reg x 6)

MPI: openMPI
Compiler: gcc 3.4.6
Benchmark: himenoBMTxp
Size: L

2CPU 12core: 12725MFLOPS

また、HTを含めた分割計算も行ってみた。

2CPU 8node: 12804MFLOPS
2CPU 12node: 12725MFLOPS
2CPU 16node: 11066MFLOPS (HT含む)
2CPU 24node: 7543MFLOPS (HT含む)

■評価
前回のHT評価
では、HTを使っても落ち込みが少なかったが、今回はN=24にて大きく落ち込みが確認された。
トリプルチャンネルメモリの帯域不足が大きな原因と思われる。
AMD Opteron 6100シリーズは、クアッドチャンネルメモリとなるので、N=24での比較をしてみたい。

また、メモリ容量によっても計算速度に差があることが判明した。
前回のX5650性能評価では、2CPU 12core: 13723MFLOPS が記録されている。ハードウェアの違いは、1枚あたりのメモリモジュール容量が前回が4GBで今回が1GBです。
メモリメーカーに確認をしたところ、メモリモジュール容量が4GB以上のものと2GB以下では、アプリケーションによって10%程度の性能差が出る場合があるとのことでした。

NFSの書込み速度 (Ethernet 10GBase)

■テスト環境
NFSサーバおよびNFSクライアント
MB: Supermicro X8DTi
Chipset: INTEL 5520
CPU: Xeon L5530 x2
MEM: 24GB (4GB DDR3-1333 Reg x 6)

インターコネクト
10GBase: NETXEN NXB-10GCX4

OS: CentOS 5.3 x86_64

■環境設定
NFSサーバ
kernelパラメータ ramdisk_size=20971520 で起動し、20GBのramdiskにext3ファイルシステムを構築して /mnt にマウントする。
/etc/exports 設定は以下とする。
/mnt   *(rw,sync,no_root_squash)

NFSクライアント
kernelパラメータ mem=1024m で起動し、OS上のメモリ容量を1GBとする。 (クライアント側のpagecache効果を少なくするため)

■テスト方法
200MBファイルを連続50回書出しをするスクリプトを用意する。

#!/bin/sh
LOOP=50
DIR=/mnt

COUNT=0
while [ $COUNT -lt $LOOP ]
do
dd if=/dev/zero of=$DIR/$COUNT bs=32768 count=6400
let COUNT=COUNT+1
done

このスクリプトをtimeコマンドの引数として実行しreal値から速度を算出する。

■事前テスト
NFSサーバ上でramdiskの書込み速度を計測する。
計測方法は同じスクリプトを使う。
[TABLE=3]
ディスク側の律速がこの値まではないことを前提とする。

■結果
[TABLE=6]

■評価
ネットワーク性能測定ツール iperf では、MTU=1500で6.69Gbps MTU=3000で8.23Gbps MTU=6000で8.48Gbps MTU=8000(設定可能最大値)で8.42Gbps でした。
iperfでの値が高いにもかかわらず、実際の転送速度が175MB/s程度であった。
以前より10GBase EthernetはInfiniband (IPoIB)より実際のデータ転送速度で劣るといった話があったが、今回の検証でそれを裏付ける結果となりました。しかし、これだけで10GBase Ethernetがすべてにおいて劣っているわけではありません。
例えばInfinibandはEthernetではないため、スイッチを使ってEthernet環境と接続することが不可能です。アプリケーションによって10GBase EthernetとInfinibandを使い分けることが重要と思います。

今回はCX4ポートのNICを使ったが、10GBase-CX4のNICはポート単価が低く導入しやすいです。しかし、10GBaseスイッチは未だに高額な商品となっております。
いずれ導入しやすい価格になってくれることを期待したいです。