41
Infiniband hack-a-thon #2 Windows Server 2012 + FDR InfinibandSMB Direct (SMB over RDMA)を試してみた Windows班まとめ資料 rev1.3 17 th Nov 2012 #ibhack Last Update 04 th Feb 2014

Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Embed Size (px)

DESCRIPTION

2台のWindows Server 2012とInfiniband FDR HCAを用いてRDMAを利用したSMB Direct (SMB over RDMA)によるファイル転送で、どれくらいの数値がでるのかを試してみました。

Citation preview

Page 1: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Infiniband hack-a-thon #2 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Windows班まとめ資料 rev1.3

17th Nov 2012

#ibhack

Last Update 04th Feb 2014

Page 2: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Windows班アジェンダ

ibhack02(Windows班)概要 Windows班の検証環境 SMB Diriect環境構築の予備知識(1) SMB Diriect環境構築の予備知識(2) 補足(1)-Intermediate版のファームウェアアッ

プデート1 補足(1)-Intermediate版のファームウェアアッ

プデート2 SMB Diriect環境構築手順(1) 補足(2)-OpenSMの登録と起動 SMB Diriect環境構築手順(2) SMB Diriect環境構築手順(3) SMB Diriect環境構築手順(4) SMB Diriect環境構築手順(5) SMB Diriect環境構築手順(6) 補足(3)-SmbClientとSmbServerについて SMB Diriect環境構築手順(7) SMB Diriect環境構築手順(8) SMB Diriect環境構築手順(9) 補足(4)-ファイルのドラッグ&ドロップ時の警告

SMB Diriect測定準備(1) SMB Diriect測定準備(2) SMB Diriect測定準備(3) SMB Diriect測定準備(4) SMB Diriect測定準備(5) SMB Diriect測定準備(6) 補足(5)-その他の測定ツールについて1 補足(5)-その他の測定ツールについて2 SMB Diriect測定の実施計画 ibhack02当日の測定内容 Ib_read_bwの測定結果 RDMA有効(単一のコピー処理) RDMA有効(並列のコピー処理) RDMA無効(単一のコピー処理) RDMA無効(並列のコピー処理) ibhack02 SMB Direct測定結果まとめ 反省点や今後同様の測定を行う際の注意 総括 謝辞 おわり おまけ

Page 3: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

ibhack02(Windows班)概要

Windows班は、Windows Server 2012を利用し、SMB Direct(SMB over RDMA)の検証を行った。

RDMA環境が有効であるかを確認し、ダミーファイルの転送とその速度の確認及びRDMA無効時のダミーファイルの転送とその速度の確認を行った

当該資料は、Windows Server 2012においてRDMAを利用したSMB Directが利用可能な環境を構築する上での手順、要点や補足及びInfiniband Hack-a-thon [02]での作業結果のまとめ。

Page 4: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Windows班の検証環境

Windows Server 2012でのSMB Direct環境構築

RDMAを利用したSMB Direct転送を検証するに当たって、2台の

Windows Server 2012にFDR Infinband HCAを搭載、双方を接続。サーバー側のダミーファイルをクライアント側に転送し、その際の秒間当たりの転送速度を計測した。

Windows Server Xeon E5-2690 8Core HT

48GB DDR3

Windows Server 2012 Xeon E5-2690 8Core HT

48GB DDR3

smb direct

Infiniband Switch

FDR Infiniband Switch with

Subnet Manager

WinOF

56Gbps FDR HCA

共有 フォルダ

WinOF

56Gbps FDR HCA

Page 5: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築の予備知識(1)

RDMA対応のInfiniband HCA(Host Channel Adapter) – RDMAに対応したHCAは、ConnectX-2及びConnectX-3シリーズでかつファームウェ

アが2.09.8350以上?が条件となり、ConnectXシリーズやInfiniHost IIIシリーズは対応しない。

※当初、ファームウェア2.09.1000でRDMAに対応するとの情報だったが、海外等での報告や事前検証の結果、当該バージョンでは、RDMA対応しない場合があることが判明した。 ※HPのMHQH29C-XTR相当の592520-B21、HP提供ファームウェアのバージョン2.09.12000でもNG だった(2013/03/25追記)

– なお、最新ファームウェアのSTABLEは、2012年11月時点でConnectX-3シリーズが

2.11.XXXXだが、 ConnectX-2シリーズは2.09.1000となっている。そのため、 ConnectX-2でRDMAを有効にするには、STABLE版のファームウェアではなく、Intermediate版のファームウェアが必要となる場合がある。

– Intermediate版のファームウェアは、直接焼き込める形になっていないため、「補足(1)-Intermediate版のファームウェアアップデート1及び2」にて手順を示す。

