InfinibandによるiSCSIの書込み速度 (iSER転送)

Infiniband DDR HCA■テスト環境
NFSサーバおよびNFSクライアント
MB: Supermicro X8DTi
Chipset: INTEL 5520
CPU: Xeon E5520 x1
MEM: 24GB (8GB DDR3-1333 Reg x 3)

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

OS: CentOS 5.4 x86_64
ホストスタック: OFED 1.5.2

■環境設定
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=9]

■評価
速いです。すごいですね。
前回の計測結果では、OS標準のホストスタックを利用しました。
今回はOFED本家のホストスタックを利用して計測をしました。理由は最新のホストスタックに含まれる、iSER(iSCSI Extensions for RDMA)の高速なデータ転送での計測です。
環境構築の注意点としては、iSERが動作する環境はOSやカーネルバージョンの制限があることです。(OFEDドキュメントを参照)
今回はDDRにて計測をしましたが、ソフトウェア環境が同じでHCAをSDRでの計測も次回行いたいと思います。

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

最近のプロセッサはマルチコア技術により、マルチスレッド(並列処理)にて効果的な計算が可能になってきました。
では、シングルスレッド(逐次処理)ではどうでしょうか?
シングルスレッドで大量のメモリを消費するアプリケーションでは、ホストあたりに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%程度の性能差が出る場合があるとのことでした。