0円でできる自宅InfiniBandプログラム

3,876 views

Published on

InfiniBand Verbs/RDMAプログラムのさわりと、実機が不要なsoftware-based InfiniBand driverの紹介。

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,876
On SlideShare
0
From Embeds
0
Number of Embeds
96
Actions
Shares
0
Downloads
36
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

0円でできる自宅InfiniBandプログラム

  1. 1. 0円でできる自宅InfiniBandプ ログラム 第九回 カーネル/VM探検隊 2013/12/8
  2. 2. 自己紹介 • • • • • 名前:中村 実 所属:武蔵中原周辺のIT企業 Mail: nminoru@nminoru.jp Twitter:@nminoru_jp Web:http://www.nminoru.jp/~nminoru/ 今日はInfiniBand(RDMA)プログラミングのさ わりと、私が開発中のsoftware-based InfiniBand driverの紹介をします。
  3. 3. InfiniBandとは? • 高帯域・低遅延のネットワーク装置 – 高帯域 • 56Gbps(FDR)×2、Point-to-Pointの輻輳制御 – 低遅延 • 1スイッチレイテンシが2μ秒以下 – コピーゼロ • 無駄なコピーがない! – RDMA (Remote Direct Memory Access)
  4. 4. 誰がInfiniBandを作っているのか? • InfiniBand Trade Association – http://www.infinibandta.org/ • OpenFabrics Alliance – IBのソフトウェアスタックの開発と配布 OpenFabrics Enterprise Distributes(OFED) – https://www.openfabrics.org/ • 装置ベンダー – Mellanox – QLogic → IB部門はIntelに買収 – Xsigo → Oracleに買収
  5. 5. InfiniBandはどこで使われている か? • 用途 – HPC • SC13で公開されたTOP500中207システムで利用 – 金融 • ニューヨーク証券取引所(NYSE)のバックボーン – ストレージ、DB • EMC Isilon IQ、Oracle Exadata – データセンター • さくらインターネット – 自宅サーバ • でも普通のエンジニアには関係なくね?
  6. 6. InfiniBandのプロトコルスタック 名称 用途 Verbs IBの機能を直接使用可能なlow-level API rmdacm Verbsのうちコネクション確立の部分をラップしたAPI。 CMはCommunication Managementの略。 IPoIB IBをIPとして使用(“ib0”、”ib1”、…) MPI Message Passing Interface uDAPL User Direct Access Programming Library(uDAPL) http://www.datcollaborative.org/ iSER iSCSI Extensions for RDMA SRP SCSI RDMA Protocol RDS Reliable Datagram Sockets。UDPソケットとほぼ同じシンタックスのラ イブラリ。現在は標準OFEDから外された。 VMA LD_PRELOADで既存プログラムのソケットインターフェイスを乗っ取 り通信をIB経由に変更する。 https://code.google.com/p/libvma/
  7. 7. Ethernet&IPとの対比 Ethernet IB カード ネットワークカード (NIC) Host Channel Adaptor(HCA) 固有ID MACアドレス(48ビッ ト) GUID(64ビット) ネットワークアド レス IPアドレス Local Identifier(LID) (16ビッ ト) (¾の49,152個まで利用可能) 通信インスタンス ソケット Queue Pair(QP) インスタンスの区 ポート番号(16ビット) QP番号(24ビット) • EthernetがMACアドレスを使ってL2スイッチを行う。他のノー 別 ドの存在はブロードキャストで調べる。 • IBはSubnet Manager(SM)がネットワーク初期化時にHCAの各 ポートにLIDを割り付ける。L2スイッチはLIDを使って行う。 SMはMADと呼ばれる特殊なプロトコルを使ってネットワーク トポロジーの解析、LIDの割り当て、ルーティングテーブルの 配布を行う。
  8. 8. InfiniBandプログラミングに必要な もの • 標準的なLinuxディストリ • パッケージ – rdma – libibverbs – libibverbs-devel • ヘッダーファイル – #include <infiniband/verbs.h> • ライブラリリンク – -libverbs
  9. 9. Verbsの通信モデル • Services – RC(XRC)、RD、UC、UDの4(+1)種類 • Reliable(再送制御あり)、Unreliable(なし) • Connection(送信順序あり)、Datagram(なし) – RCはTCP、UDはUDに相当 • ただしconnectionでもメッセージ境界がある – RDとUCは使われない • Operations – – – – SEND-RECV RDMA WRITE RDMA READ Atomic operations
  10. 10. Verbsの通信モデル(cont.) • Queue Pair(QP) – 内部にSend Queue(SQ)とReceive Queue(RQ) – ibv_create_qpで作成 QP QP ibv_post_send SQ(Send Queue) SQ ibv_post_recv RQ(Send Queue) RQ
  11. 11. SEND-RECV • Receiverあらかじめ登録した受信バッファへ 転送 ibv_post_send QP SQ RQ QP SQ RQ ibv_post_recv • 制限 – Senderが送信する前にReceiverが受信バッファを 登録しないとエラー。 – Senderが送信したメッセージよりも受信バッファ が短いとエラー
  12. 12. SEND-RECV(cont.) • メモリをどう扱うか? – ユーザプログラムがmallocやmmapしたメモリ をibv_reg_mrで登録 – ibv_reg_mrで登録したメモリはカーネルがpin して仮想メモリ→物理メモリのマップを固定 化 • 制限 – プロセスを跨いだInfiniBandリソースの共有は できない。
  13. 13. SEND-RECV(cont.) • どのようにして完了を検知するか? – Completion Queue(CQ) • ibv_poll_cqでWork Completion(WC)が取り出せる – Completion Channel • CQにWCが到着したことをselect/pollなどで検知で きる – メモリ管理 • RDMA WRITEでリモートのフラグを書き換えればい い! QP SQ CQ RQ CQ
  14. 14. RDMA WRITE • リモートのメモリアドレスを指定して WRITE – リモート側は自分のメモリがWRITEされたこ とを検知できない ibv_post_send QP SQ RQ QP SQ RQ Remote Memory
  15. 15. RDMA WRITE with Immediate • RDMA WRITEと同じだが書込み完了をRQを 使って通知する – 4バイトの即値も一緒に送れる ibv_post_send QP SQ RQ QP SQ RQ Remote Memory
  16. 16. RDMA READ • リモートのメモリアドレスを指定して READ – リモート側は自分のメモリがREADされたこと を検知できない ibv_post_send QP SQ RQ QP Remote Memory SQ RQ
  17. 17. Atomic操作 • リモートのメモリ空間に対して、8バイト 境界に沿う8バイトに対してアトミック操 作が可能。 – Compare-and-Swap – Fetch-and-Add • リモートは操作を受けたことを検知でき ない。 • Fetch-and-Addはリモート側のネイティブ インディアンに従う • 古いメモリの値はローカル側に送り返さ
  18. 18. How much? • 機器のお値段 – – – – 1ポートHCA(97,900 円) 2ポートHCA(153,200円) QSFPケーブル(14,050円) 8ポートスイッチ(288,400円) • InfiniBandプログラムをはじめる最小構成 – 2ポートHCAを1枚+ケーブル1本=167,250円 – 1ポートHCAを2枚+ケーブル1本=209,850円 • 高いわ!!
  19. 19. Pseudo InfiniBand (pib) • 実機ハードが不要の疑似IBドライバ • UDPを使ってIBをエミュレーション • 現状では1ノード内だけで動作 • リンク – http://www.nminoru.jp/~nminoru/network/infini band/pib.html – https://github.com/nminoru/pib
  20. 20. 参考ページ • InfiniBand Trade Association – http://www.infinibandta.org/ – レジストするとIBの仕様書(InfiniBand Architecture Specification Volume 1 Release 1.2.1)がダウンロード可能。 • OpenFabrics Alliance – https://www.openfabrics.org/ – 最新のOFEDがダウンロードできる。 • RDMA Aware Networks Programming User Manual – http://www.mellanox.com/relateddocs/prod_software/RDMA_Aware_Programming_user_manual.pdf – Mellanox社が出しているVerbsとRDMA CM APIのプログラムマ ニュアル • RDMAmojo – http://www.rdmamojo.com/ – Dotan Barak氏の個人ブログ。世界で一番詳しいRMDAプログラム テクニックの初回ページ。manを見るよりはこちらを見た方が よい。

×