– HCAの型番によるConnectX、X-2、X-3シリーズの見分け方 ConnectXシリーズは、 MHQH29-XXX、MHRH19-XXX等、数字のあとにアルファベッドが付

かない型番 ConnectX-2シリーズは、MHQH19B-XXX、MHQH29C-XXX、MHRH19B-XXX等、数字の後

にBやCが付く型番 ConnectX-3シリーズは、MNX353A-XXXX、 MNX354A-XXXX等になっている型番

Page 6: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築の予備知識(2)

Windows用OFEDドライバ – Windows Server 2012では、OFED for Windows(WinOF)が標準で組み込まれてい

るため、Infiniband HCAは、挿すだけで認識される。

– ただし、ibstatやvstat等のツール類は提供されていないため、これらは別途、MellanoxやOFED等からWinOFをダウンロードすることで入手可能となる。

– なお、Windows Server 2012に標準で組み込まれているドライバは古いため、MellanoxやOFED等から最新のドライバを入手しインストールが推奨。

SMB DirectとMultichannel – RDMA転送を行うには、RDMA及びMultichannelが共に有効になっている必要がある。

– Windows Server 2012では、RDMA(設定名:NetworkDirect)及びMultichannel(設

定名:EnableMultiChannel)はデフォルトで有効になっている。

Page 7: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(1)-Intermediate版のファームウェアアップデート1

Intermediate版のファームウェアのアップデート方法 – 通常、STABLE版のファームウェア製品別のiniファイルが組み込まれた各製品型番専用のファーム

ウェアが用意されており、それをダウンロードしてflintコマンドでファームウェアをアップデート。

– しかしIntermediate版は、元々OEM向けに用意されているため、各OEM先ベンダが製品情報を編集できるよう、基本となるファームウェアとiniファイルが別々に分けられた形で提供されている。

– この仕組みを利用し、 Intermediate版で同梱されている製品別iniファイルを利用せず、アップデート対象HCAから製品別iniファイルの元情報を抜き出しiniファイル化し、そのiniファイルと基本ファームウェアを組み合わせてmlxbunrコマンドでファームウェアをアップデートする。

基本ファ ームウェア

製品別 iniファイル

ファーム ウェア

製品別 iniファイル

mlxburn コマンド

flint コマンド

基本ファ ームウェア

製品別 iniファイル

mlxburn コマンド

flint コマンド

製品別 iniファイル

Page 8: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(1)-Intermediate版のファームウェアアップデート2

Intermediate版のファームウェアのアップデート方法詳細 – アップデート対象となるHCAから製品別iniファイルの作成

