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スイッチは未だに高額な商品となっております。
いずれ導入しやすい価格になってくれることを期待したいです。