一种用于流式数据并行处理的负载均衡方法_3

文档序号:9304477阅读:来源:国知局
流表的每条表项记 录数据流标识和该数据流在流水线中的处理路径,其中采用五元组作为数据流标识,五元 组由源IP地址、目的IP地址、源端口、目的端口、传输层的协议类型构成。数据流在流水线 中的处理路径用按顺序排列的各个级别的缓冲队列序号表示。表1示出了一个全局流表的 示例。
[0054]表1
[0055]
[0056] 步骤103 :更新下一级的所有线程的缓冲队列的EWMA值。
[0057]EWMA值全称为ExponentiallyWeightedMoving-Average,译为指数加权移动平 均值。EWMA值是一种动态值,用E表示一个队列长度的EWMA值,用L表示队列的当前长度, 则E的计算公式为:
[0058] Ei=L!= 0 ;当t>l时,Et=w?Lt+(l-w) ?Et ! (1)
[0059] 其中,w是一个0到1之间的常量,被称作平稳因子(smoothingfactor)。当w为 0时,Et= Eti,即E的值将一直维持初始值不变;w越高,则越旧的观测值在新的取值中所 占的比例就下降的越快;而当w为1时,Et=Lt,旧的观测值已经没有影响,新值完全取决 于当前队列的瞬时长度。w的取值可以根据实际情况选择。
[0060] 从计算公式(1)可以看出,EWMA值的更新是一种增量计算,因此计算复杂度并不 高。例如,在实际应用中可以将w设为0.5,这样计算公式就演变为:
[0061] Et= Lt?l+Et !?1 (2)
[0062] 其中" >> "表示右移运算。在计算机程序指令中,移位指令所需要的指令周期通常 都是要小于乘法指令的,而该公式将原本需要的两次乘法和一次减法简化为了两次移位操 作,减少了计算复杂度。
[0063] 步骤104:选择具有最小EWMA值的缓冲队列,将当前中间数据包所述的数据流和 所选择的缓冲队列序号写入到全局流表的相应位置中,然后执行步骤106。
[0064] 步骤105 :在已有全局流表中找到当前中间数据包所属的数据流的表项,得到该 数据流在当前级别所绑定的缓冲队列序号。
[0065] 步骤106:将当前中间数据包发往所得到的缓冲队列,然后返回步骤101,开始接 收和处理下一个中间数据包。
[0066] 上述EWMA负载均衡算法是一种动态负载均衡算法,它针对流水线并行处理构架 中具有网络流量的动态性和处理线程的异构性这两个特点进行了优化,因此能够达到更好 的负载均衡效果。实验表明,相对于传统的负载均衡算法,上述优选实施例的动态均衡算法 下各线程的缓冲队列平均长度较小,波动幅度和差异也很小,体现出了更好的负载均衡效 果。
[0067] 另外,需要说明的是,本发明不仅可应用于网络数据包多核并行处理,本发明还可 以应用于其它类似的流式数据并行处理,例如视频流处理、文本处理、消息处理等。
[0068] 最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法 进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且认为所有这 样的修改、变化、应用、实施例都在本发明的精神和教导范围内。
【主权项】
1. 一种用于流式数据并行处理的负载均衡方法,所述流式数据并行处理基于并行流水 线实现,所述并行流水线包括N级处理线程,每个处理线程与一个处理器核绑定,其中N为 所述并行流水线的级别数目,所述用于流式数据并行处理的负载均衡方法包括下列步骤: 1) 对于任意一个第i级处理线程,该第i级处理线程首先完成本级的数据处理,得到第 i级中间数据包; 2) 根据各个第i+1级处理线程的负载状态,基于负载均衡算法将所述的第i级中间数 据包发送到一个第i+1级处理线程的缓冲队列; 所述i为1至N-I中的任意一个整数。2. 根据权利要求1所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 步骤2)中,所述第i+1级处理线程的负载状态根据该第i+1级处理线程的缓冲队列长度得 出。3. 根据权利要求2所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 步骤2)中,所述第i+1级处理线程的负载状态根据该第i+1级处理线程的缓冲队列长度的 EWM值得出。4. 根据权利要求3所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 步骤2)中,t时刻的所述EWM值Et= w ? L t+(l - w) ? Et i,其中Lt表示t时刻的缓冲队列 长度,Et i表示t-1时刻的EWM值,w表示平稳因子。5. 根据权利要求3所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 步骤2)中,t时刻的所述EWM值Et= Lt?l+Etl?l ;其中">>"表示右移运算。6. 根据权利要求4或5所述的用于流式数据并行处理的负载均衡方法,其特征在于,所 述步骤2)还包括:将所述的第i级中间数据包发送到具有最小EWM值的第i+1级处理线 程的缓冲队列。7. 根据权利要求4或5所述的用于流式数据并行处理的负载均衡方法,其特征在于,所 述步骤2)包括下列子步骤: 21) 接收一个第i级中间数据包;其中,i = 1,2…,N-I ; 22) 在全局流表中查找该第i级中间数据包所属的数据流,如果未找到,则执行步骤 23),如果找到,则直接根据所述全局流表的记录将所述的第i级中间数据包发送到相应的 第i+1级处理线程的缓冲队列;所述全局流表记录已处理过的所有数据流及其所对应的在 流水线中的处理路径; 23) 更新所有第i+1级处理线程的缓冲队列在当前时刻下的EWM值,选出EWM值最小 的第i+1级处理线程; 24) 将所述第i级中间数据包发往步骤23)所选出的第i+1级处理线程的缓冲队列。8. 根据权利要求7所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 步骤24)还包括:根据步骤23)的选择更新所述全局流表中所述第i级中间数据包所对应 数据流的表项。9. 根据权利要求7所述的用于流式数据并行处理的负载均衡方法,其特征在于,所述 全局流表的每条表项记录数据流标识和该数据流在流水线中的处理路径,其中采用五元组 作为数据流标识,五元组由源IP地址、目的IP地址、源端口、目的端口、传输层的协议类型 构成。10.根据权利要求1所述的用于流式数据并行处理的负载均衡方法,其特征在于,还包 括步骤: 3)将所述第i+1级处理线程视为第i级处理线程重新执行步骤1),直至第N级处理线 程完成本级的数据处理得到最终数据。
【专利摘要】本发明提供一种用于流式数据并行处理的负载均衡方法,其中用于流式数据并行处理的并行流水线包括N级处理线程,每个处理线程与一个处理器核绑定,其中N为所述并行流水线的级别数目,所述负载均衡方法包括:1)对于任意一个第i级处理线程,该第i级处理线程首先完成本级的数据处理,得到第i级中间数据包;2)根据各个第i+1级处理线程的负载状态,基于负载均衡算法将所述的第i级中间数据包发送到一个第i+1级处理线程的缓冲队列;所述i为1至N-1中的任意一个整数。本发明能够实现流水线构架内部的负载均衡,能够显著降低流水线中各个线程的缓冲队列长度,能够降低流水线中各个线程的缓冲队列长度的波动幅度以及各个线程缓冲队列长度之间的差异。
【IPC分类】G06F9/48
【公开号】CN105022671
【申请号】CN201510427072
【发明人】彭群, 张广兴, 谢高岗
【申请人】中国科学院计算技术研究所
【公开日】2015年11月4日
【申请日】2015年7月20日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1