[发明专利]获取任务完成通知的方法、装置及直接访问内存的方法在审
申请号: | 202211035562.0 | 申请日: | 2022-08-26 |
公开(公告)号: | CN115470014A | 公开(公告)日: | 2022-12-13 |
发明(设计)人: | 王芳;冯丹;施展;陈思新;帅晓雨;安行 | 申请(专利权)人: | 山东海量信息技术研究院;华中科技大学 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/48;G06F13/28 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 夏倩;李智 |
地址: | 250101 山东省济南*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 获取 任务 完成 通知 方法 装置 直接 访问 内存 | ||
本发明公开了获取任务完成通知的方法、装置及直接访问内存的方法,属于计算机网络通信领域,包括:在系统启动时,设置两个过往计数记录,均初始化为计数上限最大值;在完成队列中有新的任务完成通知产生时,执行轮询步骤,包括:(S1)计算过往计数记录均值作为count_limit;(S2)设置计数器counter的值为0;(S3)对完成队列进行轮询,若有任务完成通知,则转入(S4);否则,转入(S5);(S4)批量获取任务完成通知后,转入(S2);(S5)将计数器counter的值加1后,判断是否满足countercount_limit,若是,则转入(S3);否则,退出轮询模式,并结束轮询步骤;根据负载对过往计数记录进行动态调整。本发明能够在不消耗过多CPU资源的情况下快速获取任务完成通知。
技术领域
本发明属于计算机网络通信领域,更具体地,涉及获取任务完成通知的方法、装置及直接访问内存的方法。
背景技术
远程直接内存访问(Remote Direct Memory Access,RDMA)技术是一种新型内存访问技术,可以实现从一台计算机的内存到另一台计算机内存的直接内存访问。
在传统的TCP/IP传输流程中,CPU需要将数据在用户空间和内核空间之间进行拷贝,数据包的封装解析同样需要CPU的全程参与,在数据量大的情形下,CPU使用率较高。相比传统的TCP/IP网络,RDMA具有三大优点:(1)旁路内核:I/O流程可绕过内核,即在用户态就可以把数据准备好并通知硬件发送和接收,避免了系统调用和上下文切换开销;(2)零拷贝:由于TCP/IP协议栈的天生缺陷,消息发送接收过程需要在用户空间和内核空间来回复制数据,而RDMA则不需要;(3)CPU卸载:可以在远端节点CPU不参与的情况下对内存进行读写,实际是将报文的封装和解析都交给了RDMA网卡完成。相比于TCP/IP,RDMA具有低延迟、高带宽等优点,因此在数据中心得到了广泛应用。
RDMA相比TCP/IP的优点之一便是CPU卸载,在传输过程中不需要远端CPU参与,但这仅限于使用RDMA READ/WRITE时,在其它环节还是需要CPU进行处理。
在RDMA资源初始化时需要CPU进行一系列操作,包括获取RDMA设备列表、打开RDMA设备、分配保护域、注册内存、创建完成队列和创建队列对等。相应的,进行资源销毁时也需要CPU调用相关接口执行功能。这部分CPU资源只在系统初始化和关闭时被使用,不影响传输流程且不能被省略。
在进行数据传输时,需要CPU将传输任务封装为RDMA工作请求(Work Request,WR)传递给RDMA网卡,如果使用RDMA SEND/RECV进行数据传输,还需要准备一批RECV WR传递到接收队列(Recv Queue,RQ)中。除了工作请求的传输,任务完成通知(Work Completion,WC)的处理同样需要CPU参与。当一个完成队列元素(Completion Queue Element,CQE)产生,CPU需要从完成队列(Completion Queue,CQ)中获取任务完成通知,然后对任务完成通知进行处理。处理完一个任务完成通知才算是一次传输任务真正完成。WR和WC的处理必须需要CPU的参与,而检查CQ中是否有新的CQE产生方式不同,对CPU占用率也不同。最基本的检查CQ中是否有新的CQE产生的方式有两种,即中断方式和轮询方式。
中断获取CQE的方式需要使用Epoll/Select/Kqueue等多路复用机制监听完成队列CQ绑定的完成通道(Completion Channel,CC)。当CQ中有新的CQE产生时,完成通道CC的文件描述符会产生可读事件,通过中断告知CPU,CQE获取线程被唤醒然后调用ibv_poll_cq()接口获取CQE。这种方式不需要线程时刻检查CQ中是否有CQE产生,不占据CPU资源,但是需要唤醒线程,因此延迟较高。
轮询获取CQE的方式会不断轮询CQ而不会陷入休眠。当CQ中有完成事件产生时,轮询线程依次获取并处理完成事件。这种获取CQE的方式虽然没有线程唤醒开销,延迟低、反应快,但是获取CQE线程会霸占CPU核心,长期的空转会浪费CPU资源。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东海量信息技术研究院;华中科技大学,未经山东海量信息技术研究院;华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211035562.0/2.html,转载请声明来源钻瓜专利网。