Blog

※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。 / # The contents expressed here are only my personal opinions.

伊勢雅英氏のInfiniBand関連記事まとめ

久々に伊勢雅英氏のInfiniBandの記事が掲載となっているので、これまでの記事をまとめてみた。伊勢氏の最初のInfiniBand記事2004年からちょうど10年。10年前にはクラウドやデータセンターという話題がまだほとんど無かったと言ってもよく、随分と状況は変わった。

今回の記事は、ユーザー事例に加え、新動向としてRoCEが取り上げられている点に注目である。RoCEを使えば、慣れ親しんだEthernetでありながらInfiniBandの性能の核心であったRDMAが使える。「運用性と転送効率を両立した新世代のプロトコル」と紹介されているが、クラウド、データセンターといった外側ネットワークとの接続や従来のVLAN運用が必要となる部分にもRDMAが活用できるようになってきた、という10年前には無かった、最近のニーズに合わせた動向と思う。

RoCEの登場によって10G/40G Ethernetの魅力がさらに増す

 InfiniBandがどれだけ高速であろうと、実績の豊富なEthernetを使いたいと思う人がいるのも事実だ。InfiniBand製品は、Mellanoxを中心とする極めて少数のベンダーしか手がけていないが、Ethernet製品であればさまざまなベンダーから選べるからだ。また、接続先となるストレージシステムも、InfiniBandポートをネイティブに備えた製品はまだ少なく、Ethernetポートを搭載した製品が圧倒的に多い。

 これまでを振り返ると、InfiniBandがネイティブでRDMA技術をサポートしていたのに対し、Ethernetは通信効率の面で見劣りする部分があった。しかし、近年ではInfiniBandで培われた広帯域・低レイテンシの通信技術をEthernetに適用したRoCE(RDMA over Converged Ethernet)が実製品のレベルで登場している。RoCEは、フロー制御によるロスレスの10Gigabit/40Gigabit Ethernet10GbE/40GbE)を足回りとしながら、その上でInfiniBand譲りのRDMA転送を行う、運用性と転送効率を両立した新世代のプロトコルである。

過去記事

 

Windows Server 2012 R2 - 40GbE TCP/IP性能例

※実際の性能はハードウェア構成、ドライババージョン、設定等で異なるため、あくまで一例である。

  • NIC :Mellanox ConnectX-3Pro (40GbEモード) [FW:2.30.8000(WinOF4.60に付属)]
  • ドライバ :Mellanox WinOF4.60
  • ドライバオプション:全てデフォルト設定(JumboFrame無効)
  • 構成:40GbE Copper QSFPケーブル直結対向構成
  • ベンチマークツール :NTttcp v5.28(Microsoftベンチマークツール)

Windows版iperf等もあるが、Windows環境での推奨ベンチマークツールはNTttcpとのこと。下記Microsoft WEBより入手可能。2013年4月に公開されている。過去5年に渡ってMicrosoft "internal only"であったが、内外各所からの要望で公開された模様。

NTttcp Version 5.28 Now Available - Server and Cloud Partner and Customer Solutions Team Blog - Site Home - TechNet Blogs

送信側:# NTttcp.exe -s -m 16,*,10.0.0.10 -a 2 -t 10000

受信側:# NTttcp.exe -r -m 16,*,10.0.0.10 -a 2 -t 10000

  • IPアドレスは送信側、受信側共に受信側IPを指定する。
  • -s : 送信側、-r:受信側、-m: X,Y,Z : X:セッション数、Y:プロセッサ(*で全プロセッサ使用)、Z:受信IPアドレス、-a:セッション内同時I/O
  • -tは実行時間(秒)。十分大きくしてパフォーマンスメーターで性能状況を観測した。

 

f:id:kz_tomo:20140419184541j:plain

性能状況例

  • 受信側タスクマネージャー:38.4 Gbps程度を確認

f:id:kz_tomo:20140419194812j:plain

参考:NTttcpのヘルプ

 NTttcp: [-s|-r|-l|-n|-p|-sp|-a|-rb|-sb|-u|-w|-d|-t|-cd|-wu|-v|-6|-wa|-nic|-xml]

