Interrop 2012でマイクロソフトがWindows Server 2012 Betaを使ったデモンストレーションを展示しているらしい。
Microsoftのtechnet blogのJose’s Briefings, Diagrams and Annotationsより「Windows Server 2012 Beta with SMB 3.0 – Demo at Interop shows SMB Direct at 5.8 Gbytes/sec over Mellanox ConnectX-3 network adapters」
内容は、SMB3.0を使用したネットワーク越しでの高速転送技術について。
SMBサーバ側はFusionIO ioDrive2(単独で1.5Gbytes/sec)を4枚並べてストライプ。
そこに、高速ネットワークを使って別のサーバからアクセスして、どれくらいの速度がでるか、というもの。
上記の様な状態で、IO benchmarkを測定すると、以下の様な感じとなる。
テスト内容 | サーバ ローカル | 10Gbps Ethernet | 32Gbps Infiniband | 54Gbps Infiniband |
---|---|---|---|---|
512KB IO/8スレッド/8 outstanding | ||||
バンド幅 | 5808MB/sec | 1129MB/sec | 3754MB/sec | 5792MB/sec |
IOPS(512KB/sec IOs/sec | 11616 IOPS | 2259 IOPS | 3754 IOPS | 11565 IOPS |
CPU負荷 | ~6.6% | ~9.8% | ~3.5% | ~4.8% |
8KB IO/16スレッド/16 outstanding | ||||
バンド幅 | 5103MB/sec | 571MB/sec | 2620MB/sec | 2683MB/sec |
IOPS(512KB/sec IOs/sec | 525225 IOPS | 73160 IOPS | 335446 IOPS | 343388 IOPS |
CPU負荷 | ~90.4% | ~21.0% (転送できてないので暇) |
~85.9% | ~84.7% |
ま、単純に10Gbps < 32Gbps < 54Gbpsの差、と見ることもできるけど、
512KB IO時のCPU負荷が10Gbpsより低い、というのは、注目ポイントかもしれない。
なぜ、その様なことが発生するのか?
それは、Infinibandを使用するSMB 3.0では、RDMAという技術を利用しているから、である。
RDMAは「Remote Direct Memory Access Protocol」の略で、Infiniband環境下では当たり前のように使用されている技術である。
参考文献1:SMB Advanced Networking for Fault Tolerance and Performance
これの5ページ~10ページに詳細が書かれているが、ようはプロトコルオーバーヘッドが少ないから、ということになるのだが、ちょっとここの説明だと理解しづらい。
参考文献2:SMB 2.2. over RDMA
参考文献2を見ると、SMB over RDMA自体はSMB 2.2からサポートしているらしい。
RDMAがなぜ早いのか?という仕組みの説明としてはこちらの19ページと20ページの図がわかりやすい。
実際のデータ転送部分に関しては、直接サーバ上のメモリを参照してもらう、ということで、高速化を図っている、という感じである。
SMB3.0での改善点は他にもあり、上記の参考文献1の11ページ~18ページでは、「SMB Multichannel」という技術の話がされている。
これは、高速転送時、いままでのSMB実装では、1つの転送に対して使用できるCPU coreは1つしかなかったので、CPU coreが頭打ちになると、それ以上は帯域や他のCPU coreが空いていてもそれ以上は早くならない、という問題がある。(参考文献1 13ページ)
それを複数のCPU coreで処理を担当できるようにする、というのがSMB Multichannel。
SMB Multichannelにより複数NICを使った場合の分散処理もかなり改善される。
(訂正: 参考文献3 SMB 2.2: Bigger, Faster, Scalier (Part 1)を見るとSMB 2.2からあるようだ)
参考文献4 The basics of SMB Multichannel, a feature of Windows Server 2012 and SMB 3.0
という記事があがり、Multichannelとかの機能について解説されている。