事件监听方法、装置及电子设备制造方法及图纸

技术编号:36086607 阅读:38 留言:0更新日期:2022-12-24 11:02
本申请提供了一种事件监听方法、装置及电子设备,涉及网络通信技术领域,该方法包括:在通过代理线程监听到远程直接内存访问RDMA事件通知时,在多个完成队列CQ中查询RDMA事件通知对应的目标CQ;多个CQ用于存储RDMA事件;在目标CQ中获取RDMA事件通知对应的目标RDMA事件,根据目标RDMA事件,在目标CQ关联的多个队列对QP中确定RDMA事件通知对应的目标QP;在目标QP的等待队列中的至少一个线程中确定等待线程,通知等待线程接收到RDMA事件通知。本实施例中,通过代理线程监听RDMA事件通知,通过等待队列通知等待线程,可以提高监听RDMA事件通知的灵活性,满足监听RDMA事件通知和TCP/IP事件通知的需求。事件通知的需求。事件通知的需求。

【技术实现步骤摘要】
事件监听方法、装置及电子设备


[0001]本申请涉及网络通信
,尤其涉及一种事件监听方法、装置及电子设备。

技术介绍

[0002]远程直接内存访问(Remote Direct Memory Access,RDMA)技术,允许应用程序与网卡之间的直接读写数据,可以将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入,规避了传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)的限制,能有效降低通讯时延以及CPU的占用率。
[0003]在实际应用场景中,需要同一应用程序既要能够通过TCP/IP协议进行事件通知,也要能够通过RDMA协议进行事件通知。然而,TCP/IP协议与RDMA协议的事件通知机制存在较大差异,RDMA协议的事件通知机制不够灵活,无法同时满足TCP/IP协议与RDMA协议的事件通知的需求。

技术实现思路

