SlideShare a Scribd company logo
1 of 20
0円でできる自宅InfiniBandプ
ログラム
第九回 カーネル/VM探検隊
2013/12/8
自己紹介
•
•
•
•
•

名前:中村 実
所属:武蔵中原周辺のIT企業
Mail: nminoru@nminoru.jp
Twitter:@nminoru_jp
Web:http://www.nminoru.jp/~nminoru/

今日はInfiniBand(RDMA)プログラミングのさ
わりと、私が開発中のsoftware-based
InfiniBand driverの紹介をします。
InfiniBandとは?
• 高帯域・低遅延のネットワーク装置
– 高帯域
• 56Gbps(FDR)×2、Point-to-Pointの輻輳制御

– 低遅延
• 1スイッチレイテンシが2μ秒以下

– コピーゼロ
• 無駄なコピーがない!

– RDMA
(Remote Direct Memory Access)
誰が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に買収
InfiniBandはどこで使われている
か?
• 用途
– HPC
• SC13で公開されたTOP500中207システムで利用

– 金融
• ニューヨーク証券取引所(NYSE)のバックボーン

– ストレージ、DB
• EMC Isilon IQ、Oracle Exadata

– データセンター
• さくらインターネット

– 自宅サーバ

• でも普通のエンジニアには関係なくね?
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/
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の割り当て、ルーティングテーブルの
配布を行う。
InfiniBandプログラミングに必要な
もの
• 標準的なLinuxディストリ
• パッケージ
– rdma
– libibverbs
– libibverbs-devel

• ヘッダーファイル
– #include <infiniband/verbs.h>

• ライブラリリンク
– -libverbs
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
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
SEND-RECV
• Receiverあらかじめ登録した受信バッファへ
転送
ibv_post_send

QP

SQ

RQ

QP

SQ

RQ

ibv_post_recv

• 制限
– Senderが送信する前にReceiverが受信バッファを
登録しないとエラー。
– Senderが送信したメッセージよりも受信バッファ
が短いとエラー
SEND-RECV(cont.)
• メモリをどう扱うか?
– ユーザプログラムがmallocやmmapしたメモリ
をibv_reg_mrで登録
– ibv_reg_mrで登録したメモリはカーネルがpin
して仮想メモリ→物理メモリのマップを固定
化

• 制限
– プロセスを跨いだInfiniBandリソースの共有は
できない。
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
RDMA WRITE
• リモートのメモリアドレスを指定して
WRITE
– リモート側は自分のメモリがWRITEされたこ
とを検知できない

ibv_post_send

QP

SQ

RQ

QP

SQ

RQ

Remote
Memory
RDMA WRITE with Immediate
• RDMA WRITEと同じだが書込み完了をRQを
使って通知する
– 4バイトの即値も一緒に送れる

ibv_post_send

QP

SQ

RQ

QP

SQ

RQ

Remote
Memory
RDMA READ
• リモートのメモリアドレスを指定して
READ
– リモート側は自分のメモリがREADされたこと
を検知できない

ibv_post_send

QP

SQ

RQ

QP

Remote
Memory
SQ
RQ
Atomic操作
• リモートのメモリ空間に対して、8バイト
境界に沿う8バイトに対してアトミック操
作が可能。
– Compare-and-Swap
– Fetch-and-Add

• リモートは操作を受けたことを検知でき
ない。
• Fetch-and-Addはリモート側のネイティブ
インディアンに従う
• 古いメモリの値はローカル側に送り返さ
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円

• 高いわ!!
Pseudo InfiniBand (pib)
• 実機ハードが不要の疑似IBドライバ
• UDPを使ってIBをエミュレーション
• 現状では1ノード内だけで動作

• リンク
– http://www.nminoru.jp/~nminoru/network/infini
band/pib.html
– https://github.com/nminoru/pib
参考ページ
• 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を見るよりはこちらを見た方が
よい。

More Related Content

What's hot

LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
 

What's hot (20)

詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
InfiniBand on Debian
InfiniBand on DebianInfiniBand on Debian
InfiniBand on Debian
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラ
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
Cephのベンチマークをしました
CephのベンチマークをしましたCephのベンチマークをしました
Cephのベンチマークをしました
 