-m <mapping> [mapping]

 

        -s   work as a sender

        -r   work as a receiver

        -l   <Length of buffer>         [default TCP:  64K, UDP: 128]

        -n   <Number of buffers>        [default:  20K]

        -p   <port base>                [default: 5001]

        -sp  synchronize data ports, if used -p should be same on every instance

 

        -a   <outstanding I/O>          [default:    2]

        -rb  <Receive buffer size>      [default:  64K]

        -sb  <Send buffer size>         [default:   8K]

                                   -a : [default:    0]

               <Send buffer size> < 0 : system default

        -u   UDP send/recv

        -w   WSARecv/WSASend

        -d   Verify Flag

        -t   <Runtime> in seconds. When with -n mans max test time and disables

             -wu and -cd flags.         [default (with -n): 3h]

        -cd  <Cool-down> in seconds

        -wu  <Warm-up> in seconds

        -v   enable verbose mode

        -6   enable IPv6 mode

        -wa  Sets the WAIT_ALL flag when using recv or WSARecv functions

        -nic <NIC IP>

             Use NIC with <NIC IP> for sending data (sender only).

        -xml [filename] save XML output to a file, by default saves to xml.txt

        -m   <mapping> [mapping]

             where a mapping is a session(s),processor,StartReceiver IP set

             e.g. -m 4,0,1.2.3.4 sets up:

             4 sessions on processor 0 to test a network on 1.2.3.4

 

 

VMware ESXi5.5 - 40GbE inbox 実機デモ - vForum 2013

VMware ESXi5.5では、40GbEドライバがinboxサポート(OSやハイパーバイザーにドライバが内蔵されていること)されたことが大きなアップデートであった。

VMwareのイベントであるvForum 2013(東京)及びvSS 2013(大阪)での会場にて実機デモを実施した記録である。

  • 日時:2013年11月6日-7日(東京:vForum 2013)
  •    2013年11月19日(大阪:vSS 2013)
  • 場所:ザ・プリンスパークタワー東京 展示会場
  •    ホテル阪急インターナショナル 展示会場

Mellanox 40GbE inboxドライバ実機デモ

デモ構成

  •  2x VM(CentOS6.4) vs 2x VM(CentOS 6.4)を1本の40GbEで接続
  • VMware ESXi 5.5 inbox 40GbEドライバ
  • VMで下記を実行

(受信側VM)# iperf -s

(送信側VM)# iperf -c <受信側VMのIP address> -l 64k -P 4

 

f:id:kz_tomo:20140419173339j:plain

デモでの性能例(受信側サーバ)

  • 受信側サーバにて4.86GB/s(=38.88Gbps)程度のスループットでの安定動作を確認

f:id:kz_tomo:20140419173858j:plain

Mellanox 40GbE I/O統合デモ

  • 某国産ストレージの40GbE iSCSIモデル(プロトタイプ版)を展示
  • ネットワークI/OとストレージI/O(iSCSI)を40GbEシングルワイヤ接続
  • ネットワークI/O、ストレージI/O混在環境下での安定したスループットを確認
  • 性能状況を会場にて紹介(プロトタイプストレージのため、ここでは省略)

f:id:kz_tomo:20140419174236j:plain

SMB Direct - 40GbE RoCE 実機デモ - Interop Tokyo 2013

 Interop Tokyo 2013でのSMB Direct実機デモ内容の記録。

40GbE(RoCE) x 2本をSMB Multichannelで束ね、SMB DirectでのファイルシステムI/OをIOmeter(1MBシーケンシャルリード)で実行するデモを会場ブースにて実施した。

デモ概要

  • 日時:2013年6月11日-14日
  • 場所:Interop Tokyo 2013 幕張メッセ 展示会場

デモの目的

  • Windows Server 2012環境での40GbE End-to-End接続を実証
  • 40GbE RoCE(RDMA over Converged Ethernet)でのSMB Directアクセスが安定して充分な性能が出ることを実証
  • SMB Multichannelにて安定動作し、片パス障害及び障害復帰時にアクセスが途切れることなく動作することを実証

