一种提高RDMA网络通信效率的方法及装置制造方法及图纸

技术编号:38751168 阅读:13 留言:0更新日期:2023-09-09 11:17
本发明专利技术属于计算机网络通信领域,具体为一种提高RDMA网络通信效率的装置及方法。是根据RDMA网络流量的特征,设计采用流量自适应轮询周期控制算法,并利用该算法自适应地调节轮询模式下的轮询次数分配,同时对最大轮询次数与最少轮询次数展开约束,保证网络通信线程不会长时间占用CPU。解决了传统简易混合轮询策略下,由于轮询模式与事件驱动模式的切换规则过于简单,导致具有间歇性质的低流量频繁触发事件引发用户线程不断地在休眠与唤醒状态间切换的问题。换的问题。换的问题。

【技术实现步骤摘要】
一种提高RDMA网络通信效率的方法及装置


[0001]本专利技术属于计算机网络通信领域,涉及面向RDMA网络的轮询与事件驱动混合方法,具体为一种提高RDMA网络通信效率的方法及装置。

技术介绍

[0002]RDMA全称是远程直接内存访问,它继承于DMA,是一种绕过CPU直接读写内存的技术,运行于不同主机上的两个进程通过RDMA网络,能够直接读取位于对方主机内存地址空间中的数据。传统基于TCP/IP协议的网络通信技术在处理传输数据时,其传输路径需要经过操作系统内核、网络协议栈等多级软件层,数据在内存中存在多次的重复搬移,对服务器的内存与CPU都带来较高的负担。RDMA技术通过kernel

bypass和零拷贝的方式,允许处于用户态的程序直接通过内存通信,从而减少了数据传输过程中不必要的开销。近年来,随着互联网用户数量的爆炸性增长,互联网应用承受了数量庞大的用户请求,系统负载压力过大,波动性更加显著。现有的网络通信面临瓶颈,因此,面向RDMA网络的策略优化方法具有重要的实用价值。
[0003]RDMA的通信模型是基于消息的方式来实现网络传输,并且用队列来管理待发送的消息和接收到的消息。RDMA的队列分为如下几种:发送队列SQ、接收队列RQ和完成队列CQ。其中SQ和RQ统称工作队列WQ,二者组成队列对QP。RDMA的网络传输相关操作基本上都是跟队列相关的操作:比如把要发送的消息放入发送队列,消息发送完成后在完成队列里放一个发送完成消息,以供用户程序查询消息发送状态;再比如接收队列里收到消息,也要在完成队列里放个接收完成消息,以供用户程序查询有新消息要处理,用户程序有两种方式来查询CQ中的完成事件。
[0004]第一种完成检测策略,被称为忙轮询(busy polling),用户程序调用ibv_cq_poll函数来重复轮询完成队列,直到有可用的信息,一旦有新的CQE就可以及时得到通知,这种轮询方式可以立即对完成做出反应,但是十分消耗CPU资源,还会产生很高的CPU使用率,适合大吞吐量的数据传输场景。
[0005]第二种策略,被称为事件驱动,用户程序在创建CQ的时候,指定一个完成事件通道ibv_comp_channel,然后调用ibv_get_cq_event接口进入等待,直到该完成事件通道来通知有新的CQE;如果没有新的CQE,则调用ibv_get_cq_event时发生阻塞。这种方法相比忙轮询可以显著降低对服务器CPU资源的使用率。
[0006]由于现代计算中心集群的工作负载与业务系统紧密相关,而业务系统进一步和社会生产活动正相关。消息中间件集群通常在整体的业务系统负责对流量的削峰填谷,以及子系统间的隔离。因此,计算集群的网络负载呈现明显的潮汐效应,部分时间工作在高吞吐量的状态,应对流量高峰的冲击,剩余时间则工作在流量低谷,流量较少,甚至没有流量。
[0007]当集群处于流量峰值时,如果选择事件驱动模式,IO系统则会产生大量的事件,相对于轮询的工作模式,繁忙的事件发布与通知机制占用大量CPU资源,大大降低总体传输效率。针对这一情况,有研究者提出事件批量轮询的方法,利用CQ可以被多条连接通道共享的
特性,在一个事件中,批量处理多条消息,从而提高传输效率。另外地,百度bRPC的研究者提出使用事件抑制方式,通过精简事件类型来减少事件的发生频率。
[0008]当选择轮询方式时,可以提高系统面对峰值流量的响应速度,保证高吞吐量。但是当流量较少时,服务器CPU仍会进行大量无意义的空轮询,浪费资源。此时,事件驱动模式可以在释放CPU资源的同时,仍可保证对可能到来的少量流量的及时处理。
[0009]基于以上情况,更优的方式是同时结合轮询模式和事件驱动模式,通过设定合适的切换策略。在流量高峰时使用轮询模式,来保证RDMA数据通信的低延迟和高吞吐量,在低负载的情况下切换到事件驱动模式,让出CPU资源,保证其他计算工作的正常进行。在满足RDMA传输速率的前提下,尽可能地提高对CPU资源的有效利用率。
[0010]NAPI(New API)是Linux网络子系统中采用的高性能网络数据处理技术,它的目标是最小化网络中断对CPU的占用,提高网络应用程序的性能和响应速度。NAPI的实现中应用了结合轮询模式和事件驱动模式的思想,属于简易混合轮询策略。
[0011]在传统的网络中断处理机制中,每当有网络数据包到达时,网络设备会发出中断请求,中断处理程序将在CPU上运行以处理数据包。这会导致频繁的中断处理,这些处理会占用CPU时间,并且在高负载情况下可能会导致中断风暴。
[0012]简易混合轮询策略可以显著减少网络中断对CPU的占用,从而提高系统的性能。它采用了一种基于轮询的模型,即将网络设备从中断驱动模式切换为轮询模式,以在轮询中处理网络数据包。当网络数据包到达时,它们会被存储在内存缓冲区中,然后在轮询过程中进行处理,这样就避免了中断处理的开销。近年来,以阿里巴巴提出的X