1. MFT Software for Windows_x64をダウンロードし、MFT Software for Windows_x64をインストール(http://www.mellanox.com/content/pages.php?pg=management_tools)

2. Intermediate版のファームウェアをダウンロード(http://www.mellanox.com/content/pages.php?pg=custom_firmware_table)

※ページをスクロールしていくと「ConnectX-2 IB & VPI adapter cards:」で「2.9.8350」のバージョンが見つかる

3. OpenSMが起動していることを確認後、次のコマンド( mst start )をコマンドプロンプトで投入 4. さらに次のコマンドを投入( mst status )し、デバイスIDを確認、以後、各種コマンドは、ここで得たデバイスID

を指定して行う

5. さらに次のコマンドを投入( flint -d mt26428_pci_cr0 dc > MHQH29B.OWN.ini )

6. mlxburn -d mt26428_pci_cr0 -fw fw-ConnectX2-rel.mlx -conf MHQH29B.OWN.ini

※コマンドやファイルは全てパスが通っている前提での表記、コマンドパスが通ってない場合は、コマンド及びiniファイル等はすべてフルパス指定で実行すること。また、デバイスIDも各自の環境のものに読み替えること。 ※flintコマンドで吐きだしたiniファイルは、一度メモ帳で開いてUnicodeからANSI形式にして保存しないと、mlxburnコマンドが読み込めない場合がある(mlxburnでInvalid Syntax対応)。【2013/03/25追記】

基本ファ ームウェア

製品別 iniファイル

mlxburn コマンド

flint コマンド

製品別 iniファイル

デバイスIDが2つ見えるが、両方とも同じデバイスを示す、ただデバイスIDの指定に利用するのは上側を利用するのが推奨

リダイレクトの出力先は任意のディレクトリも指定可能

Page 9: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(1)

1. Windows Server 2012をインストールし、Infiniband HCAを取り付ける。 2. MellanoxのWebサイトからWinOFをダウンロードしインストール。

http://www.mellanox.com/content/pages.php?pg=products_dyn&product_family=32&menu_section=34#tab-three

インストールウィザードは全て変更することなく終了させる。インストール後、再起動が必要。 3. OpenSMの登録と起動(省略可能) → 詳細は次ページ

HCAを搭載した2台のホストがManagedなInfinbandスイッチ(Subnet Managerが搭載されたスイッチ)でないもしくは、スイッチレスで接続する場合は、以下の作業を実行するが、ibhack02では、FDRのInfiniband Managedスイッチ利用したため、当該作業は割愛。

もし、実施する環境にManagedスイッチがない場合にのみ、次ページを参考に作業を実施する。 4. Infinbandケーブルを各ホストのInfiniband HCAに挿し、スイッチと接続。

スイッチレスの場合、3.の作業を行い、双方のホストを1本Infinbandケーブル直結でも良い。 Infinibandケーブルを差し込む時は、コネクタの上下に注意すること。特にQSFPのコネクタは、

CX-4等のコネクタに比べ、差し込みの向けが分かりづらい。 ケーブルを抜く場合は、ケーブルの部分を手に持って引き抜かないこと、ケーブルが破損します。

ケーブルを抜くときは、必ずここを持って引っ張ること!

正常な向きでは、最後まで押し込むと「カチッ」と音がする

Page 10: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(2)-OpenSMの登録と起動

1. OpenSMの登録と起動を行う OpenSMはWinOFインストール時に、デフォルトインストールしていれば、一緒にインストールされるが起動及びサービス登録は、自動で行われないため、必要に応じて自分で実行する必要がある。 コマンドプロンプト(管理者)で OpenSMをサービス登録し起動する、手順は以下のとおり。

※PowerShellから以下のコマンドを叩く場合はsc.exeと”.exe”まで付けて実行すること(2014年2月5日追記) 1. sc create opensm binPath= “C:¥Program Files¥Mellanox¥MLNX_VPI¥IB¥Tools¥opensm.exe --service" 2. sc start opensm 3. sc query opensm (コマンド投入結果、STATEがrunningかどうか確認) ※赤字の部分は、各自の環境に読み替える。WinOFをデフォルトインストールすると赤字ディレクトリパスになる

sc create opensmの結果、サービスに、opensmが登録された。自動起動したい場合は、上記コマンドの引数を与えるか、右の画面で「スタートアップの種類」のプルダウンから「自動」を選択し、設定する。

Page 11: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(2)

1. Infiniband HCAのIPアドレスを付与 ホストのネットワークアドレス帯とかぶらないネットワークアドレス帯を、それぞれのInfiniband

HCAのInfinbandケーブルを接続したポートに割り当てる。2ポートあるHCAの場合、IPアドレスはポートごとに付与可能だが、今回は1ポートのみ使用

NICと異なるネットワークアドレス帯のIPを付与、デフォルトゲートウェイは入力しないままで良い

Page 12: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(3)

1. HCAのブラケットのLEDが緑と黄色、両方点灯を確認し、正常にコネクトしたかどうかをチェックする。スイッチに接続している場合は、スイッチ側のLEDも同様に緑と黄色、両方点灯しているか確認する。

PowerShell(ISEを管理者として実行する)でも正常なコネクションを確認する。 1. ibstatでStateがPhysical stateがLinkUpActiveかどうか確認 2. vstatでport_stateがPORT_ACTIVE及びport_phys_stateがLINK_UPかどうか確認

正常なリンク時は、黄色と緑が点灯している。上から2つのLEDは、もう1つのポート用

ibstatの結果 vstatの結果

Page 13: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(4)

1. RDMA対応のカードとして認識されているか確認 PowerShell(ISEを管理者として実行する)で Get-NetAdapterRDMA と入力しEnableがTrueである

ことを確認する。

2. smbで利用するネットワークカードの状態(RDMA CapableがTrueかどうか)確認 PowerShell(ISEを管理者として実行する)で以下の2つのコマンドをそれぞれ実行

1. Get-SmbClientNetworkInterface

2. Get-SmbServerNetworkInterface

Page 14: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(5)

1. RDMA転送が有効か(NetworkDirectがEnableかどうか)確認 PowerShell(ISEを管理者として実行する)で Get-NetOffloadGlobalSetting と入力しEnableが

Trueであることを確認する。

2. もしも、RDMA転送が無効になっていたら・・・ PowerShell(ISEを管理者として実行する)で以下のコマンドを実行

1. Set-NetOffloadGlobalSetting -NetworkDirect Enable

※RDMAが有効な状態でファイル転送の速度を測ったあと、RDMAを無効にする際には、上記のコマンドのEnableをDisableに変更してやる。

Page 15: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(6)

1. Multichannelが有効か(EnableMultichannelがTrueかどうか)確認 RDMAを利用したSMB Directによるファイル転送は、 NetworkDirectとMultichannelがセットで

有効になっていないと機能しない。 PowerShell(ISEを管理者として実行する)で以下の2つのコマンドをそれぞれ実行

1. Get-SmbClientConfiguration | Select EnableMultichannel

2. Get-SmbServerConfiguration | Select EnableMultichannel

2. もしも、Multichannelが無効になっていたら・・・ PowerShell(ISEを管理者として実行する)で以下のコマンドを実行

1. Set-SmbClientConfiguration -EnableMultichannel $true 2. Set-SmbServerConfiguration -EnableMultichannel $true

※ここまで(SMB Diriect環境構築手順(4)~(6))で、いずれかでDisableないしはFalseがあった場合、HCAに問題がある可能性があるため、Windows Server 2012のRDMAに対応で、かつファームウェアのバージョンが2.09.8350以上かどうか、よく確認する

Page 16: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(3)-SmbClientとSmbServerについて

SmbClientとSmbServerの関係 – RDMA、SMB Directが可能か否かの確認の中で、何度かGet-SmbClientとGet-SmbServer及びSet-

SmbClientとSet-SmbServerが出てきたが、ファイル転送の方向性で、いずれかがServerになり得、いずれかがClientにもなり得るため、双方のマシン上で両方のコマンドを入力し、状態を確認した。

Windows Server 2012 (SMB Client)

Windows Server 2012 (SMB Server)

smb direct

共有 フォルダ

Windows Server 2012 (SMB Server)

Windows Server 2012 (SMB Client)

smb direct

共有 フォルダ

Page 17: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(7)

1. SMB Directのファイル転送に利用するドライブ(RamDisk)を作成する 今回の検証においては、FDR Infifnband接続で構成したサーバ間のインターコネクト環境において、

Windows Server 2012のRDMAを用いたSMB Directによるファイル転送が最大でどの程度の性能が出るかを確認するため、ファイル転送元と転送先のストレージにRamDiskを用いた。

これは、想定されるFDR Infinibandの理論値のバンド幅に比べ、ストレージのRead/Writeが確実にボトルネックになると考えられたことから SMB Directによる最大転送速度が計測するための対策。

StarWind RAM DiskをStarWindのWebサイト(http://www.starwindsoftware.com/high-performance-ram-

disk-emulator)からダウンロードしインストール(Windows Server 2012やx64環境で動作)。 インストールウィザードで、設定可能な最大メモリ数から数GBをマイナスした数値を入力、ある程度のメモリ空

き容量を保ちつつ、可能な限り大きな容量のRamDiskを作成する。 ※FDR Infinibandのバンド幅は56Gbps、理論値で言えば7GB/secとなる。実装や符号化等の影響で実効レートはもう少し落ちるが、それでも数GB/secのバンド幅の場合、ファイル転送を行った際の挙動を計測、監視するためには、少なくとも10秒程度はファイル転送が行われ続ける必要があるため、それだけのファイル配置可能なRamDiskを作成できるだけのメモリを搭載したほうが良い。 ※もし、ioDrive 2のような高速ストレージを有し、それらをストライプ等でさらに高速化することで、少なくとも数GB/secの転送速度をたたき出すストレージがあれば、測定におけるストレージ側のボトルネックを解消できるため、SMB Diriect環境構築手順(7)及び(8)の作業は必要ない。

Windows Server 2012 (SMB Client)

Windows Server 2012 (SMB Server)

smb direct

共有 フォルダ

RamDisk上に作成

Page 18: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(8)

1. SMB Directのファイル転送に利用するドライブ(RamDisk)を構成する RamDiskは、StarWind RAM Diskのインストールウィザードを完了すると自動的に作成されるが、

フォーマットを行いドライブレターが振り出されないと利用できないため、これを行う。

StarWind RAM Diskのインストールウィザードを完了させ、RamDiskのディスク状態をオンラインにすると自動的にFAT32でフォーマットされマウントされてしまう。そのためダミーデータを作成する際に、2GBを超えるファイルを作成できない。

今回、Windows班では、いざ測定用のダミーデータを作成する際に、2GB以上のファイルが作れず、いくつかのファイル作成方法やツールの検索等で時間をロスした。

RamDiskの状態をオンラインに変更した後、必ずディスクの管理で、RamDiskのファイルシステムをNTFSでフォーマットし直すこと。

StarWind RAM Diskのインストールウィザード終了後、RamDiskが起動した画面、赤枠線の中が追加されたRamDisk ディスクの状態がオフラ

インになっているので、赤枠線内で右クリックしてディスクの状態をオンラインに変更する

オンラインに変更すると自動的にFAT32でフォーマットされるため、NTFSでフォーマットし直す

Page 19: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect環境構築手順(9)

1. RamDiskを共有する RamDiskをNTFSで再フォーマットした後、RamDiskを共有する。

1. RamDiskで構成したドライブをExplorer上で右クリックし「共有」をマウスでポイントすると「詳細な共有」が表示されるのでクリック。

2. RamDiskのプロパティ-共有タブが表示されるので「詳細な共有」を選択する。 3. 詳細な共有ウィンドウが表示されるので「このフォルダーを共有する」にチェックを入れ「共有名」に任意の名称

を入力、その後「アクセス許可」をクリック。 4. 先ほど入力した共有名のアクセス許可ウィンドウが表示されるのでアクセス許可欄の「フルコントロール」に

チェックを入れる

チェックを入れる

チェックを入れる

適当な共有名を入力

Page 20: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(4)-ファイルのドラッグ&ドロップ時の警告

共有フォルダに対し、測定用のダミーファイルをドラッグ&ドロップすると警告が表示される。

– 測定を実施する際に、マウス操作によるファイルのドラッグ&ドロップ時の操作で警告が表示されることがある。そのため、事前に警告の表示を回避する設定をする。

– インターネットオプションでセキュリティタブから信頼済みサイトにネットワークドライブレター、例えば、割り当てたネットワークドライブがZドライブであれば「Z:」もしくは「file://Infiniband HCAに割り当てたIPアドレス」を入した後、Windows Server 2012を再起動する。

信頼済みサイトにファイル転送先、もしくはファイル転送元のサイトを登録する。 file://IPアドレス

信頼済みサイトを選択

Page 21: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(1)

1. SMB Directのファイル転送に利用するダミーファイルを作成する Windowsでは、任意のサイズのダミーファイルを作成するに当たって、Linuxのtouchコマンドのよ

うなコマンドがないが、代わりに「ディスクの管理」からVHDファイルを適当なサイズ作成することで、ダミーデータとする。

RamDiskのドライブを指定する

測定に応じたファイルサイズを作成する。マルチチャネルに考慮する測定をする場合は、数GBのファイルを複数作るのが良い

容量固定を指定する

ダミーファイルとして作成されたファイルは、hoge.vhd等になっているが、vhdのままだと何かの拍子にティスクとしてマウントされてしまうコトがあるため、拡張子をアプリケーションに関連づけられていないものに変更しておくと良い。 また、1つファイルを作成したら、後はExplorer上で、当該ファイルのコピー&ペーストを繰り返すと、短時間でファイルを作成することができる。

Page 22: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(2)

1. パフォーマンスモニターの測定項目を選択する 測定するに当たっては、Windows標準のツールや操作時に表示されるGUI等、いくつかの方法で測定

できる。今回は、計測にパフォーマンスモニターを利用する。実際にファイル転送の操作を実施する際には、ファイルコピーのダイアログが表示され、そちらにリアルタイムでファイル転送速度も表示されるので併せて参考とする。

マウスカーソルを円付近の部分にもっていくと、画面右側に検索アイコンが表示される

マウスカーソルを円付近の部分にもっていくと「スタート」と書かれたポップアップが表示される。 そこで右クリックし、表示されたコンテクストメニューから検索を選択

検索入力ボックスに「ぱ」と入力すると、自動的に「ぱ」又は「パ」の付くアプリが検索される

Page 23: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(3)

1. パフォーマンスモニターの測定項目を選択する 測定するに当たって、多数あるパフォーマンスモニターの項目を選択する。今回は転送速度を見るた

め、Read/sec及びWrite/secのやAvg Read/secやAvg Read/Writeと言った項目のみを選択する。 なお、RDMA有効の場合と無効の場合で項目が異なるため注意。今回は、両方を選択しておく。

1. パフォーマンスモニターが起動したら、左ペインの「パフォーマンス」→「モニター ツール」→「パフォーマンス モニター」を選択し、画面中央付近のパフォーマンスモニターの表示形式を「レポート」にする

2. の緑の十字ボタンをクリックし、カウンターの追加からSMB Direct Connectionの下向きのアイコンをクリック。

パフォーマンスモニターの表示形式を変更するには、ここにマウスでフォーカスを当てて、Ctrl+gを2回でも変更可能

分類が多数あるので、SMB~の分類が見えるまで、下にスクロールさせる

赤枠線内をクリックすると、さらに詳細な測定項目の一覧が表示される。

Page 24: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(4)

1. パフォーマンスモニターの測定項目を選択する SMB Direct ConnectionとSMB Server Sessionから以下の項目を選択する。

1. SMB Direct Connectionから「Bytes RDMA Read/sec」「Bytes RDMA Write/sec」を選択する。なお、選択したオブジェクトのインスタンスは、「_Total」、「{IPアドレス:445 -> IPアドレス:ポート}」を2つ選択する。

2. SMB Server Connectionから「Avg. Bytes/Read」と「Avg. Bytes/Write」をそれぞれ選択する。なお、選択したオブジェクトのインスタンスは、「_Total」を選択する、

最後に「追加」を忘れずに

IPアドレスは、Infiniband HCAに付与したIPアドレスで、ポートは自動で割り当てられる Multichannelは、RDMA対応HCAあたり2つなので、2つ表示されている

Server SessionsのRead/Writeは、SMB接続1つのセッション当たりの数値だと思われる RDMAを無効にすると、同時にMultichannelも無効になるため、RDMA無効の際の測定は、当該項目で行う

Page 25: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(5)

1. 選択されたパフォーマンスモニターの測定項目を確認する SMB Diriect測定準備(4)までで設定した項目が設定されているか確認する。 特にSMB Direct Connectionにおいて「Bytes RDMA Read/sec」「Bytes RDMA Write/sec」を選択し、項目の追加を

行っても、パフォーマンスモニター上に何も表示されない場合には、RDMAが有効になっていない可能性が高いため、もう一度、PowerShell上で設定を確認する。

RDMAが有効になっていない(≓Multichannelが有効になっていない)場合は、「_Total」、「{IPアドレス:445 -> IPアドレス:ポート}」を2つ選択が、選択したオブジェクトのインスタンスに表示されない。

Page 26: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定準備(6)

1. 電源オプションを確認し、バランス(推奨)から高パフォーマンスに変更する 測定前に電源オプションを確認する。Windows Server 2012インストール直後、特に電源オプションを変更していない

場合、デフォルトで「バランス(推奨)」になっている。この設定の場合、CPUの各コアがかなり低い周波数で動作する挙動を示す。

そのため、測定前に電源オプションを「バランス(推奨)」から「高パフォーマンス」に変更する。電源オプションを変更するとCPUの周波数が切り替えることに注目する。

マウスカーソルを円付近の部分にもっていくと「スタート」と書かれたポップアップが表示される。 そこで右クリックし、表示されたコンテクストメニューから電源オプションを選択

最大速度3.30GHzに対し、現在速度が1.55GHzになっている

電源オプションを「高パフォーマンス」に変更

最大速度3.30GHzに対し、現在速度が3.07GHzと最高周波数近くになっている

Page 27: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(5)-その他の測定ツールについて1

パフォーマンスモニター以外にも測定に参考となるツールやGUIがある – ファイルコピーダイアログ

ファイルコピーダイアログは、おなじみの画面で、Explorer上でファイルのコピーや移動を行った場合に、ダイアログウィンドウが表示され、残り時間や進行状況のプログレスバーが表示される。Windows Server 2012では、残り時間と同時にグラフィカルな秒間の転送速度が表示されるようになった。

– タスクマネージャー こちらも馴染みが深い画面で、CPUやメモリ、ネットワークの利用率が示される。今回、RDMAを利用したSMB

Direct転送では、CPUオフロードがあるため、CPUの使用率をみたい場合、こちらの視覚的にわかりやすい。また、RDMAが有効である場合、ファイルにコピー時にネットワークの利用率は僅かにしか変動せず、RDMAを無効にした場合に、大きく変化することに注目する際に利用する。

CPUは、全体利用率からスレッドごとの利用率に表示を変更することが可能 1件のコピー時のダイアログ、残り時

間と現在の転送速度(1.65GB/sec)が表示されている

1件のコピーが終わる前に、ドラッグ&ドロップを繰り返し、コピー処理を並列で実行した場合のダイアログ、1件ごとのコピー処理の残り時間や現在の転送速度(合計2.6GB/sec)が表示されている

Page 28: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

補足(5)-その他の測定ツールについて2

パフォーマンスモニター以外にも測定に参考となるツールやGUIがある – ioMeter

Windowsで利用できる、IOPSやスループットを測定できるツール。測定時におけるデータサイズ、Read/Writeの割合、スレッド数、利用するネットワーク等を細かく指定できるため、サイジングの参考に利用される。

– CrystalDiskMark コンシューマストレージ製品でよく利用されるベンチマークツール。とりあえずSSDやHDDを買ったら回してみる

系のツール。複数同時起動ができるため、複数起動して、同時に実行すると並列コピー処理を再現できる。

IOPS表示(32KB、R75%/W25%)時

スループット表示(32KB、R75%/W25%)時

6多重起動、シーケンシャル時は、RDMA Read/Writeで3GB/sec越え

Page 29: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

SMB Diriect測定の実施計画

1. SMB Directによるファイル転送の測定実施計画 – 測定の実施は、以下のパターンを実施する ib_read_bw/ib_write_bwの測定

RDMAが有効な状態での測定

1. SMB Server上の共有ディレクトリからファイルをSMB Clientにコピーする – 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

2. SMB Client からSMB Server上の共有ディレクトリへファイルをコピーする

– 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

RDMAが無効な状態での測定

1. SMB Server上の共有ディレクトリからファイルをSMB Clientにコピーする – 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

2. SMB Client からSMB Server上の共有ディレクトリへファイルをコピーする

– 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

※単一処理と並列処理の違いは以下のとおり。 1つのファイルを1回のドラッグ&ドロップでコピーすると単一処理 4つのファイルを1回のドラッグ&ドロップでコピーすると単一処理 4つのファイルを4回のドラッグ&ドロップでコピーすると並列処理

Page 30: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

ibhack02当日の測定内容

1. SMB Directによるファイル転送の測定実施計画 – 測定の実施は、以下のパターンを実施する ib_read_bw/ib_write_bwの測定

RDMAが有効な状態での測定

1. SMB Server上の共有ディレクトリからファイルをSMB Clientにコピーする – 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

2. SMB Client からSMB Server上の共有ディレクトリへファイルをコピーする

– 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

RDMAが無効な状態での測定

1. SMB Server上の共有ディレクトリからファイルをSMB Clientにコピーする – 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

2. SMB Client からSMB Server上の共有ディレクトリへファイルをコピーする

– 単一処理でファイルをコピーする – 並列処理でファイルをコピーする

※単一処理と並列処理の違いは以下のとおり。 1つのファイルを1回のドラッグ&ドロップでコピーすると単一処理 4つのファイルを1回のドラッグ&ドロップでコピーすると単一処理 4つのファイルを4回のドラッグ&ドロップでコピーすると並列処理

Page 31: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

Ib_read_bwの測定結果

コメント – チューニング等を一切していないデフォルト状態でib_read_bwの実施をした結果、パケットサイズ

が4KB以降では、おおよそ6GB/sec(48Gbps)の表示。実効レート付近に近い値となっている。ib_read_bwやib_write_bwは、測定の意味合い的にはiperfやnetperfに近しいツール。

– TCP/IPにて一度、クライアント側からホスト側のサーバープログラムに対しアクセスし、その後、Infinibandの通信にてバンド幅の測定を行っている。

Page 32: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

RDMA有効(単一のコピー処理)

コメント – 1.6GB/sec(12.8Gbps)ほどの転送速度、ib_read_bwの実測値を事前に見ているため、拍子抜けして

しまった。実は、この時点では並列処理でのコピー処理を実施する予定はなく、この後、いくつか検討をした結果、並列でのコピー処理では、転送速度が向上するのではないか?との仮説に基づいて以後の測定を実施することになった。

Page 33: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

RDMA有効(並列のコピー処理)

コメント – 並列でのコピー処理では、転送速度が向上するのではないか?との仮説に基づいて以後の測定を実施、

仮説どおり、スループットは3.3GB/sec(26Gbps)まで向上した – iometerの処理スレッド数の増加によるIOPSや転送速度の向上、Las VegasのInterrop 2012での

MellanoxとMicrosoftのSMB Directの報告PDFにあるSMB Diriect処理に対し割り当てスレッド数を最大化することで、スループットが向上すると言った内容にヒントを得た。

Page 34: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

RDMA無効(単一のコピー処理)

コメント – RDMA無効の状態での単一のコピー処理では、1.5GB/sec(12Gbps)と予想していたより転送速度の

落ち込みは見せなかった。 – なお、パフォーマンスモニターの測定項目が、ibhack02当日では、SMB Diriect測定の実施計画での

測定項目とは異なるため参考値となるが、SMB Server Connectionから「Avg. Bytes/Read」と「Avg. Bytes/Write」とそれほど大きく異ならず、コピーダイアログでも同等の数値となっていた。

Page 35: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

RDMA無効(並列のコピー処理)

コメント – RDMA無効の状態での単一のコピー処理では、2.4GB/sec(19.2Gbps) と、こちらも思いの外、ス

ループットが落ちなかった印象。ここまで測定を実施して、SMB Directが劇的にファイル転送のパフォーマンスを向上させるかというと、そうでもないと言う感触を有するに至った。

– なお、こちらも、前ページと同様にパフォーマンスモニターの測定項目が、ibhack02当日では、SMB Diriect測定の実施計画での測定項目とは異なる。

Page 36: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

ibhack02 SMB Direct測定結果まとめ

No RDMA状態 単一/並列 結果(GB/sec) 結果(Gbps) ib_read_bw比較 0 - - - - 5.9GB/sec 1 有効 単一 1.6GB/sec 12.8Gbps 72.9%減 2 無効 単一 1.5.GB/sec 12.0Gbps 74.6%減 3 有効 並列 3.3.GB/sec 26.0Gbps 44.1%減 4 無効 並列 2.4GB/sec 19.2Gbps 59.3%減

結果 – ib_read_bwの結果から想定すると、SMB Directを利用しても最大で、実効レートの56%程度しか利

用できていない(ただし、ibhack02で利用した環境において、システムが利用可能なメモリ容量を大きく加えた場合、大きく結果が向上する可能性はある)。

– また、今回はRamDiskにて測定を行ったが、実際の利用シーン、SASのRAIDやSSDを併用した階層構造ストレージ等の利用を考慮すると、さらに数値はストレージ側の転送速度のボトルネックで低下すると思われ、明らかに帯域に対するストレージ側のボトルネック状態は、依然として変わらないものと思われる。

– ただ、今までSMB/CIFSが1つのNICあたり1つのセッションしか張れず、性能が出なかったことを考えると、RDMA/SMB DirectとMultichannelによる現在値からの性能向上は期待できると考えられる。

Page 37: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

反省点や今後同様の測定を行う際の注意

反省点 – 単一処理と並列処理との違いをよく理解していなかった。 – 並列コピー処理の実行は、簡単なDOSバッチやPowerShellスクリプトを作成する必要があるめ、事

前に準備をしておくべきだった。 – ダミーファイル作成に手間取った、当初サードパーティのツールの利用も検討したが、候補だった

GigaFileCreaterは.NET Frameworkが必要だった。 – 測定値をもう少し細かく取得する方法を検討するべきだった。

注意点

– RamDiskにメモリをギリギリまで割り当てて実施したが、後日、コピー処理においてバッファリングするメモリは足りているのか?との疑問からシステムが利用可能なメモリを増やしたところ、スループットがかなり向上した。

– Windows Server 2012の電源のオプションがデフォルトで「バランス(推奨)」となっており、測定を開始した直後、RDMA有効状態の単一のコピー処理でパフォーマンスが1.1GB/sec(8.8Gbps)程度しか出ていなかった。電源オプションで「高パフォーマンス」を選択したところ、スライドにある数値までパフォーマンスが向上した。

– 参考までにCrystalDiskMarkでも測定を行ったが、CrystalDiskMarkは、パフォーマンスモニターやCrystalDiskMarkの実行結果の数値から単一のコピー処理での測定結果とほぼ同じになる。

– StarWind RAM Diskは、再起動すると自動でマウントされるが、その際にFAT32でマウントされてしまう。NTFSに固定するオプションは見つからなかったため、Windows Server 2012を再起動する際には、その都度「ディスクの管理」でNTFSに再フォーマットすること。

Page 38: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

総括

SMB Directは、並列のファイル処理において最も効果を発揮する。

SMB Directは、RDMAによるCPUのオフロードよりも、処理におけるステップ数の削減のほうが意味があると想定される(Xeon E5-2960では、30%程度のCPU使用率だったが、Core i5では、100%違いCPU使用率となったため、CPUの処理性能はそこそこ必要に思える)。

SMB Directは、現在のSMB/CIFSに比べ一定の性能向上が認められる。

Infinibandの帯域幅を使い切るには、もっと実装の改良が必要。

Infinibandの符号化変更は性能向上に一定の効果があると想定される(ibhack02ではFDR、当該資料作成時に自宅のQDR環境で多少比較を取ったが、40Gbpsと56Gbpsの数値の割合よりも性能に影響があった)。

それでも手軽に2、3秒でDVDが1枚転送できる、数GB/secの転送レートを有するストレージ環境のインフラを構築できる手軽さは魅力的!

だからやっぱりInfinibandスゲェ!!・・・ ・・・ ・・・と思います。

Page 39: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

謝辞

Infiniband Hack-a-thon [02]の実施に当たって、協力を頂きました皆様方にこの場を借りて御礼申し上げます。

株式会社アルティマ様 – Infiniband関連機材、FDR Infiniband HCAやFDRの36ポートInfinibandス

イッチ!等一式をご提供いただきました。

国際産業技術株式会社様 – 当日の会場やInfiniband機材以外のサーバーやモニター、キーボード、電源

等をご提供いただきました。

主催、当日スタッフ及び参加者の皆様 – Infiniband Hack-a-thonに向けての各種調整、周知・宣伝、ネタ出しや参

考資料のご呈示、参加者の誘導や会場設営と現状復帰等をいただきました。

Page 40: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

おわり

THANK YOU

Page 41: Infiniband hack-a-thon #2 Windows班まとめ資料 Windows Server 2012 + FDR InfinibandでSMB Direct (SMB over RDMA)を試してみた

おまけ

Infiniband Hack-a-thon [02]の振り返りと今後 – 反省点等を踏まえて、もう少し測定数値等をちゃんと取るよ!(気が向いたら) – そしたら、この資料がひっそり更新されているかもね?! – でも、うちの環境はQDRの環境なんだよね・・・

Coming Soon?