f:id:kz_tomo:20140413223209j:plain

性能はストレージの構成やサーバーの構成によるため、あくまで一例としてだが、展示会場でのデモでは、2パスで7,000MB/sを超えるスループット性能を確認した。

2パスでの接続状況(SMB Multichannel / SMB Direct)

 

f:id:kz_tomo:20140413221550j:plain

 

展示会場では一方のパスのケーブルをオンラインで抜き差しするデモも実施。

ストレージアクセスが途切れることなく、片パスの抜き差しが出来ることを実演。

 

片パスを抜いた場合の状況(SMB Multichannel(1パス) / SMB Direct)

f:id:kz_tomo:20140413221722j:plain

 

参考:デモを含めて展示内容を紹介する動画(RBBtoday)


【Interop 2013】メラノックスのスイッチがShow Award特別賞を受賞 - YouTube

SMB Direct - Windows Server 2012 / R2

SMB Direct関連情報まとめ

SMB Directとは

 Windows Server 2012(及びR2)[以降、Win2012/R2と記載]にてサポートされたSMB3.0は、RDMA対応のネットワークアダプタとの組み合わせで、SMBプロトコル(ファイル共有プロトコル)がRDMA(RDMAに関する説明)で動作する。このRDMAで動作するSMBプロトコルをSMB Directと呼ぶ。

従来、ファイル共有プロトコルは、運用性に優れるものの、CPUに負荷が掛かりやすく、性能が出しにくい部分があったが、SMB Directによって運用性と性能の両立を実現している。SMB DirectはRDMAによるデータ転送のため、CPUに負荷を掛けないデータ転送が可能である。

また、SMB Directは、Win2012/R2でOS標準サポートされており、RDMA対応ネットワークアダプタが実装されていれば、特に設定変更などすることなく、自動的に動作する。

SMB Directは、RDMAがOSで標準サポートされ、しかもファイル共有プロトコルがRDMA動作するという二つの意味で、非常に画期的な技術である。

SMB Direct関連情報

SMB ダイレクトを使用してファイル サーバーのパフォーマンスを向上させる

Deploy SMB Direct with InfiniBand Network Adapters (InfiniBandでの構成)

Deploy SMB Direct with RoCE Network Adapters (RoCEでの構成) 

Hyper-V over SMB Direct

Win2012/R2では、Hyper-V環境でのストレージとして、SMBファイルストレージが使用できるようになった。前項で述べたSMB DirectもHyper-V環境で使用可能であり、仮想化環境でボトルネックとなりやすいストレージアクセスを高速化できる。

Hyper-V over SMB の展開

Hyper-V Live Migration over SMB Direct

Windows Server 2012 R2でのアップデートとして、Hyper-V環境でのLive MigrationでSMB Directが選択できるようになった。SMB DirectはRDMAによるデータ転送のため、CPUに負荷を掛けず、非常に高速なLive Migrationが可能であり、運用面で大きなメリットが期待できる。

 Microsoft Worldwide Partner Conference (2013年7月)での講演で紹介されたデモ

Microsoft Pushes the Envelope with Hyper-V Live Migration -- Redmondmag.com

  • 約8GBのVMSQL Serverが動作しているVMをLive Migrationするというデモ

デモの結果:

  •  Win2012とWin2012間:1分26秒

  • Win2012R2とWin2012R2間(圧縮あり):32秒

  • Win2012R2とWin2012R2間(RDMA):11秒

このデモでは、VM上でSQL Serverが動作しているため、圧縮ありの場合のLive Migrationでは圧縮処理に使うCPUとSQL Server動作が競合するのに対し、RDMAの場合にはCPUを使う必要がないため、圧縮ありの場合とRDMAの場合での所要時間に顕著な差がついている。

 

 

 

 

 

RoCE(RDMA over Converged Ethernet)

