CN101968748A - 多线程数据调度方法、装置及网络设备 - Google Patents
多线程数据调度方法、装置及网络设备 Download PDFInfo
- Publication number
- CN101968748A CN101968748A CN 201010286909 CN201010286909A CN101968748A CN 101968748 A CN101968748 A CN 101968748A CN 201010286909 CN201010286909 CN 201010286909 CN 201010286909 A CN201010286909 A CN 201010286909A CN 101968748 A CN101968748 A CN 101968748A
- Authority
- CN
- China
- Prior art keywords
- thread
- flow
- data traffic
- difference
- data
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种多线程数据调度方法、装置及网络设备,该方法包括:对各线程接收到的数据流量进行监控;根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。通过实时监控各线程的数据流量,在各线程之间进行数据流量均衡调整,实现了多线程数据调度的动态均衡,提高了系统性能,降低了报文转发的等待延时。
Description
技术领域
本发明涉及通信技术领域,尤指一种多核网络设备的多线程数据调度方法、装置及网络设备。
背景技术
为了提高网络设备对数据流的处理速度,单纯的提高单颗中央处理单元(Central Processing Unit,CPU)的运行频率已经不能满足网络设备对业务处理性能的要求。多核处理器(包含多个CPU)很好的解决了单核(包含单个CPU)频率提升的瓶颈问题。多核处理器采用多个CPU内核同时协同工作以便大量的缩短任务执行的时间。为了高效的利用多核,会把系统任务划分为多个子任务或线程,每个线程又可以划分为多个阶段执行点,这个阶段执行点就是调度内核的最小执行颗粒。这样分割是为了使每个内核都能充分得到调度。由于每一个内核同一时间只能执行一个线程中的一个阶段执行点(即一个最小执行颗粒),因此,在多核处理器中,时间、阶段执行点、内核,这三个变量具有一对一的关系,不可重叠。
通常,把时间和执行点的组合定义为一个最小的执行单元,每个内核可以自由的获取到一个空闲的执行单元并得到调度。如图1所示,给出了两个内核(内核1和内核2)的各个执行点与时间的对应关系。其中,实心黑点表示内核1的各个执行点,空心圆点表示内核2的各个执行点。
对于一个网络处理设备来说,一个系统应该划分多少个线程,每个线程该划分多少个执行阶段点,如何均衡这些线程的负载,这些都是决定整个性能的关键因素。随着CPU技术的发展,多核的概念已不再是双核或4核,而是可集成十多个甚至几十个内核。那么单纯的在一个线程里分布多核(通过划分多个执行点的方式实现调度)已经不能充分发挥系统性能,必须要在多线程多执行阶段点上分布多核,再加以负载均衡,才能充分发挥多核CPU的性能优势。
目前常用的多线程数据分配主要包括下列两种实现方式:
方式一:多线程静态分配
在系统初始化的时候将各个业务指定到各个线程中,并在后续一直由指定的线程执行分配给该线程的各个业务,这样就实现了把整个数据流中的各个业务流静态的分配到各个线程中去并一直由所分配的线程处理指定的业务数据,这种方法能很好的保证业务流的转发顺序,实现简单。但是,很有可能造成各线程中的业务流负载分配不均衡,在某段时间内有的线程业务很多,有的线程处于空闲状态,由于负载调度不均衡,导致系统性能降低,多个内核无法得到充分的调度。
例如:如图2所示的具有两个线程的一个多核CPU,线程1中分布内核1和内核2、线程2中分布内核3和内核4。在系统初始化时,将3个业务分配给了线程1、将其他的业务分配给了线程2。在系统运行过程中的某一段时间内,分配给线程1的三个业务都有数据流,而分配给线程2的业务均暂时没有数据需要转发,则如果线程被分割为2个执行阶段点,那么此时只有2个内核能有任务运行,其他内核无可执行的任务,如图中所示的内核3、4处于饥饿状态。从而导致多个内核不能充分调度,没有很好的实现负载的均衡。
方式二:多业务统一调度分配
该方式将所有收、发业务各分配一个线程。
如图3中所示,在接收端接收线程A,根据业务流的种类和流量,对每个报文按顺序编号,把各个业务流动态的分配到不同的内部处理线程(如分发到三个线程B、C、D中)中,达到内部线程负责均衡,并。将业务按照接收时间顺序构建等待队列等待发送。在发送端发送线程E将各线程处理完毕进入发送队列的业务数据,根据编号取出并按顺序发送,以保证报文的先后顺序。
对于内部处理线程来说,该方法能达到动态均衡数据流。但瓶颈会出现在收、发线程中,发送线程需要更大的缓存队列来保存内部处理线程的数据流。在接收方向对每个报文进行编号,在发送方向要对缓冲的报文进行排序,这些都是消耗CPU资源,带来额外的系统开销,消耗系统资源,并容易产生流量瓶颈。如果某个内部处理线程对报文处理时间过长或直接丢弃报文,那么编号在此报文之后的所有报文就会要在发送线程中等待,导致待处理报文的等待时延和系统性能降低。
因此,现有技术的实现方案都不能很好的实现多线程业务调度的实时动态调整和负载动态均衡,从而导致报文处理的时延长、系统整体性能降低。
发明内容
本发明实施例提供一种多线程数据调度方法、装置及网络设备,用以解决现有技术中多线程数据调度存在不能实时动态调整实现负载动态均衡、导致系统性能降低的问题。
一种多线程数据调度方法,包括:
对各线程接收到的数据流量进行监控;
根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;
第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。
一种多线程数据调度装置,包括:
监控模块,用于对各线程接收到的数据流量进行监控;
确定模块,用于根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;
执行模块,用于通知第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。
一种网络设备,包括上述的多线程数据调度装置。
本发明有益效果如下:
本发明实施例提供的多线程数据调度方法、装置及网络设备,通过对各线程接收到的数据流量进行监控;根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。该方法通过实时监控多个线程的数据流量,在各线程中的数据流量不均衡时进行调整,实现了多线程数据调度的动态均衡,该方式通过周期性的实时监控实现,只在需要时调整,不会带来额外的系统开销;且该方法只需标记确定出的第一线程中被调整的业务数据流的处于调整临界处的报文,即被调整的业务数据流在第一线程中处理的最后一个报文,保证在第一线程中的被调整的业务数据流的最后一个报文转发后第二线程才开始处理被调整的业务数据流的报文,从而够保证按序正确转发,不会造成顺序混乱和报文的转发等待,降低了报文转发的等待延时,提高了多核系统性能。
附图说明
图1为现有技术中内核的执行点与时间的对应关系示意图;
图2为现有技术中两个线程分别调度数据流的原理示意图;
图3为现有技术中多线程数据流统一调度的原理示意图;
图4为本发明实施例中多线程数据调度方法的流程图;
图5为本发明实施例中多线程数据调度的未标记报文时的示意图;
图6为本发明实施例一中多线程数据调度方法的流程图;
图7为本发明实施例中多线程数据调度的原理示例图;
图8为本发明实施例二中多线程数据调度方法的流程图;
图9为本发明实施例中多线程数据调度装置的结构示意图。
具体实施方式
本发明实施例提供的多线程数据调度方法、装置及网络设备,通过实时监控各线程的数据流量大小,对各线程的数据流量进行动态均衡调整。本发明方法的流程如图4所示,执行步骤如下:
步骤S11:对各线程接收到的数据流量进行监控。
每个线程均会接收需要在本线程中处理的业务数据流,通过对各线程的数据流量的实时监控,可以获取各个线程的数据流量大小。具体可以根据各业务数据流在各个线程中的分布情况确定。
具体可以按照设定的监控周期,周期性获取各个线程中的数据流量。
步骤S12:根据监控到的各线程的数据流量大小,确定是否有第一线程的数据流量需要向第二线程进行调整。
根据各线程的数据流量大小确定将数据流量大的第一线程的数据流量向数据流量小的第二线程中调整,以达到均衡各个线程的流量的目的。
确定第一线程和第二线程的方式可以有多种,例如:
方式一:根据两个线程的流量差确定。具体包括:
根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,将计算得到的每个流量差与设定的流量差阈值进行比较。
根据比较结果,确定一个大于或大于等于设定的流量差阈值的流量差,将确定出的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向流量较小的第二线程进行调整。
方式二:根据每个线程与设定的流量参考值的关系确定。具体包括:
预先设置每个线程允许的流量参考值。
从数据流量大于流量参考值的线程中确定第一线程;以及从数据流量小于流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程。
若是,执行步骤S13;否则返回步骤S11继续监控各线程的流量。
步骤S13:确定第一线程中可调整的业务数据流。
由于每个线程中可能不止有一个业务数据流,因此,需要确定将那个业务的数据流进行调整,调整到第二线程中去。
步骤S14:第一线程停止获取确定出的可调整的业务数据流的报文,并标记可调整的业务数据流在第一线程中的最后一个报文。
也就是说,在将第一线程中的某个业务数据流调整到第二线程中时,需要对该业务数据流(简称业务流)中的报文进行标记,以便在后续转发时能够顺序获取到该业务数据流的连续的报文,而不会引起报文转发顺序的混乱。具体可以标记被调整的业务数据流在第一线程中的最后一个报文。
如图5所示,即为未作标记的情况下,将业务流A的数据报文从第一线程调整至第二线程中处理时,在报文N-1在线程1中到达执行点3时,报文N在线程2中刚到达执行点1,此时报文N-1的处理进度在报文N之前。但是,由于第一线程和第二线程的处理速度不同,两个报文在不同的线程中经过一段时间处理后可能同时到达了执行点4(即出口点)。则从执行点4进行转发时,无法保证报文N-1先于报文N转发。
步骤S15:当确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程。
当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程则可以开始获取被调整的业务数据流中的报文了。
在具体实现中,第一线程完成转发所处理的被调整的业务数据流中的最后一个报文时,可以通知多线程数据调度装置中的调度模块,调度模块在获知第一线程中处理的被调整的业务数据流的最后一个报文已经被转发后,通知第二线程,开始获取被调整的业务数据流中的报文。
步骤S16:第二线程开始获取确定出的可调整的业务数据流中的报文。
具体根据标记进行调度,当根据标记确定调度完第一线程中被调整的业务数据流的最后一个报文被转发时,第二线程启动对被调整的业务数据流的处理流程,开始从缓存区中获取被调整的业务数据流的报文。
下面通过具体的实施例详细说明通过监控各线程的流量差实现动态均衡调整或通过监控各线程数据流量与流量参考值的关系实现动态均衡调整的具体实现过程。
实施例一:
本发明实施例一提供的多线程数据调度方法,通过每两个线程的数据流量差,确定是否需要进行数据调度调整。该方法的流程如图6所示,执行步骤如下:
步骤S101:监控各线程接收到的数据流量。
每个线程中可以处理至少一个业务的业务数据流。通过对每个业务的业务数据流的数据流量监控,统计各个业务数据流的数据流量,可以获取各个线程正在处理的数据流量。
例如:如图7所示,给出了具有两个线程的网络设备中的数据调度原理示意。其中线程1和线程2。初始状态时,线程1中处理业务流1和3,线程1中处理业务流2和4。多线程数据调度装置对这两个线程进行调度控制。其中细箭头表示控制信号的走向,宽箭头表示业务数据流的走向。
步骤S102:计算每两个线程的之间的流量差。
根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,以便确定是否存在需要将流量调整至第二线程的第一线程。
根据对各个线程的数据流量监控,当存在某一个线程的数据流量过大、而某一个线程的数据流量比较小时,可以将数据流量大的线程的业务数据流调整至数据流量小的线程中处理。计算两个线程之间的流量差一般针对需要计算流量差的两个线程,用数据流量值较大的减去数据流量值较小的一个,或者是计算得到两个线程的数据流量差值后取绝对值得到两个线程之间的流量差。
沿用上边的例子,计算线程1和线程2的流量差。上述图7所示的是以两个线程为例进行说明的,对于多个线程的情况,则需要计算每两个线程之间的流量差,以便从中确定出需要进行流量调整的第一线程和第二线程。
步骤S103:将计算得到的每个流量差与设定的流量差阈值进行比较,确定是否需要进行流量调整。
比较计算得到的流量差是否超过设定的流量差阈值,以便确定是否需要进行流量调整。若是,执行步骤S104;否则,返回继续执行步骤S101。继续监控各线程的流量。
流量差阈值可以预先设定。优选的,流量差阈值根据接口带宽和线程数量确定。例如:接口带宽为M,线程数量为K,则可以根据M确定每个线程的平均可使用带宽,根据该平均可使用带宽设置流量差阈值。如设置流量差阈值为该平均可使用带宽的20%等。
沿用上边的例子,将线程1和线程2的流量差与设定的流量差阈值比较,当其流量差大于设定的流量差阈值时,确定需要调整。对于多个线程的情况,则需要将计算每两个线程之间的流量差分别于流量差阈值比较,以便确定是否需要进行流量调整。
步骤S104:根据比较结果,确定一个大于或大于等于设定的流量差阈值的流量差。具体包括:
当比较计算得到的每个流量差与设定的流量差阈值,确定出存在一个大于或大于等于设定的流量差阈值的流量差时,则直接确定该流量差即为所要确定流量差,以便据此进行调整。
当比较计算得到的每个流量差与设定的流量差阈值,确定出存在不止一个大于或大于等于设定的流量差阈值的流量差时,选择大于或大于等于设定的流量差阈值的流量差中最大的一个。
当比较计算得到的每个流量差与设定的流量差阈值,不存在大于或大于等于设定的流量差阈值的流量差时,暂不需要调整,等待下一周期监控确定的结果。
沿用上边的例子,由于只有线程1和线程2两个线程,当线程1和线程2的流量差大于设定的流量差阈值时,确定需要根据该流量差进行流量调整。
上述图7所示的是以两个线程为例进行说明的,对于多个线程的情况,若只有一个流量差大于设定的流量差阈值时,则无需选择,如果不止有一个流量差大于设定的流量差阈值时,则需要先选择一个流量差,以便先调整该流量差对应的两个线程的流量。优选的,在选择时,优先选择流量差最大的一个
步骤S105:将确定出的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向流量较小的第二线程进行调整。
也就是说,在选择了一个大于或大于等于设定的流量差阈值的流量差之后,对该流量差对应的两个线程的流量进行调整。
沿用上边的例子,由于只有线程1和线程2两个线程,当线程1和线程2的流量差大于设定的流量差阈值时,确定需要调整。由于线程1中的业务数据流的流量比较大,线程2中的业务数据流的流量比较小,确定线程1为第一线程,线程2为第二线程,线程1中的数据流量需要向线程2中调整。
上述图7所示的是以两个线程为例进行说明的,对于多个线程的情况,则根据选择流量差对应的两个线程,确定出需要进行流量调整的第一线程和第二线程。
步骤S106:确定第一线程需要向第二线程调整业务数据流。
确定了需要进行流量调整的第一线程和第二线程后,还需要确定将第一线程中哪个具体的业务调整到第二线程中进行处理。
步骤S107:第一线程停止获取确定出的可调整的业务数据流的报文,并标记可调整的业务数据流在第一线程中的最后一个报文。
确定出需要调整的业务数据流后,第一线程停止获取可调整的业务数据流的报文,标记确定出的可调整的业务数据流在第一线程中的最后一个报文。这是由于每个线程的内部缓冲,报文处理速度等因素,使得将业务数据流由第一线程调整到第二线程中进行处理可能会引起报文转发顺序的混乱,因此,需要对第一线程中需要调整的业务数据流的最后一个报文进行标记。例如为第一线程处理的需要调整的业务数据流的最后一个报文添加中止标识。当然也可以添加其他标识,只要能标记出第一线程处理的需要调整的业务数据流的最后一个报文即可。这样在第一线程处理到被调整的业务数据流中带有标记的最后一个报文时,可以通知第二线程启动对该业务数据流的处理。
沿用上边的例子,如图7所示的,线程1中的业务流3需要调整到线程2中处理,且从报文N开始切换,在入口点线程1停止从硬件缓冲区获取业务流3的报文,对线程1中处理的业务流3的N-1报文进行标记,则即使线程2的处理速度比较快,也不会导致转发报文的顺序混乱。
步骤S108:当确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程。
沿用上边的例子,当第一线程处理完业务流3的最后一个报文,该报文被转发时,通知第二线程。
步骤S109:第二线程开始获取可调整的业务数据流中的报文。
沿用上边的例子,如图中所示在线程1中处理完业务流3的最后一个报文,根据标记在转发完报文N-1后,第二线程开始调度业务流3中的N和N之后的报文进行处理。
实施例二:
本发明实施例二提供的多线程数据调度方法,通过每个线程的数据流量与设定的流量参考值的大小关系,确定是否需要进行数据调度调整。该方法的流程如图8所示,执行步骤如下:
步骤S201:监控各线程接收到的数据流量。
每个线程中可以处理至少一个业务的业务数据流。通过对每个业务的业务数据流的数据流量监控,可以获取各个线程正在处理的数据流量。
仍以如图7所示的具有两个线程的网络设备中的数据调度为例。其中线程1和线程2。初始状态时,线程1中处理有业务流1和3,线程1中处理业务流2和4。
步骤S202:判断是否需要进行数据流量调整。
预先设置每个线程允许的流量参考值。流量参考值可以预先设定。优选的,流量参考值根据接口带宽和线程数量确定。例如:接口带宽为M,线程数量为K,则可以根据M确定每个线程的平均可使用带宽,根据该平均可使用带宽作为流量参考值,或根据该平均可使用带宽确定一个流量参考值。可以设置每个线程的流量参考值相同,也可以针对每个线程设置不同的流量参考值。
具体可以通过将监控得到的各线程的数据流量大小与流量参考值进行比较,判断是否存在数据流量超过了设定流量参考值的线程,或通过将监控得到的各线程的数据流量大小减去流量参考值得到的差值,与设定的第一阈值的线程,判断是否存在与流量参考值的差值超过设定的第一阈值的线程来确定是否需要进行流量调整。若是,执行步骤S203,否则,返回继续执行步骤S201。
沿用上边的例子,判断图中所示的线程1和线程2的流量是否需要进行调整。上述图7所示的是以两个线程为例进行说明的,对于多个线程的情况,则需要针对多个线程进行判断,是否存在某两个线程之间的流量需要进行调整。
步骤S203:从数据流量大于流量参考值的线程中确定第一线程。
根据上述步骤S202判断是否需要调整的不同方式,从数据流量大于流量参考值的线程中确定第一线程,具体下列两种方式:
(1)确定出数据流量大于流量参考值的线程,从中选择一个作为第一线程。例如:优选的,将其中数据流量最大的一个线程作为第一线程。
沿用上边的例子,将线程1和线程2的数据流量分别于设定的流量参考值进行比较,例如线程1的数据流量大于流量参考值,则确定为第一线程。
针对多个线程的情况,若存在不止一个数据流量大于流量参考值的线程,则需要从数据流量大于流量参考值的线程中选择一个,一般优先选择流量最大的一个。
(2)根据监控得到的各线程的数据流量大小减去流量参考值得到的差值,从得到的差值大于或大于等于设定的第一阈值的线程中,选择一个作为第一线程。
沿用上边的例子,将线程1和线程2的数据流量分别减去流量参考值得到差值,比较得到的差值是否大于或大于等于设定的第一阈值,例如线程1减去流量参考值的差值大于或大于等于设定的第一阈值,则线程1作为第一线程。
针对多个线程的情况,若存在不止一个本线程的数据流量减去流量参考值大于或大于等于第一阈值的线程,则需要这些线程中选择一个,一般优先选择差值最大的一个。
步骤S204:从数据流量小于流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程。
根据上述步骤S202判断是否需要调整的不同方式,根据比较出的数据流量小于流量参考值的线程确定第一线程的数据流量需要调整到的第二线程,对应的包括下列两种方式:
(1)确定出数据流量小于流量参考值的线程,从中选择一个作为第一线程。例如:优选的,将其中数据流量最小的一个线程作为第二线程。
沿用上边的例子,将线程1和线程2的数据流量分别于设定的流量参考值进行比较,例如线程2的数据流量小于流量参考值,则确定为第二线程。
针对多个线程的情况,若存在不止一个数据流量小于流量参考值的线程,则需要从数据流量小于流量参考值的线程中选择一个,一般优先选择流量最小的一个。
(2)根据监控得到的各线程的数据流量大小减去流量参考值得到的差值,从得到的差值小于或小于等于设定的第二阈值的线程中,选择一个作为第二线程。
需要说明的是,此处用各线程的流量大小减去流量参考值,得到的差值包含正负符号,设置的第二阈值一般为负值,该差值与第二阈值比较时,也需要带有正负符号比较。
沿用上边的例子,将线程1和线程2的数据流量分别减去流量参考值得到差值,比较得到的差值是否小于或小于等于设定的第二阈值,例如线程2减去流量参考值的差值小于或小于等于设定的第二阈值,则线程2作为第二线程。
针对多个线程的情况,若存在不止一个本线程的数据流量减去流量参考值小于或小于等于第二阈值的线程,则需要这些线程中选择一个,一般优先选择差值最小的一个。
上述步骤S202-步骤S204确定了需要调整业务流量的第一线程,以及其数据流量需要调整到的第二线程。
步骤S205:确定第一线程需要向第二线程调整业务数据流。
该步骤同步骤S106,此处不再一一赘述。
步骤S206:第一线程停止获取确定出的可调整的业务数据流的报文,并标记可调整的业务数据流在第一线程中的最后一个报文。
该步骤同步骤S107,此处不再一一赘述。
步骤S207:当确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程。
该步骤同步骤S108,此处不再一一赘述。
步骤S208:第二线程开始获取可调整的业务数据流中的报文。
该步骤同步骤S109,此处不再一一赘述。
当然本发明中确定第一线程和第二线程的方式不限于下面实施例一和实施例二所述的方式。例如:可以通过设置各线程的流量上限和流量下限的方式,当线程中的流量大于流量上限时确定为第一线程,小于流量下限时确定为第二线程;等等。此处不再一一列举。
根据本发明实施例提供的多线程数据调度方法,可以构建一种多线程数据调度装置,该装置可设置在网络中任何具有多线程数据处理功能的网络设备,例如:路由器、交换机等等。该装置的结构如图9所示,包括:监控模块10、确定模块20和调度模块30。
监控模块10,用于对各线程接收到的数据流量进行监控。
确定模块20,用于根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流。
调度模块30,用于通知第一线程停止获取可调整的业务数据流的报文。标记确定模块确定出的可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取可调整的业务数据流中的报文。
优选的,针对实施例一提供的多线程数据调度方法,该装置的确定模块20,具体包括:计算比较单元和第一确定单元。
计算比较单元,用于根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,将计算得到的每个流量差与设定的流量差阈值进行比较。
第一确定单元,用于根据比较结果,确定一个大于或大于等于设定的流量差阈值的计算得到的流量差,将确定出的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向流量较小的第二线程进行调整。
优选的,上述第一确定单元,具体用于当比较计算得到的每个流量差与设定的流量差阈值,确定出存在不止一个大于或大于等于设定的流量差阈值的流量差时,选择大于或大于等于设定的流量差阈值的流量差中最大的一个。
优选的,针对实施例二提供的多线程数据调度方法,该装置的确定模块20,具体包括:参考设置单元、第二确定单元和第三确定单元。
参考设置单元,用于预先设置每个线程允许的流量参考值。
第二确定单元,用于从监控到的数据流量大于参考设置单元设置的流量参考值的线程中确定第一线程。
第三确定单元,用于从监控到的数据流量小于参考设置单元设置的流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程。
优选的,上述第二确定单元,具体用于将监控得到的各线程的数据流量大小与流量参考值进行比较,确定出数据流量大于流量参考值的线程,选择确定出的线程中的一个作为第一线程;或确定监控得到的各线程的数据流量大小减去流量参考值得到的差值,从得到的差值大于或大于等于设定的第一阈值的线程中,选择一个线程作为第一线程。
优选的,上述第三确定单元,具体用于将监控得到的各线程的数据流量大小与流量参考值进行比较,确定出数据流量小于流量参考值的线程,选择确定出的线程中的一个作为第二线程;或确定监控得到的各线程的数据流量大小减去流量参考值得到的差值,从得到的差值小于或小于等于设定的第二阈值的线程中,选择一个线程作为第二线程。
上述针对实施例一具体设置的计算比较单元和第一确定单元,以及针对实施例二具体设置的参考设置单元、第二确定单元和第三确定单元。可以单独设置,也可以同时设置,当同时设置时,可以选择使用那个模块或采用哪种方式执行。
沿用上述图7所示的例子。业务流1和业务流3由线程1处理,业务流2和业务流4由线程2处理。多线程数据调度装置对这两个线程进行调度控制。其中细箭头表示控制信号的走向,宽箭头表示业务数据流的走向。
监控模块监控各个线程的数据流量。由确定模块确定是否调度调整,执行模块对报文调整的业务流的报文进行标记,实现连续被调整的业务流的报文的连续转发。如图7中,监控模块监控线程1和线程2的数据流量,确定模块确定线程1中的业务流3需要被调整到线程2中执行,在入口点线程1停止从硬件缓冲区获取业务流3的报文,在入口点标记业务流3在线程1中处理的最后一个报文;当执行模块根据标记确定在转发的出口点,针对业务流3,被标记在线程1中的最后一个报文被转发时,执行模块通知线程2,线程2开始从硬件缓冲区获取业务流3的报文。
本发明实施例提供的多线程数据调度方法及装置,通过对各个线程业务数据流进行实时监控,确定出需要进行流量调整的第一线程和第二线程,即调度第一线程的业务数据流到第二线程可以均衡负载,则从第一线程中调整部分业务流到第二线程中处理。由于该监控调整周期性实时进行,从而保证了各个线程的负载动态均衡。且通过对第一线程处理的被调整的业务数据流中的调整临界处的报文(被调整的业务数据流在第一线程的最后一个报文)进行标记,在转发完标记的第一线程中的最后一个报文时,第二线程才开始处理该被调整的业务数据流中的报文,保证了在多线程的数据调度切换过程中的报文转发顺序正确,保证了跨线程业务流报文转发的先进先出顺序。
该方法为了让每个核和每个线程上处理的数据流量达到均衡,需要实时监控各线程的流量,根据需要计算调度方法,然后动态的调整业务流在各线程中的分配情况,此方法只定时监控收集各业务流的流量、按需调度,不会长期占用CPU时间也不会导致业务流量抖动而频繁的执行均衡调度,可以只在CPU相对空闲时执行该任务,不增加系统开销,不造成数据流瓶颈。例如可以仅采用一个计数器即可实现流量监控统计,实现简单方便。
且只有各线程的流量偏差达到一定程度时才进行调度调整,否则不会执行调整,整个过程不会消耗较多的CPU资源;这种调整方式也防止了流量抖动导致频繁均衡调度。
且在转发出口点,只需要通过简单的临界报文标记即可实现按序转发,不需要采用队列缓冲排序,这样不会增加数据流的处理时延。
因此,上述多线程数据调度处理方式,实现简单,不需要增加额外的系统资源,就能够保证多线程的动态均衡和报文的按序转发,该方法不会导致发送等待时延,且大大提高了系统性能。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种多线程数据调度方法,其特征在于,包括:
对各线程接收到的数据流量进行监控;
根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;
第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。
2.如权利要求1所述的方法,其特征在于,所述根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整,具体包括:
根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,将计算得到的每个流量差与设定的流量差阈值进行比较;
根据比较结果,确定一个大于或大于等于设定的流量差阈值的所述流量差,将确定出的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向流量较小的第二线程进行调整。
3.如权利要求2所述的方法,其特征在于,所述根据比较结果,确定一个大于或大于等于设定的流量差阈值的所述流量差,具体包括:
当比较计算得到的每个流量差与设定的流量差阈值,确定出存在不止一个大于或大于等于设定的流量差阈值的流量差时,选择大于或大于等于设定的流量差阈值的流量差中最大的一个。
4.如权利要求2或3所述的方法,其特征在于,所述流量差阈值根据接口带宽和线程数量确定。
5.如权利要求1所述的方法,其特征在于,所述根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整,具体包括:
预先设置每个线程允许的流量参考值;
从监控到的数据流量大于所述流量参考值的线程中确定第一线程;以及
从监控到的数据流量小于所述流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程。
6.如权利要求5所述的方法,其特征在于,所述从数据流量大于所述流量参考值的线程中确定第一线程,具体包括:
将监控得到的各线程的数据流量大小与所述流量参考值进行比较,确定出数据流量大于所述流量参考值的线程,选择确定出的线程中的一个作为第一线程;或
确定监控得到的各线程的数据流量大小减去所述流量参考值得到的差值,从得到的差值大于或大于等于设定的第一阈值的线程中,选择一个线程作为第一线程。
7.如权利要求5所述的方法,其特征在于,所述从数据流量小于所述流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程,具体包括:
将监控得到的各线程的数据流量大小与所述流量参考值进行比较,确定出数据流量小于所述流量参考值的线程,选择确定出的线程中的一个作为第二线程;或
确定监控得到的各线程的数据流量大小减去所述流量参考值得到的差值,从得到的差值小于或小于等于设定的第二阈值的线程中,选择一个线程作为第二线程。
8.如权利要求5-7任一所述的方法,其特征在于,所述流量参考值根据接口带宽和线程数量确定。
9.一种多线程数据调度装置,其特征在于,包括:
监控模块,用于对各线程接收到的数据流量进行监控;
确定模块,用于根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;
调度模块,用于通知第一线程停止获取所述可调整的业务数据流的报文,标记所述确定模块确定出的可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。
10.如权利要求9所述的装置,其特征在于,所述确定模块,具体包括:
计算比较单元,用于根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,将计算得到的每个流量差与设定的流量差阈值进行比较;
第一确定单元,用于根据比较结果,确定一个大于或大于等于设定的流量差阈值的所述流量差,将确定出的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向流量较小的第二线程进行调整。
11.如权利要求9或10所述的装置,其特征在于,所述确定模块,具体包括:
参考设置单元,用于预先设置每个线程允许的流量参考值;
第二确定单元,用于从监控到的数据流量大于所述流量参考值的线程中确定第一线程;以及
第三确定单元,用于从监控到的数据流量小于所述流量参考值的线程中确定第一线程的数据流量需要调整到的第二线程。
12.一种网络设备,其特征在于,包括如权利要求9-11任一所述的多线程数据调度装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010286909.XA CN101968748B (zh) | 2010-09-17 | 2010-09-17 | 多线程数据调度方法、装置及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010286909.XA CN101968748B (zh) | 2010-09-17 | 2010-09-17 | 多线程数据调度方法、装置及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101968748A true CN101968748A (zh) | 2011-02-09 |
CN101968748B CN101968748B (zh) | 2014-04-02 |
Family
ID=43547908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010286909.XA Active CN101968748B (zh) | 2010-09-17 | 2010-09-17 | 多线程数据调度方法、装置及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101968748B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638410A (zh) * | 2012-04-28 | 2012-08-15 | 迈普通信技术股份有限公司 | 一种无锁并行的流量调度方法及系统 |
CN102779075A (zh) * | 2012-06-28 | 2012-11-14 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
CN103338156A (zh) * | 2013-06-17 | 2013-10-02 | 南京国电南自美卓控制系统有限公司 | 一种基于线程池的命名管道服务器并发通信方法 |
CN103746806A (zh) * | 2013-12-13 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN106470169A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种业务请求调整方法及设备 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
CN107680144A (zh) * | 2017-10-16 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种WebP文件转换的方法及装置 |
CN108076085A (zh) * | 2016-11-10 | 2018-05-25 | 北京国双科技有限公司 | 一种数据传输的方法及数据传输装置 |
CN108139938A (zh) * | 2015-07-31 | 2018-06-08 | 华为技术有限公司 | 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序 |
CN108632165A (zh) * | 2018-04-23 | 2018-10-09 | 新华三技术有限公司 | 一种报文处理方法、装置及设备 |
CN109412884A (zh) * | 2018-08-21 | 2019-03-01 | 平安科技(深圳)有限公司 | 组件的性能数据采集方法、装置及存储介质、服务器 |
CN111427616A (zh) * | 2020-04-16 | 2020-07-17 | 上海航天计算机技术研究所 | 流量控制数据下传的星载软件设置方法 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN113590621A (zh) * | 2021-07-26 | 2021-11-02 | 上海英方软件股份有限公司 | 一种数据库表比对方法及装置 |
CN113835866A (zh) * | 2021-10-09 | 2021-12-24 | 南方电网数字电网研究院有限公司 | 多线程任务调度优化方法 |
CN114024923A (zh) * | 2021-10-30 | 2022-02-08 | 江苏信而泰智能装备有限公司 | 一种多线程报文捕获方法、电子设备及计算机存储介质 |
WO2022257799A1 (zh) * | 2021-06-10 | 2022-12-15 | 华为技术有限公司 | 一种多线程转发的负载均衡方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945538A (zh) * | 2006-10-27 | 2007-04-11 | 北京金山软件有限公司 | 基于多核cpu架构的网游服务器的数据分配方法及系统 |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
-
2010
- 2010-09-17 CN CN201010286909.XA patent/CN101968748B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945538A (zh) * | 2006-10-27 | 2007-04-11 | 北京金山软件有限公司 | 基于多核cpu架构的网游服务器的数据分配方法及系统 |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638410A (zh) * | 2012-04-28 | 2012-08-15 | 迈普通信技术股份有限公司 | 一种无锁并行的流量调度方法及系统 |
CN102779075A (zh) * | 2012-06-28 | 2012-11-14 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
CN102779075B (zh) * | 2012-06-28 | 2014-12-24 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
US9218203B2 (en) | 2012-06-28 | 2015-12-22 | Huawei Technologies Co., Ltd. | Packet scheduling in a multiprocessor system using inter-core switchover policy |
CN103338156B (zh) * | 2013-06-17 | 2016-08-24 | 南京国电南自美卓控制系统有限公司 | 一种基于线程池的命名管道服务器并发通信方法 |
CN103338156A (zh) * | 2013-06-17 | 2013-10-02 | 南京国电南自美卓控制系统有限公司 | 一种基于线程池的命名管道服务器并发通信方法 |
CN103746806A (zh) * | 2013-12-13 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN103746806B (zh) * | 2013-12-13 | 2017-02-15 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN108139938A (zh) * | 2015-07-31 | 2018-06-08 | 华为技术有限公司 | 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序 |
CN106470169A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种业务请求调整方法及设备 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
WO2017133623A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN108076085A (zh) * | 2016-11-10 | 2018-05-25 | 北京国双科技有限公司 | 一种数据传输的方法及数据传输装置 |
CN107680144A (zh) * | 2017-10-16 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种WebP文件转换的方法及装置 |
CN108632165A (zh) * | 2018-04-23 | 2018-10-09 | 新华三技术有限公司 | 一种报文处理方法、装置及设备 |
CN108632165B (zh) * | 2018-04-23 | 2022-03-25 | 新华三技术有限公司 | 一种报文处理方法、装置及设备 |
CN109412884A (zh) * | 2018-08-21 | 2019-03-01 | 平安科技(深圳)有限公司 | 组件的性能数据采集方法、装置及存储介质、服务器 |
CN111427616A (zh) * | 2020-04-16 | 2020-07-17 | 上海航天计算机技术研究所 | 流量控制数据下传的星载软件设置方法 |
WO2022257799A1 (zh) * | 2021-06-10 | 2022-12-15 | 华为技术有限公司 | 一种多线程转发的负载均衡方法及相关装置 |
CN113590621A (zh) * | 2021-07-26 | 2021-11-02 | 上海英方软件股份有限公司 | 一种数据库表比对方法及装置 |
CN113590621B (zh) * | 2021-07-26 | 2024-01-23 | 上海英方软件股份有限公司 | 一种数据库表比对方法及装置 |
CN113835866A (zh) * | 2021-10-09 | 2021-12-24 | 南方电网数字电网研究院有限公司 | 多线程任务调度优化方法 |
CN113835866B (zh) * | 2021-10-09 | 2024-02-20 | 南方电网数字电网研究院有限公司 | 多线程任务调度优化方法 |
CN114024923A (zh) * | 2021-10-30 | 2022-02-08 | 江苏信而泰智能装备有限公司 | 一种多线程报文捕获方法、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101968748B (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101968748A (zh) | 多线程数据调度方法、装置及网络设备 | |
CN1981484B (zh) | 具有多条调度巷道的流水线调度器及用在其中的调度方法 | |
CN101175033B (zh) | 报文保序方法及其装置 | |
US8601178B2 (en) | Dynamic stabilization for a stream processing system | |
US7493406B2 (en) | Maximal flow scheduling for a stream processing system | |
US7068602B2 (en) | Feedback priority modulation rate controller | |
US7027457B1 (en) | Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches | |
CN101452404B (zh) | 一种嵌入式操作系统的任务调度装置及方法 | |
US20160014229A1 (en) | A method for operating a network | |
CN102132254B (zh) | 用于调度周期性过程的方法和系统 | |
US7911957B2 (en) | Zero-delay queuing method and system | |
US20220342719A1 (en) | Autonomous virtual radio access network control | |
Wu et al. | Why can some advanced Ethernet NICs cause packet reordering? | |
CN107122233A (zh) | 一种面向tsn业务的多vcpu自适应实时调度方法 | |
CN102521057A (zh) | 资源调度方法和装置 | |
Srinivasan et al. | Efficient scheduling of soft real-time applications on multiprocessors | |
CN102609307A (zh) | 多核多线程双操作系统网络设备及其控制方法 | |
EP3241320B1 (en) | System and method for supporting efficient virtual output queue (voq) packet flushing scheme in a networking device | |
CN104094562A (zh) | 以太网络的预留系统 | |
CN101557346B (zh) | 轮询式分组排队输出调度方法及分组交换节点 | |
US6996107B2 (en) | Packet shaping on a fixed segment scheduler | |
WO2023061584A1 (en) | Numerology aware cloud resource scheduling | |
CN107332786B (zh) | 一种在服务链环境下保障数据流截止时间的调度方法 | |
Shao et al. | Edge-rt: Os support for controlled latency in the multi-tenant, real-time edge | |
CN105162840B (zh) | 在线分布式请求调度和服务管理方法及代理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |