【Ceph】Async RDMA网络通信性能优化

本文深入探讨了Ceph中Async模块基于RDMA的网络通信性能优化,包括Reactor模型的原理和优缺点,以及Infiniband、RoCE、iWARP三种RDMA协议的对比。通过性能测试和配置调整,如增大QueuePair发送队列、优化内存分配和线程调优,提升了网络性能。此外,还分析了多线程Reactor模型的效果和消息接收缓存的优化思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Infiniband

RoCE

iWARP

附录(Ⅰ):连接过程状态迁移图

参阅资料

RDMA 数据传输

3. RDMA Send/Receive

3.1 第一步

3.2 第二步

3.3 第三步

3.4 第四步

4. 总结


现有代码分析

网络通信模块的实现在源代码src/msg的目录下,该目录主要包括Messenger、Connection、Message、Dispatch等类,这些类定义了网络通信的框架与接口。

三个子目录simple、async、xio分别对应三种不同的网络通信模型。simple、xio在最新的版本中已经被废弃,async是目前系统默认的网络通信方式。

因此,本次网络通信优化的工作主要在async基础之上开展。

Reactor模型

为了处理高并发的网络I/O流,async模块采用了Reactor模型。在Reactor中,每一种handler会出处理一种event。这里会有一个全局的管理者selector,我们需要把channel注册感兴趣的事件,那么这个selector就会不断在channel上检测是否有该类型的事件发生,如果没有,那么主线程就会被阻塞,否则就会调用相应的事件处理函数即handler来处理。

Reactor模型原理

Reactor模型主要组件

Reactor模型的优点

响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的;编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销; 可以方便的通过增加Reactor实例个数来充分利用CPU资源;reactor框架本身与具体事件处理逻辑无关,具有很高的复用性;

Reactor模型的缺点

相比传统的简单模型,Reactor增加了一定的复杂性,因而有一定的门槛,并且不易于调试; Reactor模式需要底层的Synchronous Event Demultiplexer支持,比如Java中的Selector支持,操作系统的select系统调用支持,如果要自己实现Synchronous Event Demultiplexer可能不会有那么高效;Reactor模式在IO读写数据时还是在同一个线程中实现的,即使使用多个Reactor机制的情况下,那些共享一个Reactor的Channel如果出现一个长时间的数据读写,会影响这个Reactor中其他Channel的相应时间,比如在大文件传输时,IO操作就会影响其他Client的相应时间,因而对这种操作,使用传统的Thread-Per-Connection或许是一个更好的选择,或则此时使用Proactor模式。

有限状态机模型

有限状态机(Finite State Machine, FSM),是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型

FSM模型把模型的多状态、多状态间的转换条件解耦;可以使维护变得容易,代码也更加具有可读性。

(FSM说明文章:https://blog.youkuaiyun.com/bandaoyu/article/details/111626406)

AsyncConnection连接建立过程中地状态迁移图参阅附录(Ⅰ)

Async模块

Async工作原理

Async主要组件

AsyncMessenger

管理网络连接

AsyncConnection

网路通信连接,定义网络通信应用层协议

NetworkStack

管理Worker对象及其对应地线程

Worker

网络I/O流处理单元,每个Worker对应一个工作线程

ServerSocket/ServerSocketImpl

C/S模式监听套接字,向上屏蔽了各种不同的网络编程接口

ConnectedSocket/ConnectedSocketImpl

C/S模式连接套接字,向上屏蔽了各种不同的网络编程接口

EventCenter

事件分发器,负责事件注册、事件分发

EventCallback

当对应的事件发生时,由EventCenter负责回调

EventEpoll

对epoll进行封装,轮询网络I/O事件

RDMA

RDMA是Remote Direct Memory Access的缩写,通俗的说可以看成是远程的DMA技术,为了解决网络传输中服务器端数据处理的延迟而产生的。

RDMA三种不同的硬件实现

目前,有三种RDMA协议的实现:Infiniband、RoCE、iWARP。由于RoCE具备明显性能和成本优势,将逐渐成为市场主流。

https://www.snia.org/sites/default/files/SNIA_ESF_Benefits_of_RDMA_In_Accelerating_Ethernet_Storage_Connectivity_Final_1_0.pdf 

Infiniband

支持RDMA的新一代网络协议。

由于这是一种新的网络技术,因此需要支持该技术的NIC和交换机。

RoCE

一个允许在以太网上执行RDMA的网络协议。

其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是InfiniBand标头。

这支持在标准以太网基础设施(交换机)上使用RDMA。

只有网卡应该是特殊的,支持RoCE。

iWARP

一个允许在TCP上执行RDMA的网络协议。

IB和RoCE中存在的功能在iWARP中不受支持。

这支持在标准以太网基础设施(交换机)上使用RDMA。

只有网卡应该是特殊的,并且支持iWARP(如果使用CPU卸载),否则所有iWARP堆栈都可以在软件中实现,并且丧失了大部分RDMA性能优势。

https://houbb.github.io/2019/11/20/rdma-01-protocol

软件栈对比

Infiniband (IB)

iWARP

RoCE

标准组织

IBTA

IETF

IBTA

性能

最好

稍差

与IB相当

成本

网卡厂商

Mellanox

Chelsio

Mellanox

Emulex

性能、成本对比

Infiniband网络最好,但网卡和交换机是价格也很高,然而RoCEv2和iWARP仅需使用特殊的网卡就可以了,价格也相对便宜很多。

相关组件

Device/DeviceList

抽象RDMA网卡,根据icfs.conf配置网卡参数

Infiniband

封装IB Verbs网络编程接口及组件

RDMAConnectedSocketImpl

仿socket连接套接字,采用伪fd实现网络I/O流的数据读写

RDMAConnTCP

为RDMAConnectedSocketImpl服务,利用利用TCP/IP协议建立RDMA连接

RDMAServerSocketImpl

仿socket服务套接字,定义服务接口

RDMAServerConnTCP

实现RDMAServerSocketImpl接口,利用TCP/IP协议建立RDMA连接

RDMADispatcher

轮询RDMA网络I/O流可读事件,将网络I/O流可读数据分发到对应RDMAConnectedSocketImpl

轮询RDMA网络I/O流可写事件,将网络I/O流可写数据分发到某个RDMAWorker

RDMAWorker

网络I/O流处理单元,每个RDMAWorker对应一个工作线程

RDMAStack

管理RDMAWorker对象及其对应地线程

性能优化工作汇总

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值