RDMA为代表的混合轮询策略,在RDMA通信场景中使用了这种方式。然而,目前简易混合轮询策略中轮询模式和事件驱动的状态切换条件相对简单。当这些方法无法轮询时,即使有一组请求以很短的间隔到达,它们也会立即返回事件模式,导致中断处理导致性能不佳。

技术实现思路

[0013]本专利技术的目的在于提供一种提高RDMA网络通信效率的方法及装置,以解决传统简易混合轮询策略下,由于轮询模式与事件驱动模式的切换规则过于简单,导致具有间歇性质的低流量频繁触发事件引发用户线程不断地在休眠与唤醒状态间切换的问题。
[0014]为实现上述目的,本专利技术采用如下技术方案:
[0015]一种提高RDMA网络通信效率的方法,包括以下步骤:
[0016]S1、实时监控与统计定时器中断中的RDMA流量;
[0017]S2、根据S1监控与统计的定时器中断中的RDMA流量,确认通信线程是否被通信事件唤醒,若被通信事件唤醒,则进入轮询状态,此时,采用流量自适应轮询周期控制算法计算t时段控制轮询模式的轮询次数:
[0018]当计算得到的轮询次数为空时,返回步骤S1获取t+1时段定时器中断中的RDMA流量,计算t+1时段控制轮询模式的轮询次数,若仍为空,则通信线程转为事件驱动状态。
[0019]进一步的,自适应轮询周期控制算法的计算方法,包括以下子步骤:
[0020]S2.1、根据实际网络情况,设定最小轮询次数N
init
、最大轮询次数N
max
、轮询变化的参考阈值Δ、变化比例α和β,其中最小轮询次数N
min
为初始轮询次数N
init
,变化比例α>1,变化比例0<β<1;
[0021]S2.2、从监控与统计结果中选取3个连续采样点,分别为第一采样点、第二采样点和第三采样点;分别计算斜率变化百分比Slope1和Slope2,Slope1为第一采样点与第二采样点之间的斜率变化百分比,Slope2表示第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提高RDMA网络通信效率的方法,其特征在于,包括以下步骤:S1、实时监控与统计定时器中断中的RDMA流量;S2、根据S1监控与统计的定时器中断中的RDMA流量,确认通信线程是否被通信事件唤醒,若被通信事件唤醒,则进入轮询状态,此时,采用流量自适应轮询周期控制算法计算t时段控制轮询模式的轮询次数:当计算得到的轮询次数为空时,返回步骤S1获取t+1时段定时器中断中的RDMA流量,计算t+1时段控制轮询模式的轮询次数,若仍为空,则通信线程转为事件驱动状态。2.根据权利要求1所述的一种提高RDMA网络通信效率的方法,其特征在于,自适应轮询周期控制算法的计算方法,包括以下子步骤:S2.1、根据实际网络情况,设定最小轮询次数N
init
、最大轮询次数N
max
、轮询变化的参考阈值Δ、变化比例α和β,其中最小轮询次数N
min
为初始轮询次数N
init
,变化比例α>1,变化比例0<β<1;S2.2、从监控与统计结果中选取3个连续采样点,分别为第一采样点、第二采样点和第三采样点;分别计算斜率变化百分比Slope1和Slope2,Slope1为第一采样点与第二采样点之间的斜率变化百分比,Slope2表示第二采样点与第三采样点之间的斜率变化百分比;表示第二采样点与第三采样点之间的斜率变化百分比;其...

【专利技术属性】
技术研发人员:郑宏于江浩于力李芳
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1