青空に街路の桜満開・花吹雪が映える週末が到来
みなさま、如何お過ごしでしょうか。かえるのクーの助手の「井戸中 聖」でございます。
ところにり雨ですが、桜がみごろです。
クイズ:この写真はどこなのか。特定せよ!。(c)ベッキー
正解者には黄色のスターを100個プレゼントします。もちろん1日1個です。(あ、このブログにコメント欄ないんだった。。。)
(みなさん桜をみて気持ちを落ち着けてくださいませ。)
InfiniBandの接続実験をします
Ethernetモードでの接続実験
ConnectX-3を2台のPCにセットしてEthernetモードにて 40GbEの接続を行います。
InfiniBandスイッチを介さず、ケーブル直結で接続・通信できることを確認します。
通信のスループットと遅延(レイテンシ)の測定を行います。
予想
多分つながると思います。ここでNGなら門前払い状態です。
ケーブル接続実施(直結)
カードはロープロファイル版のブラケットを外さないとささらないので、固定していません。ケーブルを接続してのテストになるので、なんからの方法でボードを固定します。
わたくしは、そのあたりにあったスチールラックのコーナ金具とボルト・ナットで(仮)固定しました。左右にはまったく、上下にもほとんど動かないように思いのほかうまく固定できました。(ナットの錆ぐあいがインスタ映えしそうです)
コネクタは深くまで差し込み、ケーブルも太いので、ボードコネクタ側にそれなりの力がかかります。固定状態でないとケーブルを抜き差ししたときやテスト中であってもボードが半抜けになりコネクタ部でショートしかねません。場合によってはマザーボード側も破損する可能性があるので、必ず固定します。
固定できているといっても仮固定なので、ケーブル抜き差しは本固定をするまではPCの電源を落としてから行い、実験中はPCの移動(位置微調整)やケーブルの移動(じゃまだからケーブルの途中をすこしらすなど)を行わないことをお勧めします。(InfiniBand初心者マークなので慎重勇者運転でいいんです。レディー、パーフェクトリー!)
設定変更はインストール済のツールコマンドで実施します。
ボードの認識確認
2枚ざししているPCでボードの確認をします。
C:\Program Files\Mellanox\WinMFT>mst status -v
MST devices:
------------
mt4099_pci_cr0 bus:dev.fn=17:00.0
mt4099_pciconf0 bus:dev.fn=17:00.0
mt4099_pci_cr1 bus:dev.fn=65:00.0
mt4099_pciconf1 bus:dev.fn=65:00.0
4行でますが、上2行は1枚目(0)、下2行は2枚目(1)を示しています。
例えば上2行は同じボードを表し、コマンドで指定するデバイスとしてどちらの表記でもよいようです。(Mellanox社のコマンドヘルプの実行例では _pciconf0、の方の例が載っていますが、一般的には _pci_cr0 の方を使用することが多いようです。)
2行でる理由や使い分ける場合があるのかについては、マニュアルを読んでいないのでまだわかっていません。(ずっとわからないままかも。。。)
このMST devicesの名称はコマンドでデバイスの指定をするとき使うので重要です。
Ethernetモードへの変更
mt4099_pci_cr0、mt4099_pci_cr1のデバイスの動作モード(リンクタイプ)をEthernetに変更します。
コマンドプロンプトを管理者モードで起動し、設定変更コマンドを実行します。
なお、コマンド中の s は set の意味です。
C:\Program Files\Mellanox\WinMFT>mlxconfig -d mt4099_pci_cr0 s LINK_TYPE_P1=ETH
Device #1:
----------
Device type: ConnectX3
Device: mt4099_pci_cr0
Configurations: Next Boot New
LINK_TYPE_P1 VPI(3) ETH(2)
Apply new Configuration? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.
C:\Program Files\Mellanox\WinMFT>mlxconfig -d mt4099_pci_cr1 s LINK_TYPE_P1=ETH指示にしたがいリブートします。もう一方のPCのカードのモードも変更します。(記載省略)
Device #1:
----------
Device type: ConnectX3
Device: mt4099_pci_cr1
Configurations: Next Boot New
LINK_TYPE_P1 VPI(3) ETH(2)
Apply new Configuration? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.
物理的な接続確認
TCP/IPとしての設定
IPアドレスを固定値で設定します。(このあたりは通常のEthernet NICと同じです)
192.168.100.1と192.168.100.2にしてみました。デフォルトゲートウェイはプライベートネットワークにするために仮にですが相手方のIPアドレスを設定しています。
ネットワークの名称を 40GbE#1 にしました。
ネットワーク2がプライベートネットワークでインターネットアクセスなしで設定されています。
JumboPacketは詳細設定タブで設定します。 |
ここまでの設定内容が反映を確認します。 |
InformationのLink Speedが 40.0 Gbps/Full duplex に、Networks Status が Connecttedになっていることに注目ください。
pingでの疎通確認
65500バイトの折り返し(ラウンド・トリップ)にて確認しています。上側の末尾100.1と100.2の通信がConnectX-3です。下側はLANですが、間違って1000Baseの経路ではなく、100Baseの経路を通っています。Windowsのpingは1ms以下が計測できないので、応答については改めて測定します。
スループットの測定
概ね10Gbps で通信できています。
クライアント役のPCが遅く、PCIeが 5.0 Gpbs (Gen 2) X4 接続でMax20Gbpsとまりなので、実行速度で10Gbpsでていれば成功といえると評価します。
レイテンシ計測・またはラウンドトリップ計測については、Linuxだともっと精度を上げて確認できると思うのでInfiniBand Linux接続編までお待ちください。
ディスク(共有)の速度計測
1台(Windows10 Pro)をサーバ役に、もう1台をクライアント(Windows10 Home)役にして計測します。サーバ役側のPCはこの冬に苦節5年以上のおこずかい貯金で買った渾身の1台です。(全部一度に新調したのは10年ぶりくらいです。)なお、ストレージはM2 NVMe SSD(PG3VNF CSSD-M2B1TPG3VNF)で爆速です。Intelマシンなので PCIe Gen.4 ではなく Gen.3で使用していますが、それでも激速です。そして激熱です。もちろん放熱対策は万全です。余計なお世話ですが、M2 NVMe SSDをお使いの方で放熱シンク&ファンつけていない方は今一度、使用中の発熱量を確認の上、放熱対策をご検討ください。高温のまま使用するとサーマルスロットルで性能はでないし、寿命が極端に短くなります。(ちなみにわたくしは静音空冷教の信者ですので、「静かに確実に冷やす」が信条です。)
サーバ役のローカルアクセスは以下のとおりです。
クライアント役のPCのローカルディスクは以下のとおりです。
5年前のSSDのなので、ローカルディスクとしては妥当な数字です。
クライアントから40GbEでサーバアクセスすると以下のとおりです。
Readでみると 通信としては12.788Gbps以上は帯域使用していることになります。
クライアントからすると40GbEネット経由のほうがローカルディスクより2.8倍くらい速いです。ローカルディスクが速くないマシンからのディスクアクセスには十分な効果があります。なおこの接続では、サーバ側がGen.3 X8 で、クライアント側がGen.2 X4モードでボード接続されていますので、実質ボードの性能の半分以下でしか通信していません。余力はまだあります。
クライアント役からの1GBaseLANでのサーバアクセスは以下です。
この計測ではちゃんと1GBaseだけの経路で計測しています。117.88×8=942.88Mbpsなので、1GBaseLANとしてはとても頑張っていると思います。が、、、クライアントローカルディスクの約21%程度のスピードです。
結論:雫ちゃんはとてもかわいいです。(お約束)
ここまでのプチまとめ
おこずかいの範疇だし、このブログ更新遅いし、自分でやってみよう。という方へ最小限の情報をまとめます。
・ボードは Mellanox社製 ConnectX-3 VPI MCX-353A-FCBT (1ポート)またはMCX354A-FCBT (2ポート)または、そのOEM品を探す。InfiniBandとEthernet両方やってみたい人は必ずVPI(両方できる)かどうか確認する。ConnectX-3 Pro VPI MCX353A-FCCT / MCX354A-FCBT は中古でも高めだが、同等くらい安いのを見つけたらそれでOK。もっと速いのが欲しければ、ConnectX-4まで待つべき。そしてケーブルも違う。ConnectX-4はまだ中古市場にありあまってないので、たいへん高い!そして、一般のPCで扱うには消費電力と熱対策が難しすぎる。なので結局ConnectX-3 VPIが順当。(むしろ現行PCでも空いたPCIeポートでGen.3 X8として使用できるのは少ない)
・ケーブルはMellanox社製 FDR銅線DACケーブル (Direct Attach Copper Cable)56Gb/s
3m : MC2207128-003 、2m :MC2207130-002 またはその完全互換品を探す。
・プロファイルは可能であればFullがよいが、ロープロファイルでもなんとかする。(中古ではロープロファイル品が潤沢で価格も安く、入手しやすい)
・カードの個別冷却はテスト時でも必須。なにもしなくてもヒートシンクが超熱い。余っている8cmファンでフロントサイド側から近接送風する。新たにファンを探す場合は、風量がそこそこあって、静音タイプのものを探す。(ファンは自分もこれから必要なので、たぶん記事ネタにします)
・テスト時、カードの仮固定は必須。
・ファームウェアは必ずアップデートする。
・OEM品は安いが、ファームウェアはMellanox社製のものは使えず、OEM品用のものを使う必要がある。
・ケーブル直結で10GBps超!の接続可能。
お次はモード変更して本命のInfiniBandだ!
(Ethernetではなく)InfiniBandとしての動作確認は、
・ケーブルが56Gbps対応のものでない。(手元のものは40Gbps対応のようです)
・InfiniBandのマネージド・スイッチがないので、ソフトでSM(サブネット・マネージャ)という機能を動かさないといけない(ようです)。
という困難もあります。
次は IBモード接続にチャレンジ(Windows編)にて。乞うご期待。
1本のケーブルでは、できる実験に限りがあります。ちゃんとしたケーブルが必要です。基本的な接続は確認できたので、必要な部品をもう少しそろえます。
また、デュアルポートのConnectX-3の確認・実験もしたくなってきました。中古市場を検索します。(目下、おこずかいの前借を作戦中)
あ!クリックしてもーた
金策もまだなのに。
ケーブル(MC2207128-003)はMellanoxの本家イスラエルから。デュアルポートのConnectX-3(MCX354A-FCBT)はアメリカから、1か月程度で船便(または航空便?)で到着するようです。ちなみにebayです。
調子でてきたのに、明日からまた出張です。わたくしの居住地域は幸い、過疎だからか結界だからか、神仏守護だから、アルコール消毒だからかわかりませんが、流行のウィルス感染がゼロです。子供たちも先週から元気に学校に行っています。流行地域への出張はやっぱり気が引けます。。。(感染したらたぶんリアルに***日後に死ぬので。)