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

目录

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.csdn.net/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相当

成本

网卡厂商

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值