๐Verbs
ๆฆ่ฟฐ
Verbs็ด่ฏ่ฟๆฅๆฏโๅจ่ฏโ็ๆๆ๏ผๅฎๅจRDMA้ขๅไธญๆไธค็งๅซไน๏ผ
1) ็ฑIB่ง่ๆๆ่ฟฐ็ไธ็ปๆฝ่ฑกๅฎไน๏ผ่งๅฎไบๅๅๅ็่ฝฏ็กฌไปถๅจๅ็งVerbsไธๅบ่ฏฅๆง่ก็ๅจไฝๆ่ ่กจ็ฐๅบ็่กไธบ๏ผIB่ง่ๅนถๆช่งๅฎๅฆไฝ็ผ็จๅฎ็ฐ่ฟไบVerbs๏ผๅจ่ฟ็งๅซไนไธ๏ผVerbsๆฏไธๆไฝ็ณป็ปๆ ๅ ณ็ใ
ไธพไธชไพๅญ๏ผIB่ง่่ฆๆฑๆๆRDMA่ฎพๅคๅฟ ้กปๆฏๆCreate QP็่กไธบ๏ผIB ่ง่11.2.5.1๏ผ๏ผ
ๆ่ฟฐ๏ผ โ ไธบๆๅฎ็่ฎพๅคๅๅปบไธไธชQPใ โ ็จๆทๅฟ ้กปๆๅฎไธ็ป็จไบๅๅงๅQP็ๅฑๆงใ โ ๅฆๆๅๅปบQPๆ้็ๅฑๆงๆ้ๆณๅผๆ่ ็ผบๅคฑ๏ผ้ฃไนๅบ่ฏฅ่ฟๅ้่ฏฏ๏ผ่ฏฅQPไธไผ่ขซๅๅปบ๏ผๅฆๆๆๅ๏ผ ้ฃไน่ฟๅ่ฏฅQP็ๆ้ๅQPNใ โ โฆโฆ ่พๅ ฅ๏ผ โ ่ฎพๅคๆ้๏ผ โ SQๅ ณ่ๅฐ็CQ๏ผ โ RQๅ ณ่ๅฐ็CQ๏ผๅฆๆๆฏXRC็INI QP๏ผๅๅฏไปฅไธๆบๅธฆๆญคๅๆฐ๏ผ โ โฆโฆ ่พๅบ๏ผ โ ๆฐๅๅปบ็QP็ๆ้๏ผ โ QP Number; โ SQ็ๆๅคงWRๅฎน้ใ โ โฆโฆ
ๅฏไปฅ็ๅบIB่ง่ไธญ็Verbs๏ผๅฐฑๅๆ็งไนฆไธญๅฏนไธไธชๆฆๅฟต่ฟ่กๅฎไน๏ผ่ฎฒ็ๆฏโ้่ฆๆฏๆไปไน๏ผไฝๅ ทไฝๆไนๅฎ็ฐๆไธๅ่งๅฎโใ
2) ็ฑOpenFabricsๆจๅจๅฎ็ฐ็ไธ็ปRDMAๅบ็จ็ผ็จๆฅๅฃ๏ผAPI๏ผใๆข็ถๆฏAPI๏ผ้ฃไนๅฟ ็ถๅ่ฟ่ก็ๆไฝ็ณป็ป็ธๅ ณใVerbs APIๆLinux็ๆฌไปฅๅWindows็ๆฌ๏ผWindows็ๅพไน ๆฒกๆๆดๆฐไบ๏ผใ
ๆไปฌ่ฟๆฏไปฅCreate QPไธบไพ๏ผไธๆๅผ็จ่ชLinux็จๆทๆVerbs API็ๅธฎๅฉๆๆกฃ๏ผibv_create_qp(3): create/destroy queue pair๏ผ๏ผ
ๅ็งฐ๏ผ โ ibv_create_qp - create a queue pair (QP) ๆฆ่ฆ๏ผ
ๆ่ฟฐ๏ผ โ ibv_create_qp()้่ฟไธไธชๅ ณ่็PDๅๅปบไธไธชQP๏ผๅๆฐqp_init_attrๆฏไธไธชibv_qp_init_attr็ฑปๅ็็ปๆไฝ๏ผๅ ถๅฎไนๅจ<infiniband/verbs.h>ไธญใ
โ ๅฝๆฐibv_create_qp()ไผๆดๆฐqp_init_attr->cap struct็ๅ ๅฎน๏ผ่ฟๅๅๅปบ็QPๆ็ๆญฃๆฏๆ็่งๆ ผโฆโฆ ่ฟๅๅผ๏ผ โ ibv_create_qp()่ฟๅ่ขซๅๅปบ็QP็ๆ้๏ผๆ่ ๅจๅคฑ่ดฅๆถ่ฟๅNULLใQPNๅฐๅจ่ฟๅ็ๆ้ๆๆๅ็็ปๆไฝไธญใ
ๅฏ่งVerbs APIๅณๆฏๅฏนIB่ง่ไธญ็Verbsๅฎไน็ๅ ทไฝ่ฝฏไปถๅฎ็ฐใ
Verbs็็ฌฌไธ็ง่ฏญไน็ดๆฅๆฅ้ IB่ง่็็ฌฌ11็ซ ๅณๅฏ๏ผ้้ขๅไบ้ๅธธ่ฏฆ็ป็ๆ่ฟฐใ
ๆฌๆไป็ป็ๆฏ็ฌฌไบ็ง่ฏญไน๏ผๅ ๅซVerbs APIๆฏไปไน๏ผๅฆไฝๅ็กฌไปถไบง็ไบคไบ๏ผๆไปฌๅฆไฝ้่ฟVerbs APIๆฅ็ผๅRDMA็จๅบใๅฆๆ ็นๆฎ่ฏดๆ๏ผไธๆไธญ็Verbsๅ็นๆVerbs APIใ
็ธๅ
ณๅ่ฏ่งฃ้
rdma-core
ๆๅผๆบRDMA็จๆทๆ่ฝฏไปถๅ่ฎฎๆ ๏ผๅ ๅซ็จๆทๆๆกๆถใๅๅๅ็จๆทๆ้ฉฑๅจใAPIๅธฎๅฉๆๅไปฅๅๅผๅ่ชๆต่ฏๅทฅๅ ท็ญใ
rdma-coreๅจgithubไธ็ปดๆค๏ผๆไปฌ็็จๆทๆVerbs APIๅฎ้ ไธๅฐฑๆฏๅฎๅฎ็ฐ็ใ
kernel RDMA subsystem
ๆๅผๆบ็Linuxๅ ๆ ธไธญ็RDMAๅญ็ณป็ป๏ผๅ ๅซRDMAๅ ๆ ธๆกๆถๅๅๅๅ็้ฉฑๅจใ
RDMAๅญ็ณป็ป่ท้Linux็ปดๆค๏ผๆฏๅ ๆ ธ็็ไธ้จๅใไธๆน้ขๆไพๅ ๆ ธๆ็Verbs API๏ผไธๆน้ข่ด่ดฃๅฏนๆฅ็จๆทๆ็ๆฅๅฃใ
OFED
ๅ จ็งฐไธบOpenFabrics Enterprise Distribution๏ผๆฏไธไธชๅผๆบ่ฝฏไปถๅ ้ๅ๏ผๅ ถไธญๅ ๅซๅ ๆ ธๆกๆถๅ้ฉฑๅจใ็จๆทๆกๆถๅ้ฉฑๅจใไปฅๅๅ็งไธญ้ดไปถใๆต่ฏๅทฅๅ ทๅAPIๆๆกฃใ
ๅผๆบOFED็ฑOFA็ป็ป่ด่ดฃๅผๅใๅๅธๅ็ปดๆค๏ผๅฎไผๅฎๆไปrdma-coreๅๅ ๆ ธ็RDMAๅญ็ณป็ปๅ่ฝฏไปถ็ๆฌ๏ผๅนถๅฏนๅๅ็จOSๅ่ก็่ฟ่ก้้ ใ้คไบๅ่ฎฎๆ ๅ้ฉฑๅจๅค๏ผ่ฟๅ ๅซไบperftest็ญๆต่ฏๅทฅๅ ทใ
ไธๅพไธบOFA็ปๅบ็OFED็ๆฆ่ง๏ผ
้คไบๅผๆบOFEDไนๅค๏ผๅๅๅไนไผๆไพๅฎๅถ็ๆฌ็OFED่ฝฏไปถๅ ๏ผๆฏๅฆๅไธบ็HW_OFEDๅMellanox็MLNX_OFEDใ่ฟไบๅฎๅถ็ๆฌๅบไบๅผๆบOFEDๅผๅ๏ผ็ฑๅๅ่ชๅทฑๆต่ฏๅ็ปดๆค๏ผไผๅจๅผๆบ่ฝฏไปถๅ ๅบ็กไธๆไพ็งๆ็ๅขๅผบ็นๆง๏ผๅนถ้ไธ่ชๅทฑ็้ ็ฝฎใๆต่ฏๅทฅๅ ท็ญใ
ไปฅไธไธ่ ๆฏๅ ๅซๅ ณ็ณปใๆ ่ฎบๆฏ็จๆทๆ่ฟๆฏๅ ๆ ธๆ๏ผๆดไธชRDMA็คพๅบ้ๅธธๆดป่ท๏ผๆกๆถๅ ไนๆฏๅคฉ้ฝๅจๅๅจ๏ผ้ฝๆฏๅนณๅๆฏไธคไธชๆไธไธช็ๆฌใ่OFEDไผๅฎๆไปไธคไธช็คพๅบไธญๅๅพไปฃ็ ๏ผ่ฟ่กๅ่ฝๅๅ ผๅฎนๆงๆต่ฏๅๅๅธ็ๆฌ๏ผๆถ้ด่ทจๅบฆ่พๅคง๏ผไปฅๅนดไธบๅไฝ่ฎกใ
Verbs APIๆฏไปไน
Verbs APIๆฏไธ็ป็จไบไฝฟ็จRDMAๆๅก็ๆๅบๆฌ็่ฝฏไปถๆฅๅฃ๏ผไนๅฐฑๆฏ่ฏดไธ็็RDMAๅบ็จ๏ผ่ฆไน็ดๆฅๅบไบ่ฟ็ปAPI็ผๅ๏ผ่ฆไนๅบไบๅจVerbs APIไธๅๅฐ่ฃ ไบไธๅฑๆฅๅฃ็ๅ็งไธญ้ดไปถ็ผๅใ
Verbs APIๅ็จๆทๆไพไบๆๅ ณRDMA็ไธๅๅ่ฝ๏ผๅ ธๅ็ๅ ๆฌ๏ผๆณจๅMRใๅๅปบQPใPost SendใPoll CQ็ญ็ญใ
ๅฏนไบLinux็ณป็ปๆฅ่ฏด๏ผVerbs็ๅ่ฝ็ฑrdma-coreๅๅ ๆ ธไธญ็RDMAๅญ็ณป็ปๆไพ๏ผๅไธบ็จๆทๆVerbsๆฅๅฃๅๅ ๆ ธๆVerbsๆฅๅฃ๏ผๅๅซ็จไบ็จๆทๆๅๅ ๆ ธๆ็RDMAๅบ็จใ
็ปๅไธไธ้จๅ็ๅ ๅฎน๏ผๆไปฌ็ปๅบไธไธชOFED็ๅ จๆฏ๏ผ
ๅนฟไน็Verbs APIไธป่ฆ็ฑไธคๅคง้จๅ็ปๆ๏ผ
IB_VERBS
ๆฅๅฃไปฅibv_xx๏ผ็จๆทๆ๏ผๆ่ ib_xx๏ผๅ ๆ ธๆ๏ผไฝไธบๅ็ผ๏ผๆฏๆๅบ็ก็็ผ็จๆฅๅฃ๏ผไฝฟ็จIB_VERBSๅฐฑ่ถณๅค็ผๅRDMAๅบ็จไบใ
ๆฏๅฆ๏ผ
ibv_create_qp() ็จไบๅๅปบQP
ibv_post_send() ็จไบไธๅSend WR
ibv_poll_cq() ็จไบไปCQไธญ่ฝฎ่ฏขCQE
RDMA_CM
ไปฅrdma_ไธบๅ็ผ๏ผไธป่ฆๅไธบไธคไธชๅ่ฝ๏ผ
CMA๏ผConnection Management Abstraction๏ผ
ๅจSocketๅVerbs APIๅบ็กไธๅฎ็ฐ็๏ผ็จไบCMๅปบ้พๅนถไบคๆขไฟกๆฏ็ไธ็ปๆฅๅฃใCMๅปบ้พๆฏๅจSocketๅบ็กไธๅฐ่ฃ ไธบQPๅฎ็ฐ๏ผไป็จๆท็่งๅบฆๆฅ็๏ผๆฏๅจ้่ฟQPไบคๆขไนๅๆฐๆฎไบคๆขๆ้่ฆ็QPN๏ผKey็ญไฟกๆฏใ
ๆฏๅฆ๏ผ
rdma_listen()็จไบ็ๅฌ้พ่ทฏไธ็CMๅปบ้พ่ฏทๆฑใ
rdma_connect()็จไบ็กฎ่ฎคCM่ฟๆฅใ
CM VERBS
RDMA_CMไนๅฏไปฅ็จไบๆฐๆฎไบคๆข๏ผ็ธๅฝไบๅจverbs APIไธๅๅฐ่ฃ ไบไธๅฅๆฐๆฎไบคๆขๆฅๅฃใ
ๆฏๅฆ๏ผ
rdma_post_read()ๅฏไปฅ็ดๆฅไธๅRDMA READๆไฝ็WR๏ผ่ไธๅibv_post_send()๏ผ้่ฆๅจๅๆฐไธญๆๅฎๆไฝ็ฑปๅไธบREADใ
rdma_post_ud_send()ๅฏไปฅ็ดๆฅไผ ๅ ฅ่ฟ็ซฏQPN๏ผๆๅ่ฟ็ซฏ็AH๏ผๆฌๅฐ็ผๅฒๅบๆ้็ญไฟกๆฏ่งฆๅไธๆฌกUD SENDๆไฝใ
ไธ่ฟฐๆฅๅฃ่ฝ็ถๆนไพฟ๏ผไฝๆฏ้่ฆ้ ๅCMA็ฎก็็้พ่ทฏไฝฟ็จ๏ผไธ่ฝ้ ๅVerbs APIไฝฟ็จใ
Verbs API้คไบIB_VERBSๅRDMA_CMไนๅค๏ผ่ฟๆMAD๏ผManagement Datagram๏ผๆฅๅฃ็ญใ
้่ฆๆณจๆ็ๆฏ๏ผ่ฝฏไปถๆ ไธญ็Verbs APIๅ ทไฝๅฎ็ฐๅIB่ง่ไธญ็ๆ่ฟฐๅนถไธๆฏๅฎๅ จไธ่ด็ใIB่ง่่ฟญไปฃ่พๆ ข๏ผ่่ฝฏไปถๆ ๅ ไนๆฏๅคฉ้ฝๆๅๅ๏ผๆไปฅ็ผๅๅบ็จๆ่ ้ฉฑๅจ็จๅบๆถ๏ผๅบไปฅ่ฝฏไปถๆ APIๆๆกฃไธญ็ๆ่ฟฐไธบๅใ
็ญไน็Verbs APIไธๆไปฅibv_/ib_ไธบๅ็ผ็็จๆทๆVerbsๆฅๅฃ๏ผๅ ไธบRDMA็ๅ ธๅๅบ็จๆฏๅจ็จๆทๆ๏ผไธๆไธป่ฆไป็ป็จๆทๆ็Verbs APIใ
่ฎพ่ฎกVerbs API็ๅๅ
ไผ ็ปไปฅๅคช็ฝ็็จๆท๏ผๅบไบSocket APIๆฅ็ผๅๅบ็จ็จๅบ๏ผ่RDMA็็จๆท๏ผๅบไบVerbs APIๆฅ็ผๅๅบ็จ็จๅบใ
Verbs APIๆฏๆIB/iWARP/RoCEไธๅคงRDMAๅ่ฎฎ๏ผ้่ฟ็ปไธๆฅๅฃ๏ผ่ฎฉๅไธไปฝRDMA็จๅบ็จๅบๅฏไปฅๆ ่งๅบๅฑ็็กฌไปถๅ้พ่ทฏๅทฎๅผ่ฟ่กๅจไธๅ็็ฏๅขไธญใ
Verbs APIๆๅ
ๅซ็ๅ
ๅฎน
็จๆทๆVerbs APIไธป่ฆๅ ๅซไธคไธชๅฑ้ข็ๅ่ฝ๏ผ
ไธบๆนไพฟ่ฎฒ่งฃ๏ผไธ้ขๅฏนๅๆฅๅฃ็ๅฝขๅผๅไบ็ฎๅ๏ผๆ ผๅผไธบ"่ฟๅๅผ1,่ฟๅๅผ2 ๅฝๆฐๅ(ๅๆฐ1, ๅๆฐ2)"
1๏ผๆงๅถ้ข๏ผ
่ฎพๅค็ฎก็๏ผ
device_listibv_get_device_list()
็จๆท่ทๅๅฏ็จ็RDMA่ฎพๅคๅ่กจ๏ผไผ่ฟๅไธ็ปๅฏ็จ่ฎพๅค็ๆ้ใ
device_contextibv_open_device(device)
ๆๅผไธไธชๅฏ็จ็RDMA่ฎพๅค๏ผ่ฟๅๅ ถไธไธๆๆ้๏ผ่ฟไธชๆ้ไผๅจไปฅๅ็จๆฅๅฏน่ฟไธช่ฎพๅค่ฟ่กๅ็งๆไฝ๏ผใ
device_attr, errno ibv_query_device(device_context*)
ๆฅ่ฏขไธไธช่ฎพๅค็ๅฑๆง/่ฝๅ๏ผๆฏๅฆๅ ถๆฏๆ็ๆๅคงQP๏ผCQๆฐ้็ญใ่ฟๅ่ฎพๅค็ๅฑๆง็ปๆไฝๆ้๏ผไปฅๅ้่ฏฏ็ ใ
่ตๆบ็ๅๅปบ๏ผๆฅ่ฏข๏ผไฟฎๆนๅ้ๆฏ๏ผ
pdibv_alloc_pd(device_context)
็ณ่ฏทPDใ่ฏฅๅฝๆฐไผ่ฟๅไธไธชPD็ๆ้ใ
mribv_reg_mr(pd, addr, length, access_flag)
ๆณจๅMRใ็จๆทไผ ๅ ฅ่ฆๆณจๅ็ๅ ๅญ็่ตทๅงๅฐๅๅ้ฟๅบฆ๏ผไปฅๅ่ฟไธชMRๅฐ่ฆไปๅฑ็PDๅๅฎ็่ฎฟ้ฎๆ้๏ผๆฌๅฐ่ฏป/ๅ๏ผ่ฟ็ซฏ่ฏป/ๅ็ญ๏ผ๏ผ่ฟๅไธไธชMR็ๆ้็ป็จๆทใ
cq ibv_create_cq(device_context, cqe_depth, ...)
ๅๅปบCQใ็จๆทไผ ๅ ฅCQ็ๆๅฐๆทฑๅบฆ๏ผ้ฉฑๅจๅฎ้ ็ณ่ฏท็ๅฏ่ฝๆฏ่ฟไธชๅผๅคง๏ผ๏ผ็ถๅ่ฏฅๅฝๆฐ่ฟๅCQ็ๆ้ใ
qpibv_create_qp(pd, qp_init_attr)
ๅๅปบQPใ็จๆทไผ ๅ ฅPDๅไธ็ปๅฑๆง๏ผๅ ๆฌRQๅSQ็ปๅฎๅฐ็CQใQP็ปๅฎ็SRQใQP็่ฝๅใQP็ฑปๅ็ญ๏ผ๏ผๅ็จๆท่ฟๅQP็ๆ้ใ
errnoibv_modiy_qp(qp, attr, attr_mask)
ไฟฎๆนQPใ็จๆทไผ ๅ ฅQP็ๆ้๏ผไปฅๅ่กจ็คบ่ฆไฟฎๆน็ๅฑๆง็ๆฉ็ ๅ่ฆไฟฎๆนๅผใไฟฎๆน็ๅ ๅฎนๅฏไปฅๆฏQP็ถๆใๅฏน็ซฏQPNใQP่ฝๅใ็ซฏๅฃๅทๅ้ไผ ๆฌกๆฐ็ญ็ญใๅฆๆๅคฑ่ดฅ๏ผ่ฏฅๅฝๆฐไผ่ฟๅ้่ฏฏ็ ใ Modify QPๆ้่ฆ็ไฝ็จๆฏ่ฎฉQPๅจไธๅ็็ถๆ้ด่ฟ็งป๏ผๅฎๆRST-->INIT-->RTR-->RTS็็ถๆๆบ่ฝฌ็งปๅๆๅ ทๅคไธๅSend WR็่ฝๅใไนๅฏ็จๆฅๅฐQPๅๆขๅฐERROR็ถๆใ
errnoibv_destroy_qp(qp)
้ๆฏQPใๅณ้ๆฏQP็ธๅ ณ็่ฝฏไปถ่ตๆบใๅ ถไป็่ตๆบไน้ฝๆ็ฑปไผผ็้ๆฏๆฅๅฃใ
ไธญๆญๅค็๏ผ
event_info, errnoibv_get_async_event(device_context)
ไปไบไปถ้ๅไธญ่ทๅไธไธชๅผๆญฅไบไปถ๏ผ่ฟๅๅผๆญฅไบไปถ็ไฟกๆฏ๏ผไบไปถๆฅๆบ๏ผไบไปถ็ฑปๅ็ญ๏ผไปฅๅ้่ฏฏ็ ใ
่ฟๆฅ็ฎก็
rdma_xxx()
็จไบCMๅปบ้พ๏ผไธๅจๆฌๆๅฑๅผ่ฎฒใ
...
2๏ผๆฐๆฎ้ข๏ผ
ไธๅWR
bad_wr, errnoibv_post_send(qp, wr)
ๅไธไธชQPไธๅไธไธชSend WR๏ผๅๆฐwrๆฏไธไธช็ปๆไฝ๏ผๅ ๅซไบWR็ๆๆไฟกๆฏใๅ ๆฌwr_idใsgeๆฐ้ใๆไฝ็ ๏ผSEND/WRITE/READ็ญไปฅๅๆด็ปๅ็็ฑปๅ๏ผใWR็็ปๆไผๆ นๆฎๆๅก็ฑปๅๅๆไฝ็ฑปๅๆๆๅทฎๅผ๏ผๆฏๅฆRCๆๅก็WRITEๅREADๆไฝ็WRไผๅ ๅซ่ฟ็ซฏๅ ๅญๅฐๅๅR_Key๏ผUDๆๅก็ฑปๅไผๅ ๅซAH๏ผ่ฟ็ซฏQPNๅQ_Key็ญใ
WR็ป็ฑ้ฉฑๅจ่ฟไธๆญฅๅค็ๅ๏ผไผ่ฝฌๅๆWQEไธๅ็ป็กฌไปถใ
ๅบ้ไนๅ๏ผ่ฏฅๆฅๅฃไผ่ฟๅๅบ้็WR็ๆ้ไปฅๅ้่ฏฏ็ ใ
bad_wr, errno ibv_post_recv(qp, wr)
ๅibv_post_send๏ผๅชไธ่ฟๆฏไธ้จ็จๆฅไธๅRECVๆไฝ็WR็ๆฅๅฃใ
่ทๅWC
num, wc ibv_poll_cq(cq, max_num)
ไปๅฎๆ้ๅCQไธญ่ฝฎ่ฏขCQE๏ผ็จๆท้่ฆๆๅๅๅคๅฅฝๅ ๅญๆฅๅญๆพWC๏ผๅนถไผ ๅ ฅๅฏไปฅๆฅๆถๅคๅฐไธชWCใ่ฏฅๆฅๅฃไผ่ฟๅไธ็ปWC็ปๆไฝ๏ผๅ ถๅ ๅฎนๅ ๆฌwr_id๏ผ็ถๆ๏ผๆไฝ็ ๏ผQPN็ญไฟกๆฏ๏ผไปฅๅWC็ๆฐ้ใ
ไฝฟ็จVerbs API็ผๅRDMAๅบ็จ็จๅบ
ๆฅ็ๆฅๅฃๅฎไน
ๅ
ๆ ธๆ
ๅ ๆ ธๆVerbsๆฅๅฃๆฒกๆไธ้จ็APIๆๅ๏ผ็ผ็จๆถ้่ฆๅ่ๅคดๆไปถไธญ็ๅฝๆฐๆณจ้ใๅฃฐๆ่ฟไบๆฅๅฃ็ๅคดๆไปถไฝไบๅ ๆ ธๆบ็ ็ฎๅฝไธญ็๏ผ
.../include/rdma/ib_verbs.h
ๆฏๅฆib_post_send()ๆฅๅฃ๏ผ
ๅฝๆฐๆณจ้ไธญๆๆ็กฎไป็ป่ฏฅๅฝๆฐ็ไฝ็จ๏ผ่พๅ ฅใ่พๅบๅๆฐไปฅๅ่ฟๅๅผใ
็จๆทๆ
ๆๅค็งๆนๆณๆฅ้ ็จๆทๆ็Verbs API๏ผ
ๅจ็บฟๆฅ้
ๆๆฐman page
็จๆทๆ็Verbs APIๆๅ่ทไปฃ็ ๅจไธไธชไปๅบ็ปดๆค๏ผๆๅๅฐๅ๏ผ
https://github.com/linux-rdma/rdma-core/tree/master/libibverbs/man
่ฟ้ๆฏๆ็ งLinux็man pageๆ ผๅผ็ผๅ็ๆบๆไปถ๏ผ็ดๆฅ็ๆบๆไปถๅฏ่ฝไธๅคช็ด่งใๆๅพๅคๅจ็บฟ็man page็ฝ็ซๅฏไปฅๆฅ้ ่ฟไบๆฅๅฃ็่ฏดๆ๏ผๆฏๅฆๅฎๆน็่ฟๆฅ๏ผ
https://man7.org/linux/man-pages/man3/ibv_post_send.3.html
ไนๆไธไบๅ ถไป้ๅฎๆน็ฝ้กต๏ผๆฏๆๅจ็บฟๆ็ดข๏ผ
https://linux.die.net/man/3/ibv_post_send
ๆฅ้
็ณป็ปman page
ๅฆๆไฝ ไฝฟ็จ็ๅ็จOSๅฎ่ฃ ไบrdma-coreๆ่ libibverbsๅบ๏ผ้ฃไนๅฏไปฅ็ดๆฅ็จmanๅฝไปคๆฅ่ฏขๆฅๅฃ๏ผ
ๆฅ่ฏขMellanox็็ผ็จๆๅ
ใRDMA Aware Networks Programming User Manual Rev 1.7ใ๏ผๆๆฐ็ๆฏ2015ๅนดๆดๆฐ็ใ่ฏฅๆๅๅ็ๆฏ่พ่ฏฆๅฐฝ๏ผๅนถไธ้ๆ็คบไพ็จๅบ๏ผไฝๆฏๅฏ่ฝไธๆๆฐ็ๆฅๅฃๆไธไบๅทฎๅผใ
ๅ
ๅซๅคดๆไปถ
ๆ้ๅ ๅซไปฅไธๅคดๆไปถ๏ผ
็ผๅๅบ็จ
ไธ้ข้ไธไธไธช็ฎๅ็RDMA็จๅบ็ๅคง่ดๆฅๅฃ่ฐ็จๆต็จ๏ผClient็ซฏ็็จๅบไผๅ้ไธไธชSEND่ฏทๆฑ็ปServer็ซฏ็็จๅบ๏ผๅพไธญ็ๆฅๅฃไธๆไธญ้ฝๆ็ฎๅไป็ปใ
้่ฆๆณจๆ็ๆฏๅพไธญ็ๅปบ้พ่ฟ็จๆฏไธบไบไบคๆขๅฏน็ซฏ็GID๏ผQPN็ญไฟกๆฏ๏ผๅฏไปฅ้่ฟไผ ็ป็Socketๆฅๅฃๅฎ็ฐ๏ผไนๅฏไปฅ้่ฟๆฌๆไธญไป็ป็CMAๆฅๅฃๅฎ็ฐใ
ๅพไธญ็นๆๅๅบไบๅคๆฌกmodify QP็ๆต็จ๏ผไธๆน้ขๆฏๆๅปบ้พไนๅไบคไบๅพๅฐ็ไฟกๆฏๅญๅ ฅQPCไธญ๏ผๅณQP้ดๅปบ็ซ่ฟๆฅ็่ฟ็จ๏ผ๏ผๅฆไธๆน้ขๆฏไธบไบไฝฟQPๅคไบๅ ทๅคๆถ/ๅ่ฝๅ็ถๆๆ่ฝ่ฟ่กไธไธๆญฅ็ๆฐๆฎไบคไบใๅ ทไฝ็ถๆๆบ็ๅ ๅฎน่ฏทๅ้กพ9. RDMAไนQueue Pair
็ผ่ฏ & ๆง่ก
ไธๅจๆฌๆ่ฎจ่ฎบ่ๅดๅ ใ
ๅฎๆน็คบไพ็จๅบ
rdma-core็ๆบ็ ็ฎๅฝไธ๏ผไธบlibibverbsๅlibrdmacm้ฝๆไพไบ็ฎๅ็็คบไพ็จๅบ๏ผๅคงๅฎถ็ผ็จๆถๅฏไปฅๅ่ใ
libibverbs
ไฝไบrdma-core/libibverbs/examples/็ฎๅฝไธ๏ผ้ฝไฝฟ็จๆๅบ็ก็IB_VERBSๆฅๅฃๅฎ็ฐ๏ผๆไปฅๅปบ้พๆนๅผ้ฝๆฏๅบไบSocket็ใ
asyncwatch.c ๆฅ่ฏขๆๅฎRDMA่ฎพๅคๆฏๅฆๆๅผๆญฅไบไปถไธๆฅ
device_list.c ๅๅบๆฌ็ซฏRDMA่ฎพๅคๅ่กจ
devinfo.c ๆฅ่ฏขๅนถๆๅฐๆฌ็ซฏRDMA่ฎพๅค่ฏฆ็ปไฟกๆฏ๏ผๆฒกๆๅ็ซฏๆฐๆฎไบคไบ
rc_pingpong.c ๅบไบRCๆๅก็ฑปๅๅ็ซฏๆฐๆฎๆถๅ็คบไพ
srq_pingpong.c ๅบไบRCๆๅก็ฑปๅๅ็ซฏๆฐๆฎๆถๅ็คบไพ๏ผไธไธไธไธช็คบไพ็จๅบ็ๅทฎๅผๆฏไฝฟ็จไบSRQ่ไธๆฏๆฎ้็RQใ
ud_pingpong.c ๅบไบUDๆๅก็ฑปๅๅ็ซฏๆฐๆฎๆถๅ็คบไพ
ud_pingpong.c ๅบไบUCๆๅก็ฑปๅๅ็ซฏๆฐๆฎๆถๅ็คบไพ
xsrq_pingpong.c ๅบไบXRCๆๅก็ฑปๅๅ็ซฏๆฐๆฎๆถๅ็คบไพ
librdmacm
ไฝไบrdma-core/librdmacm/examples/็ฎๅฝไธ๏ผ
rdma_client/server.c ๅบ็ก็คบไพ๏ผ้่ฟCMๅปบ้พๅนถไฝฟ็จCM VERBS่ฟ่กๆฐๆฎๆถๅใ
่ฏฅ็ฎๅฝๅฉไธ็็จๅบๅฐฑๆฒกๆ็ ็ฉถไบใ
ๅ่ๆ็ฎ
[1] RDMA Aware Networks Programming User Manual Rev 1.7
[2] part1-OFA_Training_Sept_2016
Last updated