RoCEは、「アールオーシーイー」または「ロッキー」と発音する。

  • Ethernet上でRDMA転送を行うことができるネットワークプロトコル
  • 下位レイヤのネットワークヘッダはEthernetヘッダであり、上位レイヤのネットワークヘッダ(データ部分を含む)はInfiniBandのヘッダである。
  • 標準的なEthernet環境(ロスレス機能が備わったスイッチ)でRDMA転送を行うことを可能であり、NICがRoCEをサポートしている必要がある。

 RoCEフレームフォーマット

f:id:kz_tomo:20140406163800j:plain

 

出典: IBTA Supplement to InfiniBandArchitecture Specification Volume 1 Release 1.2.1 - Annex A16:RDMA over ConvergedEthernet (RoCE)

RoCEとInfiniBandとの比較

 f:id:kz_tomo:20140406165301j:plain

RoCEの最下位レイヤのフレームヘッダは、標準的なEthernetフレームと同じである。

また、上位のネットワークヘッダはデータを含めてInfiniBandと同じである。

 

 

 

リモートダイレクトメモリアクセス(Remote Direct Memory Access : RDMA)の紹介

#本記事は、下記ブログの日本語訳(+一部補足)版を原文筆者Dotan Barak*1の了解を得て掲載しています。

Introduction to Remote Direct Memory Access (RDMA) - RDMAmojo

 

目次

  1. RDMAとは?
  2. RDMAの利点
  3. RDMAをサポートするネットワークプロトコル
  4. RDMAを使うために複数のプログラムAPIを学ぶ必要がある?
  5. RDMAをサポートするネットワークプロトコル相互の互換性は?
  6. RDMAを使うには?(特別なパッケージをダウンロード? OS付属? )

 1.RDMAとは?

ダイレクトメモリアクセス(Direct Memory Access (DMA))は、CPUが介在することなく、ホストメモリへ直接アクセスを行うデバイスの機能である。

RDMA (Remote DMA)は、CPUが関与することなくネットワーク越しにリモート計算機上のメモリへアクセスする(すなわち、リモート計算機上のメモリからリードおよびリモート計算機上のメモリへライトする)機能である。

 

翻訳者補足:データを水にたとえると・・・

 TCP/IP : バケツリレーして水を運ぶような方式。バケツの数には限りがあるし、運ぶのに労力が掛かる。

(性能に限界あり、CPU負荷大)

 RDMA : 太いホースで繋いで水道の蛇口を開けるような方式。送りたい水(データ)を一気に流し、流し終わったら送り側の蛇口を閉めるだけ。

(帯域をフルに活用、CPU負荷ゼロ(データ転送時))

※FibreChannel等のチャネル系プロトコルとの違いは?

FibreChannel等では最大でも1MB程度のサイズの細切れでバッファ確保/開放を通信ペアで確認しながら送受信。細切れサイズ毎にCPU割り込みやドライバ処理が発生するため、性能には限界がり、CPUも使ってしまう。

一方、RDMAでは、ローカルとリモートの大きなメモリ領域の間で連続的にデータ転送(最大GB単位での連続転送)をすることができる。また、細かいサイズの転送であっても、バッファ確保を通信の都度行う必要がないので(ワンサイドオペレーション(One Side Operation)でのデータ通信が可能)、圧倒的に低いレイテンシと高スループットを実現することができる。

 

 

2.RDMAの利点

RDMAを用いることによる主なメリット:

ゼロコピー (Zero-copy)

アプリケーションは、ネットワークソフトウェアスタックを経由することなくデータ転送を行うことができ、データはネットワークレイヤ間のコピー無しでバッファへ送信または受信される。

カーネルバイパス (Kernel Bypass)

アプリケーションは、ユーザ空間から直接データ転送されるため、コンテキストスイッチを行う必要がない(コンテキストスイッチには非常に多くのCPU処理が必要とされるため、コンテキストスイッチを減らすことは性能向上に直結する)。

CPUの介在がない (No CPU Involvement)

