多线程数据调度方法、装置及网络设备的制作方法

文档序号:6332341阅读:173来源:国知局
专利名称:多线程数据调度方法、装置及网络设备的制作方法
技术领域
本发明涉及通信技术领域,尤指一种多核网络设备的多线程数据调度方法、装置 及网络设备。
背景技术
为了提高网络设备对数据流的处理速度,单纯的提高单颗中央处理单元(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所 示,执行步骤如下步骤Sll 对各线程接收到的数据流量进行监控。每个线程均会接收需要在本线程中处理的业务数据流,通过对各线程的数据流量 的实时监控,可以获取各个线程的数据流量大小。具体可以根据各业务数据流在各个线程 中的分布情况确定。具体可以按照设定的监控周期,周期性获取各个线程中的数据流量。步骤S12 根据监控到的各线程的数据流量大小,确定是否有第一线程的数据流 量需要向第二线程进行调整。根据各线程的数据流量大小确定将数据流量大的第一线程的数据流量向数据流 量小的第二线程中调整,以达到均衡各个线程的流量的目的。确定第一线程和第二线程的方式可以有多种,例如
方式一根据两个线程的流量差确定。具体包括 根据监控得到的各线程的数据流量大小,计算每两个线程之间的流量差,将计算 得到的每个流量差与设定的流量差阈值进行比较。根据比较结果,确定一个大于或大于等于设定的流量差阈值的流量差,将确定出 的流量差对应的两个线程中流量较大的线程作为第一线程,该第一线程的数据流量需要向 流量较小的第二线程进行调整。方式二 根据每个线程与设定的流量参考值的关系确定。具体包括预先设置每个线程允许的流量参考值。从数据流量大于流量参考值的线程中确定第一线程;以及从数据流量小于流量参 考值的线程中确定第一线程的数据流量需要调整到的第二线程。若是,执行步骤S13 ;否则返回步骤Sll继续监控各线程的流量。步骤S13 确定第一线程中可调整的业务数据流。由于每个线程中可能不止有一个业务数据流,因此,需要确定将那个业务的数据 流进行调整,调整到第二线程中去。步骤S14:第一线程停止获取确定出的可调整的业务数据流的报文,并标记可调 整的业务数据流在第一线程中的最后一个报文。也就是说,在将第一线程中的某个业务数据流调整到第二线程中时,需要对该业 务数据流(简称业务流)中的报文进行标记,以便在后续转发时能够顺序获取到该业务数 据流的连续的报文,而不会引起报文转发顺序的混乱。具体可以标记被调整的业务数据流 在第一线程中的最后一个报文。如图5所示,即为未作标记的情况下,将业务流A的数据报文从第一线程调整至第 二线程中处理时,在报文N-I在线程1中到达执行点3时,报文N在线程2中刚到达执行点 1,此时报文N-I的处理进度在报文N之前。但是,由于第一线程和第二线程的处理速度不 同,两个报文在不同的线程中经过一段时间处理后可能同时到达了执行点4(即出口点)。 则从执行点4进行转发时,无法保证报文N-I先于报文N转发。步骤S15 当确定第一线程中被调整的业务数据流的最后一个报文被转发时通知
第二线程。当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知 第二线程,第二线程则可以开始获取被调整的业务数据流中的报文了。在具体实现中,第一线程完成转发所处理的被调整的业务数据流中的最后一个报 文时,可以通知多线程数据调度装置中的调度模块,调度模块在获知第一线程中处理的被 调整的业务数据流的最后一个报文已经被转发后,通知第二线程,开始获取被调整的业务 数据流中的报文。步骤S16 第二线程开始获取确定出的可调整的业务数据流中的报文。具体根据标记进行调度,当根据标记确定调度完第一线程中被调整的业务数据流 的最后一个报文被转发时,第二线程启动对被调整的业务数据流的处理流程,开始从缓存 区中获取被调整的业务数据流的报文。下面通过具体的实施例详细说明通过监控各线程的流量差实现动态均衡调整或 通过监控各线程数据流量与流量参考值的关系实现动态均衡调整的具体实现过程。
实施例一本发明实施例一提供的多线程数据调度方法,通过每两个线程的数据流量差,确 定是否需要进行数据调度调整。该方法的流程如图6所示,执行步骤如下步骤SlOl 监控各线程接收到的数据流量。每个线程中可以处理至少一个业务的业务数据流。通过对每个业务的业务数据流 的数据流量监控,统计各个业务数据流的数据流量,可以获取各个线程正在处理的数据流
量。
例如如图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-I报文进行标记,则即使线程2的处理速度比较快,也不会导致转发报 文的顺序混乱。步骤S108 当确定第一线程中被调整的业务数据流的最后一个报文被转发时通 知第二线程。沿用上边的例子,当第一线程处理完业务流3的最后一个报文,该报文被转发时,通知第二线程。步骤S109 第二线程开始获取可调整的业务数据流中的报文。沿用上边的例子,如图中所示在线程1中处理完业务流3的最后一个报文,根据标 记在转发完报文N-I后,第二线程开始调度业务流3中的N和N之后的报文进行处理。实施例二
本发明实施例二提供的多线程数据调度方法,通过每个线程的数据流量与设定的 流量参考值的大小关系,确定是否需要进行数据调度调整。该方法的流程如图8所示,执行 步骤如下步骤S201 监控各线程接收到的数据流量。每个线程中可以处理至少一个业务的业务数据流。通过对每个业务的业务数据流 的数据流量监控,可以获取各个线程正在处理的数据流量。仍以如图7所示的具有两个线程的网络设备中的数据调度为例。其中线程1和线 程2。初始状态时,线程1中处理有业务流1和3,线程1中处理业务流2和4。步骤S202 判断是否需要进行数据流量调整。预先设置每个线程允许的流量参考值。流量参考值可以预先设定。优选的,流量 参考值根据接口带宽和线程数量确定。例如接口带宽为M,线程数量为K,则可以根据M确 定每个线程的平均可使用带宽,根据该平均可使用带宽作为流量参考值,或根据该平均可 使用带宽确定一个流量参考值。可以设置每个线程的流量参考值相同,也可以针对每个线 程设置不同的流量参考值。具体可以通过将监控得到的各线程的数据流量大小与流量参考值进行比较,判断 是否存在数据流量超过了设定流量参考值的线程,或通过将监控得到的各线程的数据流量 大小减去流量参考值得到的差值,与设定的第一阈值的线程,判断是否存在与流量参考值 的差值超过设定的第一阈值的线程来确定是否需要进行流量调整。若是,执行步骤S203,否 贝U,返回继续执行步骤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资源;这种调整方式也防止了流量抖动导致频繁均衡调度。且在转发出口点,只需要通过简单的临界报文标记即可实现按序转发,不需要采 用队列缓冲排序,这样不会增加数据流的处理时延。因此,上述多线程数据调度处理方式,实现简单,不需要增加额外的系统资源,就 能够保证多线程的动态均衡和报文的按序转发,该方法不会导致发送等待时延,且大大提 高了系统性能。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种多线程数据调度方法,其特征在于,包括对各线程接收到的数据流量进行监控;根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。
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任一所述的多线程数据调度装置。
全文摘要
本发明公开了一种多线程数据调度方法、装置及网络设备,该方法包括对各线程接收到的数据流量进行监控;根据监控到的各线程的数据流量大小,确定第一线程的数据流量需要向第二线程进行调整时,确定第一线程中可调整的业务数据流;第一线程停止获取所述可调整的业务数据流的报文,标记所述可调整的业务数据流在第一线程中的最后一个报文,当根据标记确定第一线程中被调整的业务数据流的最后一个报文被转发时通知第二线程,第二线程开始获取所述可调整的业务数据流中的报文。通过实时监控各线程的数据流量,在各线程之间进行数据流量均衡调整,实现了多线程数据调度的动态均衡,提高了系统性能,降低了报文转发的等待延时。
文档编号G06F9/50GK101968748SQ201010286909
公开日2011年2月9日 申请日期2010年9月17日 优先权日2010年9月17日
发明者刘忠东, 石伟, 陈宏涛, 马晓靖 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1