Nabe International | Takeru Boost >> Takeruを回せ! >>

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性能 :
$ time dd if=/dev/zero of=25G bs=1M count=25000
NFS(tcp) : 27.977s(937MB/s)
NFS(RDMA) : 27.421s(956MB/s)
  • Read性能 :
$ time cat 25G > /dev/null
NFS(tcp) : 19.998s(1250MB/s)
NFS(RDMA) : 9.792s(2553 MB/s)

性能比較(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
実アプリケーションでの評価も行う必要がありますが、NFS over RDMAをお使いのTakeruで使いたいという場合には担当の営業かエンジニアまで ご連絡いただければと思います。