Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
自宅鯖はいいぞ 〜InfiniBand編〜
190ikp
June 27, 2021
How-to & DIY
0
330
自宅鯖はいいぞ 〜InfiniBand編〜
KCS交流会 2021/06/26 LT
190ikp
June 27, 2021
Tweet
Share
Other Decks in How-to & DIY
See All in How-to & DIY
仮想通貨アラート(物理)を作ってみた
maepu
0
340
上司のご機嫌を伺ってみるIoT #iotlt #oura
n0bisuke2
0
340
フィクサ・bigtreeのニュースワンスター概要書
bigtree
0
230
IoT Experiments: LED Switching
stwn
0
150
相性ピッタリ!reTerminalとNode-REDのステキな関係
ueponx
0
270
家のいろいろな数値を計測する
kishikawakatsumi
2
960
obnizのカメラをNode.jsで使ってみる #iotlt #obniz
n0bisuke2
0
280
micro:bitでオタマトーン
keicafeblack
0
390
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
1k
TOMARIGI
bigtree
1
1.8k
Test your architecture with Archunit
thirion
1
280
文系のシステム開発理系のコーディング
shirayanagiryuji
0
220
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
268
11k
Happy Clients
brianwarren
89
5.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
19
1.4k
Designing the Hi-DPI Web
ddemaree
272
32k
YesSQL, Process and Tooling at Scale
rocio
157
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.1k
Adopting Sorbet at Scale
ufuk
63
7.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Writing Fast Ruby
sferik
612
57k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
11k
The World Runs on Bad Software
bkeepers
PRO
56
5.2k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
125
8.5k
Transcript
自宅鯖はいいぞ ~InfiniBand編~
これまでの自宅鯖
これまでの自宅鯖 1台目 • ファイルサーバがほしくなった -> ファイルサーバを建てた 2台目 • デスクトップにLinuxのマシンを使っていた →
気軽にMHW:Iをやりたい → メインをWindowsにするために開発環境用のサーバを建てることに (ファイルサーバはスペックが非常に低かったので ...)
• 1台目のストレージを2台目で使いたいけどNWが貧弱 ( 1GbE x2 bonding ) • 10GbEは導入の敷居が高い ◦
10GbEのL3スイッチは高価 ◦ 10GBASE-TはNICの価格と発熱が ... ◦ 10GBASE-SRならなんとか...(中古市場はあまりない) • 10GbEは遅い ◦ 単純計算で1.25GB/s ◦ SATA SSDでRAID組むとネットワークがボトルネックに ◦ 台数によってはHDDでのRAIDでもボトルネックになる →そんなあなたにInfiniBand これまでの自宅鯖
What is InfiniBand ?
“InfiniBand 検索” “InfiniBand(インフィニバンド)とは、非常に高い RAS(信頼性・可用性・保守性)を持つ基幹系・ HPC系 のサーバ/クラスター用高速I/Oバスアーキテクチャ及びインターコネクトのこと。システム間インターコ ネクト機構としては、RAS機能の他、他機構に比較して、 低レイテンシである点も特徴である。” (Wikipediaより) •
HPC分野・DC内のバックボーンでは低レイテンシであることが非常に重要 • InfiniBandは仕組み上,Ethernetよりも低いレイテンシを実現可能 → そのような分野で使われるように
なんで低レイテンシなの? (データ転送編) Ethernet 送信側アプリケーションのメモリ空間 → 送信側のカーネル上のメモリ空間 → 送信側のNICのバッファ → 受信側のNICのバッファ
→ 受信側のカーネル上のメモリ空間 → 受信側アプリケーションのメモリ空間 InfiniBand (RDMA) 送信側アプリケーションのメモリ空間 → 受信側アプリケーションのメモリ空間 ユーザメモリ空間を直接読み書きできる! ( RDMA: Remote Data Memory Access )
なんで低レイテンシなの? (ネットワーク制御編) Ethernet 通信相手を識別するID MACアドレス … 48bit IPアドレス … 32bit
(IPv4) / 128bit (IPv6) - 非常に大きい経路テーブル - CPUのキャッシュに載らない - 多層の階層型にせざるを得ない → レイテンシの増大 InfiniBand 通信相手を識別するID LID: Local Identifier … 16bit - 小さい経路テーブル - CPUのキャッシュに全部載せられる - 単層のテーブルにできる → レイテンシを抑えられる
自宅鯖におけるInfiniBand
なぜ自宅鯖でInfiniBand? • (中古なら)転送帯域に対して安い ◦ 主に使用されるのは HPC用途 ▪ 最新のものを一度に大量に使う ▪ 今の主流はEDR
(100Gbps) / HDR (200Gbps) ▪ 中古市場には旧規格のものが大量に流れる → 投げ売り状態に ◦ QDR (40Gbps) / FDR (56Gbps) の2ポートHCAで8000~10000円程度 (ヤフオク,ebay,etc...) ▪ 10GbE NICだと1ポートですら厳しい ◦ スイッチもそこそこ安い ▪ アンマネージドだと安ければ 2,3万 / マネージドでも10万切るくらいのものがある • アンマネージドでも HCA側のサブネットマネージャで制御すれば問題ない • TCP / IPを扱える ◦ IPoIB: IP over InfiniBand ▪ Internet Protocol (L3) をエミュレート ▪ テストしたところ TCPでは非常にパフォーマンスが落ちる場合があるので一癖ある ▪ あくまでL2ではInfiniBandなのでEthernetには接続できない(対向も HCAである必要がある)
自宅鯖に最適なHCA Mellanox ConnectX-3 VPI • OEMのものでもOK(Oracle,Dell,HPなど各社から出ている) ◦ Intel(QLogic)は別モノなので注意 • FDRまで対応
• Windows10に対応しているHCAの中で最安 ◦ 宅内オールInfiniBand化が可能(macOS?知らない子ですね ...) • VPI: Virtual Protocol Interconnect に対応 ◦ IBモード → ETHモードに変更できる ◦ L2レベルでEthernet対応の40GbE / 56GbE NICとして使用可能 ◦ コネクタもEthernet互換(QSFP+)なのでL1レベルで実質ただの NIC ◦ IPoIBと違ってパフォーマンス落ちない ◦ レイテンシはIBモードに劣る(当たり前)
実際にやってみた
やってみた 今回用意したもの • InfiniBand FDRのカード x2 (MCX354A-FCBT) ◦ カードあたり2ポート ◦
ヤフオクで1枚8500円くらい • 56Gbps対応ケーブル(AOC x1,DAC x1) ◦ AOCケーブルは1本6000円程度 ◦ DACケーブルは借りました • 鯖 x2 ◦ PCIの空スロット ◦ PCIe 3.0 x8 以上が必要 • やる気(一番大事)
セットアップ(ハードウェア編) 1. PCIスロットにHCAを設置 2. ケーブルを挿し込む 以上
セットアップ(ソフトウェア編) MellanoxのサイトからOFED (Open Fabric Enterprise Distribution) をダウンロード https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed • InfiniBand用ドライバ(という理解でOK)
• ConnectX-3以前はLTS版 • ConnectX-4以降は通常版 • 一応OSS版のOFEDもあるが... ◦ MLNX_OFEDのほうが安定している印象 ◦ おすすめはしない マニュアルどおりにインストールしたら • systemctl enable --now openibd.service • systemctl start opensmd.service これで終わり
疎通確認してみる 状態確認: ibstat, ibstatus, ibv_devinfo, etc…(本当に色々ある) 疎通確認: ibping
転送速度をテストしてみる の前に... InfiniBandの転送方式(サービスタイプ)は 4つ - Connected (1:1) - RC: Reliable
Connected (← TCPのイメージ) - UC: Unreliable Connected - Datagram (1:n) - RD: Reliable Datagram (← ユーザーランドには提供されていない ) - UD: Unreliable Datagram (← UDPのイメージ) 実運用で主に使用されるのは RCとUD 今回はRCのベンチマークを取ってみる
ベンチマーク RDMA RC TCP
ありがとうございました