アプリケーションは、リモート計算機のCPUを全く使うことなくリモートメモリにアクセスすることができる。リモート計算機は、リモートプロセス(プロセッサ)が介在することなくメモリリードを行うことができる。リモートCPUのキャッシュは、アクセスされたメモリデータで使用されない(したがって、CPUキャッシュを無駄に消費する必要がない)。

メッセージベースのトランザクション (Message Based Transactions)

データはストリームではなく、離散的なメッセージとして処理される。このことにより、アプリケーションは別のストリームを別々のメッセージやトランザクションとして処理する必要がない。

スキャッタ/ギャザー処理のサポート (Scatter/Gather Entries Support)

RDMAは、スキャッタ/ギャザー処理をネイティブサポートしている。すなわち、複数のメモリバッファ(メモリ領域)を読み込んで1つのストリームとして送信したり、1つのストリームから複数のメモリバッファ(メモリ領域)へ書き出したりすることができる。

3.RDMAをサポートするネットワークプロトコル

現時点でRDMAをサポートするネットワークプロトコルの例:

InfiniBand(インフィニバンド)

初めからRDMAをネイティブサポートする新世代のネットワークプロトコルである。新しいテクノロジーのため、このテクノロジーをサポートするNIC(InfiniBand規格ではHCA (Host Channel Adapter)と呼ぶ)とスイッチが必要となる。

RDMA Over Converged Ethernet (RoCE)(アールオーシーイーまたはロッキー) 

Ethernet上でRDMA転送を行うことができるネットワークプロトコルである。下位レイヤのネットワークヘッダはEthernetヘッダであり、上位レイヤのネットワークヘッダ(データ部分を含む)はInfiniBandのヘッダである。このプロトコルは、標準的なEthernet環境(スイッチ)でRDMA転送を行うことを可能とする。NICのみが特別なものであり、RoCEをサポートしている必要がある。

Internet Wide Area RDMA Protocol (iWARP) 

TCP上でRDMA転送を行うネットワークプロトコルである。InfiniBand (RDMA)とRoCEではサポートされていてiWARPではサポートされていない機能がある。このプロトコルは、標準的なEthernet環境(スイッチ)でRDMA転送を行うことを可能とする。NICのみが特別なものであり、iWARPをサポートしている必要がある(ただし、CPUオフロードが使われる場合)。CPUオフロードを使用しない場合は、全てのiWARPスタックはソフトウェアとして実装可能であるが、RDMAの性能的な長所の大部分は失われてしまう。

4.RDMAを使うために複数のプログラムAPIを学ぶ必要がある?

前章でRDMAをサポートするネットワークプロトコルが複数あることを述べた。そうすると、RDMAを使うにはそれぞれ別のプログラムAPIを習得する必要があるように思えるかもしれないが、答えは「いいえ」(複数のプログラムAPIを学ぶ必要はない)である。幸運なことに、同じAPI(すなわち、verbs)は、上記の全てのRDMA対応のネットワークプロトコルで使用可能である。Liux系ではlibibverbsとKernel verbsであり、WindowsではNetwork Direct (ND)に相当する。

5.RDMAをサポートするネットワークプロトコル相互の互換性は?

RDMAをサポートするネットワークプロトコルは互いに異なるプロトコルであるため、パケットフォーマットが異なり、それら相互に直接メッセージの送受信はできない。何らかのルータやゲートウェイを挟む必要がある。しかしながら、同じコードでRDMAネットワークプロトコル全てをサポートすることができる。全てのRDMAネットワークプロトコルはlibibverbsをサポートするため、ソースコードの再コンパイルさえも不要で同じバイナリを使用することができる。

6.RDMAを使うには?(特別なパッケージをダウンロード? OS付属?)

いくつかのOSでは、Kernel標準でRDMAをサポートしている。例えば、LinuxはRDMAをネイティブサポートしており、Linuxの主要なディストリビューションでRDMAをサポートしている。その他のOSではRDMAサポートを追加するためにある種のパッケージ(OFED等)をダウンロードする必要となる場合がある。

 

*1:Dotanは当ブログ筆者と同じハイテク企業に勤務しており、当ブログ筆者も本社にて彼の技術講座を受講したことがあります。