CN112817772B - 一种数据通信方法、装置、设备及存储介质 - Google Patents
一种数据通信方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112817772B CN112817772B CN201911120559.7A CN201911120559A CN112817772B CN 112817772 B CN112817772 B CN 112817772B CN 201911120559 A CN201911120559 A CN 201911120559A CN 112817772 B CN112817772 B CN 112817772B
- Authority
- CN
- China
- Prior art keywords
- thread
- network card
- interrupt
- threads
- message queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004891 communication Methods 0.000 title claims abstract description 43
- 238000012544 monitoring process Methods 0.000 claims abstract description 71
- 230000007958 sleep Effects 0.000 claims abstract description 44
- 230000005059 dormancy Effects 0.000 claims abstract description 24
- 230000004044 response Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Abstract
本申请公开了一种数据通信方法、装置、设备及存储介质,该方法的步骤包括:调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;分别通过各线程获取相应消息队列中的数据包。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而网卡中的各个消息队列中的数据包均能够被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。此外,本申请还提供一种数据通信装置、设备及存储介质,有益效果同上所述。
Description
技术领域
本申请涉及网络通信领域,特别是涉及一种数据通信方法、装置、设备及存储介质。
背景技术
随着互联网技术的高速发展,云产业的快速突起,基础架构网络逐渐向基于通用计算平台的架构融合,以支持多样化的网络系统,因此网络设备中网卡进出数据的完整性以及可靠性是衡量网络系统性能的关键指标之一。
DPDK(Data Plane Development Kit,数据平面开发套件)是当前网络设备中网卡进行数据通信所使用的控制程序,DPDK提供中断模式,也就是在当没有数据包到达网络设备的网卡时,释放与网卡相关的运算资源,进而在当数据包到达网络设备的网卡时,DPDK能够控制网络设备中断正在执行的程序,并将相应的资源分配给与网卡以对数据包进行响应。网卡实现中断的本质是网卡在数据包到达消息队列时向网卡的线程发送中断号,但是当前网络设备的UIO(Userspace I/O,用户态I/O)驱动针对于每一个网卡仅分配一个系统中断号,而当前网卡中的消息队列数量往往大于1并且通过相互独立的线程监听,因此在当前的中断模式下,难以确保网卡中的各个消息队列收到包后可以通知所有监听此网卡的线程,可能会造成数据包丢失的情况发生,无法保证网卡传入数据的完整性以及可靠性。
由此可见,提供一种数据通信方法,以相对确保网卡传入数据的完整性以及可靠性,是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的是提供一种数据通信装置、设备及存储介质,以相对确保网卡传入数据的完整性以及可靠性。
为解决上述技术问题,本申请提供一种数据通信方法,包括:
调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;
当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;
分别通过各线程获取相应消息队列中的数据包。
优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
统计网卡在历史周期内的总流量;
判断总流量是否未达到总流量阈值;
如果总流量未达到总流量阈值,则执行调用网卡对应的线程对相应的消息队列执行休眠监听操作的步骤。
优选地,在判断总流量是否未达到总流量阈值之后,方法还包括:
如果总流量达到总流量阈值,则通过网卡的线程对消息队列执行轮询操作并获取数据包。
优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
统计各线程在历史周期内的流量;
调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
调用流量未达到线程流量阈值的线程对相应的消息队列执行休眠监听操作。
优选地,方法还包括:
当存在流量达到线程流量阈值的线程时,通过流量达到线程流量阈值的线程对相应的消息队列执行轮询操作并获取数据包。
优选地,在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
对线程运行所需的中间数据进行复制操作,复制操作后中间数据的数量与线程的数量一致,且线程与中间数据存在唯一对应关系;
分别通过各线程获取相应消息队列中的数据包,包括:
分别通过各线程基于对应的中间数据获取相应消息队列中的数据包。
优选地,调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
基于DPDK代码逻辑调用网卡的线程对相应的消息队列执行休眠监听操作;
在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
删除DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位。
此外,本申请还提供一种数据通信装置,包括:
休眠监听模块,用于调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;
中断唤醒模块,用于当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;
响应模块,用于分别通过各线程获取相应消息队列中的数据包,并对获取到的数据包执行响应。
此外,本申请还提供一种数据通信设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述的数据通信方法的步骤。
此外,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据通信方法的步骤。
本申请所提供的数据通信方法,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。此外,本申请还提供一种数据通信装置、设备及存储介质,有益效果同上所述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请公开的一种数据通信方法的流程图;
图2为本申请公开的一种具体的数据通信方法的流程图;
图3为本申请公开的一种具体的数据通信方法的流程图;
图4为本申请公开的一种具体的数据通信方法的流程图;
图5为本申请公开的一种数据通信装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
DPDK(Data Plane Development Kit,数据平面开发套件)是当前网络设备中网卡进行数据通信所使用的控制程序,DPDK提供中断模式,也就是在当没有数据包到达网络设备的网卡时,释放与网卡相关的运算资源,进而在当数据包到达网络设备的网卡时,DPDK能够控制网络设备中断正在执行的程序,并将相应的资源分配给与网卡以对数据包进行响应。网卡实现中断的本质是网卡在数据包到达消息队列时向网卡的线程发送中断号,但是当前网络设备的UIO(Userspace I/O,用户态I/O)驱动针对于每一个网卡仅分配一个系统中断号,而当前网卡中的消息队列数量往往大于1并且通过相互独立的线程监听,因此在当前的中断模式下,难以确保网卡中的各个消息队列收到包后可以通知所有监听此网卡的线程,可能会造成数据包丢失的情况发生,无法保证网卡进出数据的完整性以及可靠性。
为此,本申请的核心是提供一种数据通信方法,以相对确保通过网卡传入数据的完整性以及可靠性。
请参见图1所示,本申请实施例公开了一种数据通信方法,包括:
步骤S10:调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作。
需要说明的是,本步骤通过处理器对分配给网卡的线程进行调用,并通过线程对网卡中的消息队列进行休眠监听操作。消息队列是数据包到达网卡时被缓存的空间,网卡可以通过开启多个消息队列来并行接收到来的数据包,对于每一个消息队列而言,都需要相应的线程进行监听,因此线程对于消息队列的监听是一对一进行的。由于本实施例是针对于网卡中存在多个消息队列的场景,因此对网卡中的消息队列进行监听的线程数量也应该大于1。线程负责当网卡的消息队列中到达数据包时,获取消息队列中的数据包以供处理器使用。
本实施例的目的是在网卡中具有多个消息队列的情况下,各个线程均能够对各自对应的消息队列进行中断模式下的休眠监听操作,此处所说的中断模式指的是在消息队列中没有数据包到来时,暂时释放线程的资源,使线程处于休眠状态,当消息队列中有数据包到来时,产生中断事件并重新为线程分配资源,并通过线程获取消息队列中的数据包。中断号是线程在中断时间产生时能够重新获取处理器资源的依据,因此本步骤为了确保中断模式下的各个线程都能够在消息队列中有数据包到来时,均正常获取到消息队列中的数据包,因此将分配给网卡的中断号应用在所有中断模式下的线程中。
在通常情况下,系统仅分配给网卡一个中断号,在此情况下,网卡对应的所有中断模式下的线程,均使用相同的中断号,进而当中断事件产生时,各个线程均能够对中断事件进行响应,确保各消息队列中的整体的数据包不会发生丢失。
步骤S11:当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作。
可以理解的是,在调用线程根据网卡对应的中断号执行休眠监听操作之后,当网卡产生了包含该中断号的中断事件时,也就是消息队列中到来数据包后,能够对各个线程根据该中断号执行休眠监听操作的线程进行唤醒,确保各个线程均能够恢复正常运行。
步骤S12:分别通过各线程获取相应消息队列中的数据包。
在各个线程恢复运行后,分别通过各线程获取相应消息队列中的数据包,以此确保传入网卡数据队列中的数据包能够完整的被获取。
本申请所提供的数据通信方法,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。
在上述实施例的基础上,作为一种优选的实施方式,调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
基于DPDK代码逻辑调用网卡的线程对相应的消息队列执行休眠监听操作;
在调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,方法还包括:
删除DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位。
需要说明的是,DPDK驱动由于默认在UIO场景的应用下,只支持一个中断号,因此最小的感知粒度只能到达网卡级别,并不能到达网卡队列级别,因此DPDK的源代码中,并没有让所有的线程可以监听同一网卡,即DPDK源代码中只有一个线程可以监听网卡上的中断事件。假设有3个线程同时监听同一张网卡,这3个线程分别为线程A,线程B和线程C,如果先监听网卡的线程为线程A,那么会导致当网卡上有数据包到达后,那么由于DPDK源代码中并没有让线程B和线程C监听网卡,因此当网卡上有数据包到达后线程B和线程C会仍然在处于睡眠的状态,因此产生线程B和线程C“饿死”的现象。针对此问题,本实施方式通过改动DPDK源代码的方式,将每个线程都改为可以监听网卡事件,当数据包到达网卡任意一条队列时,线程A,线程B和线程C都会被唤醒。
另外,在DPDK原有的代码中,会通过对“中断标志位自动清除使能标志位”进行使能(Enable)来防止出现“中断风暴”而影响性能。由于网卡对应多个线程,而网卡的寄存器只有一个,因此会每次写寄存器会产生资源竞争问题,而为了解决资源竞争问题当前只能通过加锁的方式,而锁的存在会阻塞处理流程,大大降低性能。在本实施方式中将表征自动清除中断标志位的使能状态的标志位清除,目的是为了防止每次中断事件发生时唤醒线程要重新对网卡写寄存器而产生资源占用以及资源竞争的情况,进一步节省了对整体资源的占用。
参见图2所示,本申请实施例公开了一种数据通信方法,包括:
步骤S20:统计网卡在历史周期内的总流量。
步骤S21:判断总流量是否未达到总流量阈值。
步骤S220:如果总流量未达到总流量阈值,则调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作。
步骤S221:当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作。
步骤S222:分别通过各线程获取相应消息队列中的数据包。
步骤S23:如果总流量达到总流量阈值,则通过网卡的线程对消息队列执行轮询操作并获取数据包。
本步骤中的历史周期可以认为是执行当前步骤之前的一段时间周期,而历史周期内网卡的总流量,即网卡在历史周期的中接收到的数据包的总量,能够体现出网卡在历史周期中数据包到来的频繁程度。
在统计得到网卡在历史周期内的总流量之后,对总流量是否达到总流量阈值进行判定,判断总流量是否达到一定的流量标准,也就是判断网卡接收数据包的繁忙程度是否达到一定水平,如果历史周期内的总流量未达到总流量阈值,则通过线程持续占用处理器资源的轮询方式对网卡中的消息队列进行监听会造成处理器资源空载的问题,从而产生较大的资源浪费,反之,如果历史周期内的总流量达到总流量阈值,采用调用线程执行休眠监听操作的中断模式,则会造成因数据包频繁到达网卡中的消息队列而频繁产生中断事件,最终产生“中断风暴”,进而频繁占用处理器的资源以处理中断事件。其中,总流量阈值应根据实际需求而预先设定,可以根据流量的整体水平而定,在此不做具体限定。
本实施例通过判断总流量是否未达到总流量阈值的方式,进一步在网络业务较少的情况下调用线程执行休眠监听操作,避免因网卡频繁产生中断而造成额外的资源开销;而在网络业务较多的情况下调用线程执行对消息队列的轮询操作,避免因产生“终端风暴”而频繁占用处理器的资源。本实施例在确保网卡传入数据的完整性以及可靠性的同时,又进一步节省了对整体资源的占用。
参见图3所示,本申请实施例公开了一种数据通信方法,包括:
步骤S30:统计各线程在历史周期内的流量。
步骤S31:调用流量未达到线程流量阈值的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作。
步骤S32:当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作。
步骤S33:分别通过各线程获取相应消息队列中的数据包。
步骤S34:当存在流量达到线程流量阈值的线程时,通过流量达到线程流量阈值的线程对相应的消息队列执行轮询操作并获取数据包。
需要说明的是,本实施例在调用网卡对应的线程对该线程相应的消息队列执行休眠监听操作之前,首先对网卡对应的各个线程在历史周期内的流量进行统计,由于各个线程均有对应的消息队列,因此此处所指的线程在历史周期内的流量实质上是线程在历史周期内从消息队列中获取到的数据包的数据量。本实施例的重点在于仅调用流量未达到线程流量阈值的线程对其相应的消息队列执行休眠监听操作,在此基础上,如果存在流量达到线程流量阈值的线程时,则通过该线程对相应的消息队列执行轮询操作并获取数据包。其中,线程流量阈值应根据实际需求而预先设定,可以根据流量的整体水平而定,在此不做具体限定。可见,本实施例根据线程在历史周期内的流量情况,仅对部分流量未达到线程流量阈值的线程执行中断模式的工作逻辑,而对量达到线程流量阈值的线程执行轮询模式,因此本实施例能够在确保网卡传入数据的完整性以及可靠性的同时,又进一步节省了对整体资源的占用。
参见图4所示,本申请实施例公开了一种数据通信方法,包括:
步骤S40:对线程运行所需的中间数据进行复制操作,复制操作后中间数据的数量与线程的数量一致,且线程与中间数据存在唯一对应关系。
步骤S41:调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作。
步骤S42:当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作。
步骤S43:分别通过各线程基于对应的中间数据获取相应消息队列中的数据包。
需要说明的是,本实施例中的中间数据指的是支持线程运行所需的参数数据或线程运行过程中产生的临时数据,考虑到当处理器针对相同的网卡建立多个线程时,可能存在多个线程共用相同的中间数据的情况,大量的中间数据没有做到线程之间的隔离,多个线程操作同一份中间数据,必定会引发线程之间的资源竞争问题,严重会导致数据错误。针对这个问题,本实施例通过将线程运行所需的中间数据复制为多份,即每一个线程只需要操作自己的中间数据即可,即解决了线程之间的资源竞争问题,进一步确保了网卡传入数据的完整性以及可靠性。
请参见图5所示,本申请实施例公开了一种数据通信装置,包括:
休眠监听模块10,用于调用网卡对应的线程对相应的消息队列执行休眠监听操作,线程的数量大于1且各线程均根据网卡对应的中断号执行休眠监听操作;
中断唤醒模块11,用于当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作;
响应模块12,用于分别通过各线程获取相应消息队列中的数据包,并对获取到的数据包执行响应。
本申请所提供的数据通信装置,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。
在前述实施例的基础上,本申请实施例对数据通信装置进行进一步的说明和优化,具体的:
在一种具体实施方式中,装置还包括:
网卡流量统计模块,用于统计所述网卡在历史周期内的总流量;
总流量判断模块,用于判断所述总流量是否未达到总流量阈值,如果所述总流量未达到所述总流量阈值,则调用休眠监听模块10。
在一种具体实施方式中,装置还包括:
网卡轮询模块,用于如果所述总流量达到所述总流量阈值,则通过所述网卡的线程对所述消息队列执行轮询操作并获取所述数据包。
在一种具体实施方式中,装置还包括:
线程流量统计模块,用于统计各所述线程在历史周期内对应的流量;
休眠监听模块10,包括:
部分休眠监听模块,用于调用所述流量未达到线程流量阈值的线程对相应的所述消息队列执行所述休眠监听操作。
在一种具体实施方式中,装置还包括:
部分轮询模块,用于当存在所述流量达到线程流量阈值的线程时,通过所述流量达到线程流量阈值的线程对相应的所述消息队列执行轮询操作并获取数据包。
在一种具体实施方式中,所述装置还包括:
数据复制模块,用于对所述线程运行所需的中间数据进行复制操作,所述复制操作后所述中间数据的数量与所述线程的数量一致,且所述线程与所述中间数据存在唯一对应关系;
响应模块12,包括:
对应响应模块,用于分别通过各所述线程基于对应的所述中间数据获取相应所述消息队列中的数据包。
在一种具体实施方式中,休眠监听模块10,包括:
DPDK休眠监听模块,用于基于DPDK代码逻辑调用所述网卡的线程对相应的所述消息队列执行所述休眠监听操作;
所述装置还包括:
标志位删除模块,用于删除所述DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位。
此外,本实施例还公开了一种数据通信设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述的数据通信方法的步骤。
本申请所提供的数据通信设备,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。
进一步的,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的数据通信方法的步骤。
本申请所提供的计算机可读存储介质,首先调用网卡对应的线程对该线程对应的消息队列执行休眠监听操作,线程的数量大于1并且各线程均根据网卡对应的中断号执行休眠监听操作,进而当网卡产生包含中断号的中断事件时,对各线程执行中断唤醒操作,进而通过各线程分别获取相应消息队列中的数据包,并对获取到的数据包执行响应的相关操作。由于网卡中各个线程均采用系统分配给网卡的中断号,因此每一个线程均能够基于中断号对相应的消息队列执行休眠监听操作,进而能够确保网卡中的各个消息队列中到达的数据包时均能够及时被线程中断响应,避免造成数据包丢失的情况发生,保证了网卡传入数据的完整性以及可靠性。
以上对本申请所提供的一种数据通信方法、装置、设备及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种数据通信方法,其特征在于,包括:
删除DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位;
基于所述DPDK代码逻辑调用网卡对应的线程对相应的消息队列执行休眠监听操作,所述线程的数量大于1且各所述线程均根据所述网卡对应的中断号执行所述休眠监听操作;
当所述网卡产生包含所述中断号的中断事件时,对各所述线程执行中断唤醒操作;
分别通过各所述线程获取相应所述消息队列中的数据包。
2.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,所述方法还包括:
统计所述网卡在历史周期内的总流量;
判断所述总流量是否未达到总流量阈值;
如果所述总流量未达到所述总流量阈值,则执行所述调用网卡对应的线程对相应的消息队列执行休眠监听操作的步骤。
3.根据权利要求2所述的数据通信方法,其特征在于,在所述判断所述总流量是否未达到总流量阈值之后,所述方法还包括:
如果所述总流量达到所述总流量阈值,则通过所述网卡的线程对所述消息队列执行轮询操作并获取所述数据包。
4.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,所述方法还包括:
统计各所述线程在历史周期内的流量;
所述调用网卡对应的线程对相应的消息队列执行休眠监听操作,包括:
调用所述流量未达到线程流量阈值的线程对相应的所述消息队列执行所述休眠监听操作。
5.根据权利要求4所述的数据通信方法,其特征在于,所述方法还包括:
当存在所述流量达到线程流量阈值的线程时,通过所述流量达到线程流量阈值的线程对相应的所述消息队列执行轮询操作并获取数据包。
6.根据权利要求1所述的数据通信方法,其特征在于,在所述调用网卡对应的线程对相应的消息队列执行休眠监听操作之前,所述方法还包括:
对所述线程运行所需的中间数据进行复制操作,所述复制操作后所述中间数据的数量与所述线程的数量一致,且所述线程与所述中间数据存在唯一对应关系;
所述分别通过各所述线程获取相应所述消息队列中的数据包,包括:
分别通过各所述线程基于对应的所述中间数据获取相应所述消息队列中的数据包。
7.一种数据通信装置,其特征在于,包括:
标志位删除模块,用于删除DPDK代码逻辑中表征自动清除中断标志位的使能状态的标志位;DPDK休眠监听模块,用于基于所述DPDK代码逻辑调用网卡对应的线程对相应的消息队列执行休眠监听操作,所述线程的数量大于1且各所述线程均根据所述网卡对应的中断号执行所述休眠监听操作;
中断唤醒模块,用于当所述网卡产生包含所述中断号的中断事件时,对各所述线程执行中断唤醒操作;
响应模块,用于分别通过各所述线程获取相应所述消息队列中的数据包,并对获取到的所述数据包执行响应。
8.一种数据通信设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的数据通信方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的数据通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120559.7A CN112817772B (zh) | 2019-11-15 | 2019-11-15 | 一种数据通信方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911120559.7A CN112817772B (zh) | 2019-11-15 | 2019-11-15 | 一种数据通信方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817772A CN112817772A (zh) | 2021-05-18 |
CN112817772B true CN112817772B (zh) | 2023-12-29 |
Family
ID=75851921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911120559.7A Active CN112817772B (zh) | 2019-11-15 | 2019-11-15 | 一种数据通信方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817772B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742096B (zh) * | 2021-07-14 | 2022-04-22 | 广州市玄武无线科技股份有限公司 | 一种事件队列的实现方法及系统 |
CN115756143B (zh) * | 2022-11-30 | 2024-03-12 | 深圳市领创星通科技有限公司 | 数据包处理的节能方法、装置、计算机设备和存储介质 |
CN116055230B (zh) * | 2023-03-28 | 2023-06-09 | 北京博上网络科技有限公司 | 一种dpdk睡眠时间控制方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
CN107005531A (zh) * | 2014-12-22 | 2017-08-01 | 英特尔公司 | 用于与处理在网络设备处接收到的分组相关联的功率管理的技术 |
CN108345502A (zh) * | 2018-01-15 | 2018-07-31 | 中兴飞流信息科技有限公司 | 基于dpdk的资源调度方法、装置、终端设备及可读存储介质 |
CN108628782A (zh) * | 2018-03-27 | 2018-10-09 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的中断转换机制的实现方法 |
CN109787777A (zh) * | 2017-11-10 | 2019-05-21 | 北京金山云网络技术有限公司 | 一种网卡模式切换方法、装置、电子设备及存储介质 |
US10409744B1 (en) * | 2016-08-30 | 2019-09-10 | Amazon Technologies, Inc. | Low-latency wake-up in a peripheral device |
-
2019
- 2019-11-15 CN CN201911120559.7A patent/CN112817772B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
CN107005531A (zh) * | 2014-12-22 | 2017-08-01 | 英特尔公司 | 用于与处理在网络设备处接收到的分组相关联的功率管理的技术 |
US10409744B1 (en) * | 2016-08-30 | 2019-09-10 | Amazon Technologies, Inc. | Low-latency wake-up in a peripheral device |
CN109787777A (zh) * | 2017-11-10 | 2019-05-21 | 北京金山云网络技术有限公司 | 一种网卡模式切换方法、装置、电子设备及存储介质 |
CN108345502A (zh) * | 2018-01-15 | 2018-07-31 | 中兴飞流信息科技有限公司 | 基于dpdk的资源调度方法、装置、终端设备及可读存储介质 |
CN108628782A (zh) * | 2018-03-27 | 2018-10-09 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的中断转换机制的实现方法 |
Non-Patent Citations (1)
Title |
---|
基于DPDK 混合中断轮询模式的报文传输框架;赵欢欢;《无线电通信技术》;第44卷(第3期);第319-322页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112817772A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112817772B (zh) | 一种数据通信方法、装置、设备及存储介质 | |
CN108572898B (zh) | 一种控制接口的方法、装置、设备、以及存储介质 | |
US10417062B2 (en) | Method and apparatus of unloading out of memory processing flow to user space | |
CN109117280B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN112383585A (zh) | 消息处理系统、方法及电子设备 | |
CN109800261B (zh) | 双数据库连接池的动态控制方法、装置及相关设备 | |
CN111124829A (zh) | 一种kubernetes计算节点状态监测方法 | |
CN110647392A (zh) | 一种基于容器集群的智能弹性伸缩方法 | |
CN109117279B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN112346834A (zh) | 数据库的请求处理方法和装置、电子设备和介质 | |
CN112398945A (zh) | 一种基于背压的业务处理方法及装置 | |
CN111104257A (zh) | 一种备份日志数据的防超时方法、装置、设备及介质 | |
WO2022095862A1 (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
CN114461668A (zh) | 一种基于线程池的mysql数据库查询方法及装置 | |
CN109002381B (zh) | 进程通信监控方法、电子装置及计算机可读存储介质 | |
CN111427674A (zh) | 一种微服务管理方法、装置及系统 | |
CN114253683B (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN112506808B (zh) | 测试任务执行方法、计算设备、计算系统和存储介质 | |
EP3929737A1 (en) | Application state control method apparatus, and terminal and computer-readable storage medium | |
CN110769046B (zh) | 一种报文获取方法、装置、电子设备及机器可读存储介质 | |
CN109062706B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN117544584B (zh) | 基于双cpu架构的控制方法、装置、交换机及介质 | |
CN113934531A (zh) | 一种高吞吐量流处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |