【RDMA】infiniband提升Redis性能|UC和RC时延比较|RC和UD性能比较

2023-10-13 19:50

本文主要是介绍【RDMA】infiniband提升Redis性能|UC和RC时延比较|RC和UD性能比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

infiniband应用到Redis之后的提升效果

WAN上InfiniBand传输服务的实验分析

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 的传输层提供了一个巨大的提升,因为所有的函数都是在硬件中实现的。

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的通信的延迟》

https://tdk.bme.hu/VIK/DownloadPaper/sdf9

这篇关于【RDMA】infiniband提升Redis性能|UC和RC时延比较|RC和UD性能比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205494

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2