【RDMA】infiniband提升Redis性能|UC和RC时延比较|RC和UD性能比较
目录
UC和RC的区别
(https://www.mellanox.com/related-docs/prod_software/RDMA_Aware_Programming_user_manual.pdf)
RDMA 架构与实践 | https://houmin.cc/posts/454a90d3/
Transport Layer
传输层负责 Packet 的按序传输、根据 MTU 分段和很多传输层的服务(reliable connection, reliable datagram, unreliable connection, unreliable datagram, raw datagram)。InfiniBand 的传输层提供了一个巨大的提升,因为所有的函数都是在硬件中实现的。
按照连接和可靠两个标准,可以划分出下图四种不同的传输模式:
- 可靠连接(RC)一个QP只和另一个QP相连,消息通过一个QP的发送队列可靠地传输到另一个QP的接收队列。数据包按序交付,RC连接很类似于TCP连接。
- 不可靠连接(UC)一个QP只和另一个QP相连,连接是不可靠的,所以数据包可能有丢失。传输层出错的消息不会进行重传,错误处理必须由高层的协议来进行。
- 不可靠数据报(UD)一个 QP 可以和其它任意的 UD QP 进行数据传输和单包数据的接收。不保证按序性和交付性。交付的数据包可能被接收端丢弃。支持多播消息(一对多),UD连接很类似于UDP连接。
每种模式中可用的操作如下表所示,目前的RDMA硬件提供一种数据报传输:不可靠的数据报(UD),并且不支持memory verbs。
2.2.3 Unreliable Datagram (UD)
QP可以向任何其他UD-QP发送或从任何其他UD-QP接收单分组消息。
Ordering and delivery 不受保证,交付的数据包可能会被接收方丢弃。
支持多播消息(一对多)。
UD连接与UDP连接非常相似。
infiniband应用到Redis之后的提升效果
国防科技大学论文:
连接:http://ir.nsfc.gov.cn/paperDownload/ZD2959605.pdf
原文:http://ir.nsfc.gov.cn/paperDownload/ZD2959605.pdf
测试环境:
x86-64
2.10GHz Intel Xeon E5-2620L 6-core processors, featuring 32KB for L1 instruction and data caches, 256KB L2 and 15MB L3 cache.
16GB.
Mellanox MT27500 ConnectX-3 40 GbpsInfiniBand HCA
Red Hat Enterprise Linux Server 6 ,kernel 2.6.32.
测试工具:
InfiniBand verbs performance test tool
如:ib_send_lat, ib_read_lat, ib_write_lat
测试结果:
Inlined模式下,小于256个字节的小消息可以inline在WR中,以避免RDMA NIC通过DMAread提取小消息。这种方法可以有效地避免DMA操作从而减少延迟。
图1表明:
当消息size 小于256 bytes时,inlined 的SEND/RECV 可以明显的降低时延
不用 inlined 的SEND/RECV 操作在UD 传输时也可以轻微降低时延,但效果不明显。
图2表明,与SEND / RECV操作相似,在传输小消息时,使用inlined的RDMA write在RC传输和UC传输上具有较低的延迟。
图3表明,inlined的RDMA write 在UC传输的时延比RC传输的时延低。
而图4表明,非inlined的RDMA write在UC传输时不比RC传输具有更好的性能。
WAN上InfiniBand传输服务的实验分析 (RC|UC|WRITE|READ|SEND)
橡树岭国家实验室(美)测试结果
https://www.cs.fsu.edu/~yuw/pubs/2008-NAS-Yu.pdf
RC和UD性能比较
《Scalable Network Communication using Unreliable RDMA》Scalable Network Communication using Unreliable RDMA. (Conference) | OSTI.GOV
《最小化RDMA的通信的延迟》