[0004]本申请实施例提供一种事件监听方法、装置及电子设备,可以提高监听RDMA事件通知的灵活性,以满足监听RDMA事件通知和TCP/IP事件通知的需求。
[0005]第一方面,本申请实施例提供了一种事件监听方法,该方法包括:
[0006]在通过代理线程监听到远程直接内存访问RDMA事件通知时,在多个完成队列CQ中查询RDMA事件通知对应的目标CQ;多个CQ用于存储RDMA事件;
[0007]在目标CQ中获取RDMA事件通知对应的目标RDMA事件,根据目标RDMA事件,在目标CQ关联的多个队列对QP中确定RDMA事件通知对应的目标QP;
[0008]在目标QP的等待队列中的至少一个线程中确定等待线程,通知等待线程接收到RDMA事件通知。
[0009]第二方面,本申请实施例提供了一种事件监听装置,装置包括:
[0010]查询模块,用于在通过代理线程监听到远程直接内存访问RDMA事件通知时,在多个完成队列CQ中查询RDMA事件通知对应的目标CQ;多个CQ用于存储RDMA事件;
[0011]确定模块,用于在目标CQ中获取RDMA事件通知对应的目标RDMA事件,根据目标RDMA事件,在目标CQ关联的多个队列对QP中确定RDMA事件通知对应的目标QP;
[0012]通知模块,用于在目标QP的等待队列中的至少一个线程中确定等待线程,通知等待线程接收到RDMA事件通知。
[0013]第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器在执行所述计算机程序时实现上述任一项所述的方法。
[0014]第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法。
[0015]与现有技术相比,本申请具有如下优点:
[0016]本申请提供了一种事件监听方法、装置及电子设备,在通过代理线程监听到远程
直接内存访问RDMA事件通知时,在多个完成队列CQ中查询RDMA事件通知对应的目标CQ;多个CQ用于存储RDMA事件;在目标CQ中获取RDMA事件通知对应的目标RDMA事件,根据目标RDMA事件,在目标CQ关联的多个队列对QP中确定RDMA事件通知对应的目标QP;在目标QP的等待队列中的至少一个线程中确定等待线程,通知等待线程接收到RDMA事件通知。本实施例中,通过代理线程监听RDMA事件通知,通过等待队列通知等待线程,可以提高监听RDMA事件通知的灵活性,满足监听RDMA事件通知和TCP/IP事件通知的需求。
[0017]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,可依照说明书的内容予以实施,并且为了让本申请的上述和其他目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0018]在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请的一些实施方式,而不应将其视为是对本申请范围的限制。
[0019]图1为本申请提供的事件监听方法的一个应用场景示意图;
[0020]图2为本申请提供的事件监听方法的一个应用场景示意图;
[0021]图3是本申请一实施例的事件监听方法的流程图;
[0022]图4是本申请一实施例的事件监听装置的结构框图;以及
[0023]图5为用来实现本申请实施例的电子设备的框图。
具体实施方式
[0024]在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的构思或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的,而非限制性的。
[0025]为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明。以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
[0026]图1为本申请提供的事件监听方法的一个应用场景示意图。如图1所示,本实施例中的方法应用于计算设备(例如,服务器等)的操作系统监听RDMA事件通知和TCP/IP事件通知,可以通过多种方式实现,例如,网络加速引擎等。其中,操作系统可以包括多种,例如,LINUX操作系统。
[0027]如图1所示,RDMA事件通知方式包括:在创建RDMA连接时,创建多个队列对(Queue Pair,QP)(如图中所示的QP1、QP2

QPn)和完成队列(Completion Queue,CQ)(如图中所示的CQ1

CQn),QP和RDMA连接一一对应,多个QP可以绑定到同一个CQ,通过CQ可以获取RDMA事件,但是QP没有事件通知功能。多个CQ可以绑定到同一个事件通道event channel,event channel包含文件句柄,用于RDMA事件通知。
[0028]TCP/IP事件通知方式包括阻塞模式和非阻塞模式。阻塞模式是指对一个TCP/IP套接字socket做读或写操作时,直至该操作完成才会返回数据。如果条件不满足,则会阻塞等待事件通知,条件满足后被唤醒。非阻塞模式是指在条件不满足时不会阻塞,直接返回失
败。输入/输出I/O多路复用监听是指同时监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),则通知程序进行相应的读写操作。例如,同时等待多个socket事件,直到至少有一个socket的事件触发,则进行读写操作。
[0029]RDMA事件通知方式与TCP/IP事件通知方式的不同之处在于,RDMA事件通知方式是在创建连接时绑定QP、CQ和event channel的关系。而TCP/IP事件通知方式是在创建完连接后再绑定事件通知的监听实例。例如,TCP/IP的socket可以创建完连接后绑定到某个epo本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种事件监听方法,其特征在于,所述方法包括:在通过代理线程监听到远程直接内存访问RDMA事件通知时,在多个完成队列CQ中查询所述RDMA事件通知对应的目标CQ;所述多个CQ用于存储RDMA事件;在所述目标CQ中获取所述RDMA事件通知对应的目标RDMA事件,根据所述目标RDMA事件,在所述目标CQ关联的多个队列对QP中确定所述RDMA事件通知对应的目标QP;在所述目标QP的等待队列中的至少一个线程中确定等待线程,通知所述等待线程接收到所述RDMA事件通知。2.根据权利要求1所述的方法,其特征在于,在所述目标QP的等待队列中的至少一个线程中确定等待线程,通知所述等待线程接收到所述RDMA事件通知之前,所述方法还包括:将多个RDMA事件分别对应的多路复用监听实例分别注册到所述多个QP的等待队列中,以用于根据所述多路复用监听实例确定所述等待线程。3.根据权利要求2所述的方法,其特征在于,所述多路复用监听实例是通过多路复用监听函数创建的;所述多路复用监听函数包括epoll函数、poll函数或select函数中的任一项。4.根据权利要求2所述的方法,其特征在于,所述多路复用监听函数为epoll函数,所述方法还包括:将所述多个RDMA事件中的任一RDMA事件的文件描述符eventfd和传输控制协议/网际协议TCP/IP的套接字进行封装,得到epoll实例,所述多路复用监听实例包括所述epoll实例。5.根据权利要求4所述的方法,其特征在于,所述在所述目标QP中的等待队列中的至少一个线程中确定等待线程,通知所述等待线程接收到所述RDMA事件通知,包括:在所述目标QP中的等待队列中查...

【专利技术属性】
技术研发人员:韩运启游亮龙欣
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:

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

1