自宅インフラの育て方 第2回
自宅インフラの育て方 第2回自宅インフラの育て方 第2回
自宅インフラの育て方 第2回
 

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

[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
wakadannacom
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメ
NIFTY Cloud
 

Similar to 0円でできる自宅InfiniBandプログラム (20)

[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
[20110827 PyConJP 2011 LT]pythonでrdmaを・・・
 
NW-DIY で開拓したい社会
NW-DIY で開拓したい社会NW-DIY で開拓したい社会
NW-DIY で開拓したい社会
 
コンビニマルチコピー機の活用
コンビニマルチコピー機の活用コンビニマルチコピー機の活用
コンビニマルチコピー機の活用
 
SORACOM UG 東海 #1 | SORACOM 紹介
SORACOM UG 東海 #1 | SORACOM 紹介SORACOM UG 東海 #1 | SORACOM 紹介
SORACOM UG 東海 #1 | SORACOM 紹介
 
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
 
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
BIG Raspberry JAM | Raspberry Pi × SORACOM で始めてみよう!簡単 IoT
BIG Raspberry JAM | Raspberry Pi × SORACOM で始めてみよう!簡単 IoTBIG Raspberry JAM | Raspberry Pi × SORACOM で始めてみよう!簡単 IoT
BIG Raspberry JAM | Raspberry Pi × SORACOM で始めてみよう!簡単 IoT
 
ニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメニフティクラウドを使った安定運用のススメ
ニフティクラウドを使った安定運用のススメ
 
20160320 BLE4.2勉強会 MakerLab Nagoya
20160320 BLE4.2勉強会 MakerLab Nagoya20160320 BLE4.2勉強会 MakerLab Nagoya
20160320 BLE4.2勉強会 MakerLab Nagoya
 
SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
SORACOM Funnelで手抜きIoTプラットフォーム #ssmjpSORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
 
VIOPS04: NTTコミュニケーションズのクラウド戦略
VIOPS04: NTTコミュニケーションズのクラウド戦略VIOPS04: NTTコミュニケーションズのクラウド戦略
VIOPS04: NTTコミュニケーションズのクラウド戦略
 
ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森
 
インターネット最前線のゲームインフラを支えるパブリッククラウド
インターネット最前線のゲームインフラを支えるパブリッククラウドインターネット最前線のゲームインフラを支えるパブリッククラウド
インターネット最前線のゲームインフラを支えるパブリッククラウド
 
デバイス内データの安全な保管を考える
デバイス内データの安全な保管を考えるデバイス内データの安全な保管を考える
デバイス内データの安全な保管を考える
 
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
 
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
 
API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM
API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOMAPI meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM
API meet up #12資料:APIでコントロール可能なIoT通信プラットフォームSORACOM
 
FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方
 

More from Minoru Nakamura (7)

Persistent-Memory-Programming-Model
Persistent-Memory-Programming-ModelPersistent-Memory-Programming-Model
Persistent-Memory-Programming-Model
 
Jvm reading-synchronization
Jvm reading-synchronizationJvm reading-synchronization
Jvm reading-synchronization
 
x86-64/Linuxに独自メモリ空間を勝手増設
x86-64/Linuxに独自メモリ空間を勝手増設x86-64/Linuxに独自メモリ空間を勝手増設
x86-64/Linuxに独自メモリ空間を勝手増設
 
x86-64/Linuxに独自メモリ空間を勝手増設
x86-64/Linuxに独自メモリ空間を勝手増設x86-64/Linuxに独自メモリ空間を勝手増設
x86-64/Linuxに独自メモリ空間を勝手増設
 
JVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweepJVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweep
 
Jvm reading-parallel gc
Jvm reading-parallel gcJvm reading-parallel gc
Jvm reading-parallel gc
 
JVM-Reading-ParalleGC
JVM-Reading-ParalleGCJVM-Reading-ParalleGC
JVM-Reading-ParalleGC
 

Recently uploaded

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

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