NFS over RDMA : NFS(tcp)やLustreとの性能比較
RHEL7.4が8月にリリースされ、それまで長らくTech Preview扱いだったNFS over RDMAが正式サポートされることになりました。ということで今回、NFS(tcp)とNFS over RDMAとの性能比較をしてみました。また、NFSではないですが同じくRDMAを使っている共有ファイルシステムということでLustreについて比較したデータも紹介したいと思います。 RDMA (Remote Direct Memory Access) 言葉の通り、ネットワーク越しの別のマシンのメモリに直接アクセスできるというもので、この場合の直接というのは、CPUを介すること無くという意味です。主にInfiniBandで使われることが多く、複数ノードでMPI並列のジョブを実行するの性能に効果を発揮するものです。 参考URL : https://community.mellanox.com/docs/DOC-1963
性能比較(IOR) : NFS(tcp) vs NFS(rdma)
テスト環境
- NFS領域: 20本のHDD(7.2Krpm)でHardware RAID6(18+2)
- NFS領域のFilesystem: XFS
- NFS Client: 1台
- Network: QDR InfiniBand
- 測定ツール: IOR-3.0.1(openmpi-3.0.0)
結果
下記のグラフの通りRead/WriteともにNFS(tcp)に比べてNFS(rdma)の方が性能が出ていることがわかります。特にReadに関しては50%ほどの性能差が出ています。性能比較(dd) : NFS(tcp) vs NFS(rdma)
Read性能に差がかなりの差が出ているので念の為ddでも測定してみました。Writeは差がでないものの、Readは2倍の差が出ました。- Write性能 :
- Read性能 :
性能比較(IOR) : NFS(tcp) vs Lustre
続いてNFS(tcp)とLustre(rdma)の性能比較です。上記とは異なる環境で実施しています。 テスト環境は下記の通りで、実際に1台のサーバーでMDS/OSSを兼ねてLustreを構築することは実運用上はほとんどないかと思いますが、 あくまでテスト用の環境です。テスト環境
- NFS領域: 20本のHDD(7.2Krpm)でHardware RAID6(18+2)
- NFS領域のFilesystem: ZFS
- LustreのBackend Filesystem: ZFS
- NFS/Lustre Client: 4台
- Network: QDR InfiniBand
- 測定ツール: IOR-3.0.1(openmpi-3.0.0)
- Lustre version: 2.9.59_32
結果
4台のNFS/Lustre ClientからIORを実行した結果は以下の通りです。 NFS(rdma)との比較同様、同じHardware構成であってもSingle構成のLustreはNFS(tcp)に対してRead/Writeともの大きな性能差を発揮しています。まとめ
- IORでは、NFS(rdma0はNFS(tcp)に比べてWriteで10-20%、Readで40-50%程度高い性能をIO性能が得られる
- 同じくRDMAで通信を行うLustreで測定した場合でも同様にNFS(tcp)に対して高い性能が得られる
- 基本的にはNFSv3,v4どちらでも使えるが、NFS ServerのNFS領域がZFSで構成されている場合は、IORがエラーとなって実行できず(v3なら問題なし)
- Server側 kernel: svcrdma: send: invalid request error (9/0x8a)
- Client側 kernel: RPC: rpcrdma_recvcq_process_wc: rep ffff88203bd60540: local length error kernel: rpcrdma: connection to 192.168.255.1:20049 on mlx4_0, memreg 'frwr', 128 credits, 16 responders