CN103412794A - 一种面向流计算的动态调度分配方法 - Google Patents
一种面向流计算的动态调度分配方法 Download PDFInfo
- Publication number
- CN103412794A CN103412794A CN2013103450087A CN201310345008A CN103412794A CN 103412794 A CN103412794 A CN 103412794A CN 2013103450087 A CN2013103450087 A CN 2013103450087A CN 201310345008 A CN201310345008 A CN 201310345008A CN 103412794 A CN103412794 A CN 103412794A
- Authority
- CN
- China
- Prior art keywords
- manipulater
- tuple
- main frame
- limit
- sqg
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
针对实际应用中持续不断的数据流具有不可预测性,而传统的静态数据存储处理机制难以应对流计算条件下对数据实时处理的需求,提出一种面向流计算的动态分配调度方法,该方法建立流序列图(StreamQueryGraph,SQG)并采用动态权重更新机制计算每条边的权重,最后在SQG中进行最短路径选择,选择权重最小的边发送元组。同时采用两种算法开销优化方案减小上下文开销。实验表明选取合适的逻辑主机个数可以显著降低系统反应时间,而增加一次调度的元祖个数使得系统上下文开销得以减小,系统性能得到提升。
Description
技术领域
本发明是一种面向流计算的动态分配调度方法,属于流计算的调度算法领域。
背景技术
在实际应用中持续不断的数据流具有不可预测性,时常会导致设备难以应对短时间内的数据爆炸,因此传统的静态数据存储处理机制难以应对流计算条件下对数据实时处理的需求。为了增强的系统的处理能力,许多并行处理架构应运而生,随之而来的是如何对并行工作的逻辑主机进行调度使之在持续不断的海量数据流面前发挥最大性能。
虽然面向数据流的应用为生产生活提供了巨大的方便,数据量过大并且不可预测的问题也使得系统较容易过载。负载均衡及接入控制一定程度上缓解了此类问题,但也导致了系统性能的下降。另一种解决方案是采用较大的缓存,将超出系统处理能力的数据流储存下来以便以后进行处理,这种方法会导致较大的延迟,对于某些实时性较高的应用,例如面向股票交易的应用来说是不可接受的。因此,对于只有一个处理单元的流处理系统来说,满足高速处理持续的数据流的需求是很难的。因此需要一种面向数据流的实时任务调度方法,能够更好的兼容实时数据流并提升系统性能。为了解决该问题,各种面向流计算的调度算法应运而生,从较为简单的RoundRobin,链式算法,Greedy到较为复杂的基于优先概率的操作器调度算法以及面向实时匹配序列的动态链算法等。部分算法着眼于提升操作器的某一指标,例如内存使用率。总的来说,静态调度策略并不适合解决动态实时数据流的调度问题。
目前对于不同环境中处理不同类型任务的系统,其调度方式分为三种:(1)长期调度,也叫高级调度,调度频率低,适用于大型系统。(2)中期调度:调度频率中等。(3)短期调度:高频率调度,也叫派遣式调度,在流计算环境中更为常见。当系统需要以较高的精度实时处理数据流,短期调度算法可以改善系统性能,增加其平滑性,即使短时间内突然出现爆炸式的数据输入也能保证稳定的数据输出。
发明内容
技术问题:本发明针对实际应用中持续不断的数据流具有不可预测性,而传统的静态数据存储处理机制难以应对流计算条件下对数据实时处理的需求,提出一种面向流计算的动态分配调度方法,建立流序列图并计算每条边的权重,最后选择权重最小的边发送元组。实验表明选取合适的逻辑主机个数可以显著降低系统反应时间,而增加一次调度的元祖个数使得系统上下文开销得以减小,系统性能得到提升。
技术方案:本发明的一种面向流计算的动态分配调度方法,提出一种面向流计算的动态分配调度方法,建立流序列图(Stream Query Graph,SQG),采用动态权重更新机制计算每条边的权重,选择权重最小的边发送元组,同时提出两种优化方案,
该方法实现过程如下:设k为主机数,首先初始化k台主机上的模板匹配器,将需要匹配的模板分配给k个逻辑主机,构成k个相同的匹配序列,然后以操作器为顶点,对应操作器的输入输出关系为边,建立流序列图SQG,对于每个逻辑主机,采用动态权重更新机制计算从某节点出去的边的权重,在流序列图SQG中进行最短路径选择,即选择权重最小的边,设定一个计数器并将其归0,然后重复下面步骤:
1)处理上一个操作器发来的元组,
2)发送已处理好的元组至下一级操作器并将首部中的操作器序列号operator_Id加1,
3)计数器加1,为了减小上下文切换,设置计数器上限为w,当计数器大于w时跳出循环,最后一级操作器将缓存的元组排序并发送给用户应用。
所述的流序列图SQG(Stream Query Graph,)是一个加权的有向无环图,具体描述如下:
每个逻辑处理单元通常包含多个操作器,这些单元是物理单元,即多核系统的各个处理器以及簇计算环境中的节点,抑或是虚拟单元;为了降低处理单元的压力,采用多个相同的处理单元以并行的方式进行处理,并且各个不同逻辑主机的操作器间按照既定规律传递信息;整个处理流程中,操作器A输出的数据作为操作器B的输入,那么所有逻辑单元中的操作器A都可以像别的逻辑单元中的操作器B发送数据;
由K个相同逻辑单元构成的操作器序列组成了一个有向图,操作器为图的顶点,源点和汇点为图中两个特殊节点;第一级的节点通过一条边与源点相连,最后一级的节点通过一条边与汇点相连,连接两个节点的一条边代表操作器之间的任务队列,边的权重代表队列中等待的任务数;操作器a可以进行选取,即选择有着某些信息的元组,操作器b可以进行聚合,即接收操作器a传来的所有特定的元组,计算是否满足触发下一步动作的条件;动态分配调度算法运行前需要建立此图,根据各个操作器的性能变化进行调度;调度进程对SQG进行运算,找到源点到汇点的最短路径,减少元组的延迟;
定义1:在SQG中,图的顶点记为V,代表流操作器,图的边记为E,代表两个操作器之间的队列,代表位于主机j上的第i级操作器,O_ i代表所有主机上的第i级操作器,Oj-代表主机j上的所有操作器,O_ |V|代表所有主机上的最后一级操作器,
定义2:一个可划分子集的有向图,从其状态i顶点出去的边只与状态i+1的顶点相连,则此图为多状态图,
定义3:由状态i到状态i+1的顶点所发生的转移称为步。设一个元组从初始状态到被处理完毕总共需要经过n级操作器,则总共需要n步,这n步构成了一条操作器路径,从起点到达操作器所花时间最少的一条路径称作最短操作器路径MIN_PATH(Oi j)。
所述的动态权重更新机制,具体过程如下:动态分配算法会选择具有最小权重的边发送处理过的元组,因此最短操作器路径必须有着最小的延迟,将延迟设为边的权重,因此每条SQG边的权重等于单个元组在该步中被处理完毕所花的时间;此外,各个逻辑主机可能需要处理多个其他主机发来的元组,所以一个上一级节点在计算某个下一级节点的负载时需要考虑单个节点上承载的来自其他上一级节点的数据流;为简化计算,设有两个相同逻辑主机,T*为元组在从第一级操作器达到最后一级操作器的最短路径上消耗的时间,则有:
T*=MIN(T1[n]+xn 1,T2[n]+xn 2) (1)
其中T1[n]和T2[n]分别为从逻辑主机1和2进入并到达第n级操作器的元组所花的时间,xn 1和xn 2分别为主机1和主机2的第n级操作器处理该元组所花时间,当主机中只有一个操作器时有:
MIN_PATH(Oi j)=MIN_PATH(Oi-1 j-1)+xi j (3)
根据定理1有:
将公式(2)和公式(4)带入公式(1)可以得到T*;由此选择合适的边进行调度。
所述的优化方案为两种减小上下文切换开销的方案,即限制每个逻辑主机能够执行的操作器数量和积累一定数量的元组再进行调度。
所述的限制每个逻辑主机能够执行的操作器数量,具体描述为:将逻辑主机进一步分割成多个子集,每个子主机拥有的操作器也是一个匹配序列的子集;此外,虽然所有逻辑主机都有着相同的匹配序列,但某些情况下某些主机上的操作器不需要被纳入到调度算法之中(例如到该操作器的网络延迟突然增大等),此时可以将SQG中的对应边设为无穷大,减少算法的计算负载。
所述的积累一定数量的元组再进行调度,具体描述为:由于操作器的调度频率是由元组到达的频率决定的,因此调整调度频率,由按照每个元组调度改为按照p个元组进行调度可以极大减少开销,并使得精度仍然保持在可接受的范围内。
有益效果:本发明针对实际应用中持续不断的数据流具有不可预测性,而传统的静态数据存储处理机制难以应对流计算条件下对数据实时处理的需求,提出一种面向流计算的动态分配调度方法,建立流序列图并计算每条边的权重,最后选择权重最小的边发送元祖。实验表明选取合适的逻辑主机个数可以显著降低系统反应时间,而增加一次调度的元祖个数使得系统上下文开销得以减小,系统性能得到提升。
附图说明
图1是多个逻辑主机协作处理同一个匹配序列;
图2是流序列图;
图3是多级操作器示意图;
图4是逻辑主机分割示意图;
图5是两个逻辑主机的模型;
图6是p=1时系统响应时间随n变化柱状图;
图7是p=1时算法队列长度随n变化柱状图;
图8是p=1时系统磁盘时间随n变化柱状图;
图9是n=3时系统响应时间随p变化柱状图;
图10是n=3时算法队列长度随p变化柱状图;
图11是n=3时系统磁盘时间随p变化柱状图。
具体实施方式
数据流处理的基本形式是原始数据流进入处理单元,由该单元内的各个操作器进行计算,或者对多股数据流进行汇聚,联合,分离等操作。
为了简单起见,假设数据流由简单事件组成。一个元组代表一个简单事件,按照一定顺序出现的多个简单事件可以看做一个复杂事件。将事先设定的逻辑序列称作匹配序列,操作器需要在数据流中找出这些序列,因此需要做大量的匹配操作。为了节约成本,每个逻辑处理单元通常包含多个操作器。这些单元可以是物理单元,例如多核系统的各个处理器以及簇计算环境中的节点,抑或是虚拟单元例如系统中的一个线程。为了降低处理单元的压力,采用多个相同的处理单元以并行的方式进行处理,并且各个不同逻辑主机的操作器间可以按照一定规律传递信息。
流序列图(Stream Query Graph,SQG)
算法运行前需要建立流序列图,根据各个操作器的性能变化进行调度。流序列图(StreamQuery Graph,SQG)是一个加权的有向无环图,由k个相同逻辑单元构成的操作器序列组成,操作器为图的顶点。源点和汇点为图中两个特殊节点。第一级的节点通过一条边与源点相连,最后一级的节点通过一条边与汇点相连。连接两个节点的一条边代表操作器之间的任务队列。边的权重代表队列中等待的任务数。
定义1:在SQG中,图的顶点V代表流操作器,边E代表两个操作器之间的队列,代表位于主机j上的第i级操作器,O_ i代表所有主机上的第i级操作器,Oj-代表主机j上的所有操作器,O_ |V|代表所有主机上的最后一级操作器。
定义2:一个可划分子集的有向图,从其状态i顶点出去的边只与状态i+1的顶点相连。则此图为多状态图。
定义3:由状态i到状态i+1的顶点所发生的转移称为步。公式(1)表示单个操作器由状态1到达状态L所需要经历的步的集合,该集合称作一条操作器路径。OSi代表处于状态i的SQG
Operator_paths(SQG)={<x1,x2,...xL>|(xi∈OSi,xi+1∈OSj)} (1)
定义4:设每个逻辑单元中有L级操作器,SQG中的所有操作器路径都是从状态1的顶点开始,到状态L的顶点结束。
针对实时性强的数据流,本算法采用短期调度方式,即高频率调度,也叫派遣式调度,旨在改善系统性能,增加其平滑性,即使短时间内突然出现爆炸式的数据输入也能保证稳定的数据输出。
SQG中的最短路径选择
调度进程对SQG进行运算,在SQG中进行最短路径选择,找到源点到汇点的最短路径,减少元组的延迟。为了使得数据延迟最小化,需要按照如下定理选择SQG中的最短路径。
定理1:SQG中的最短路径分别在每步经过从状态1到状态L的顶点,并且连接这些顶点的边的权重之和最小。
在该算法中,先将需要匹配的模板分配给k个逻辑主机,构成k个相同的匹配序列,根据定理1,每个操作器对元组进行处理并将结果发送给具有最小开销的下一个操作器(开销可以是处理时间,网络延迟度,经济成本等)。在处理结果中需要在首部中加一个operator_id,接收到该元组的主机根据该信息选择相应的操作器对元组进行处理,例如来自状态i的元组需要将operator_id设定为i+1,收到该元组的主机选取状态i+1的操作器进行处理。这种调度方式频率较高,因此在面临巨大数据压力时,相对于事件触发的调度方式,系统性能仍然可以保持相对平滑的曲线,原因在于中长期调度从制定调度策略到执行需要较多时间,在数据量巨大的流处理系统中,之前制定的最短调度路径可能已经发生了变化。定理2表明这种调度方式有着最小的延迟。
定理2:在SQG中,任意操作器路径上的延迟大于等于算法计算出的延迟。
根据定理2,该算法可以在每个时间片上找到最短的操作路径,通过并行计算减少重新调度的次数。
采用中长期调度时,系统性能得到提升,但是随着时间的推移会逐渐下降,此时调动重调度机制改善系统性能并使其回到合适的状态,然而利用动态的短期调度可以减少系统性能的波动,因为每个操作器在每步都会选择负载最小的主机,每个时间片上的操作器路径都是最优的。
动态权重更新机制
因为动态分配算法会选择具有最小权重的边发送处理过的元组,因此最短操作器路径必须有着最小的延迟。将延迟设为边的权重,因此每条SQG边的权重等于单个元组在该步中被处理完毕所花的时间。此外,各个逻辑主机可能需要处理多个其他主机发来的元组。对于每个逻辑主机,根据公式4可以得出某个状态a的节点至状态b的节点之间的边的权重:
其中q_count(Oa l,Ob h)代表位于主机l上的a状态操作器和主机h上b状态操作器之间的队列长度,eOh为主机h处理单个元组所需要的时间,w(a,b)代表某个状态a的节点至状态b的节点之间的边的权重。由于边的权重与操作器队列长度和执行时间有关,所以可以具体计算出该数值。在动态分配算法中,每个节点都可以看做源点,计算从该节点出去的边的权重并为每个元组选择具有最小权重的边。算法不断的更新权重,对分组进行调度,整个过程是动态的,并且在匹配序列时持续不断的进行。此外,动态分配算法工作在各个逻辑主机上,由各个主机自己决定下一个分组应该发送到哪去,避免了将调度放置在一个中心节点带来的开销。
动态分配算法
该算法首先将初始化k台主机上的模板匹配器,设定各个操作器的顺序,然后以操作器为顶点,对应操作器的输入输出关系为边,建立流序列图。对于每个逻辑主机,根据动态权重更新机制计算从某节点出去的边的权重,在SQG中进行最短路径选择,即选择权重最小的边,设定一个计数器并将其归0,然后重复下面步骤:
1)处理上一个操作器发来的元组。
2)发送已处理好的元组至下一级操作器并将首部的Id加1。
3)计数器加1。当计数器大于w时跳出循环,最后一级操作器将缓存的元组排序并发送给用户应用。将计数器设为w是为了减小上下文切换。
算法开销优化
由于具有最小权重的边是在不断变化之中的,对于某个操作器来说,最适合接收其处理过的数据的操作器可能位于不同的逻辑主机上。从逻辑主机的角度来看,在每次选边时都可能执行不同的操作器。显然,不停地在操作器间进行转换给主机带来了大量的上下文切换开销。因此采用如下方案减小上下文开销:
方案1:限制每个逻辑主机能够执行的操作器数量
为了减少上下文切换开销,可以将逻辑主机进一步分割成多个子集,每个子主机拥有的操作器也是一个匹配序列的子集。
此外,虽然所有逻辑主机都有着相同的匹配序列,但某些情况下某些主机上的操作器不需要被纳入到调度算法之中(例如到该操作器的网络延迟突然增大等),此时可以将SQG中的对应边设为无穷大,减少算法的计算负载。
方案2:积累一定数量的元组再进行调度
对每个元组都进行调度虽然可以保证较高的精度,却会导致系统不停地在各个主机和操作器间进行切换,导致较大的上下文切换开销。由于操作器的调度频率是由元组到达的频率决定的,因此调整调度频率,由按照每个元组调度改为按照p个元组进行调度可以极大减少开销,并使得精度仍然保持在可接受的范围内。
一种面向流计算的动态分配调度方法,针对实际应用中持续不断的数据流具有不可预测性,而传统的静态数据存储处理机制难以应对流计算条件下对数据实时处理的需求,提出一种面向流计算的动态分配调度方法,建立流序列图(Stream Query Graph,SQG)并采用动态权重更新机制计算每条边的权重,最后在SQG中进行最短路径选择,选择权重最小的边发送元组。同时采用两种算法开销优化方案减小上下文开销。
所述的面向流计算的动态调度分配算法,该算法实现过程如下:设k为主机数,首先初始化k台主机上的模板匹配器,将需要匹配的模板分配给k个逻辑主机,构成k个相同的匹配序列,然后以操作器为顶点,对应操作器的输入输出关系为边,建立流序列图SQG。对于每个逻辑主机,采用动态权重更新机制计算从某节点出去的边的权重,在流序列图SQG中进行最短路径选择,即选择权重最小的边,设定一个计数器并将其归0,然后重复下面步骤:
1)处理上一个操作器发来的元组,
2)发送已处理好的元组至下一级操作器并将首部中的操作器序列号(operator_Id)加1,
3)计数器加1,为了减小上下文切换,设置计数器上限为w,当计数器大于w时跳出循环,最后一级操作器将缓存的元组排序并发送给用户应用。
所述的流序列图SQG(Stream Query Graph,流序列图)是一个加权的有向无环图,具体描述如下:
每个逻辑处理单元通常包含多个操作器,这些单元可以是物理单元,例如多核系统的各个处理器以及簇计算环境中的节点,抑或是虚拟单元例如系统中的一个线程。为了降低处理单元的压力,采用多个相同的处理单元以并行的方式进行处理,并且各个不同逻辑主机的操作器间可以按照一定规律传递信息。整个处理流程中,操作器A输出的数据作为操作器B的输入,那么所有逻辑单元中的操作器A都可以像别的逻辑单元中的操作器B发送数据。
由K个相同逻辑单元构成的操作器序列组成了一个有向图,操作器为图的顶点,源点和汇点为图中两个特殊节点;第一级的节点通过一条边与源点相连,最后一级的节点通过一条边与汇点相连,连接两个节点的一条边代表操作器之间的任务队列,边的权重代表队列中等待的任务数;操作器a可以进行选取,即选择有着某些信息的元组,操作器b可以进行聚合,即接收a传来的所有特定的元组,计算是否满足触发下一步动作的条件。动态分配调度算法运行前需要建立此图,根据各个操作器的性能变化进行调度。调度进程对SQG进行运算,找到源点到汇点的最短路径,减少元组的延迟。
定义1:在SQG中,图的顶点V代表流操作器,边E代表两个操作器之间的队列,代表位于主机j上的第i级操作器,O_ i代表所有主机上的第i级操作器,Oj-代表主机j上的所有操作器,O_ |V|代表所有主机上的最后一级操作器。
定义2:一个可划分子集的有向图,从其状态i顶点出去的边只与状态i+1的顶点相连。则此图为多状态图。
定义3:由状态i到状态i+1的顶点所发生的转移称为步。设一个元组从初始状态到被处理完毕总共需要经过n级操作器,则总共需要n步,这n步构成了一条操作器路径,从起点到达操作器所花时间最少的一条路径称作最短操作器路径MIN_PATH(Oi j)。
所述的动态权重更新机制,具体过程如下:动态分配算法会选择具有最小权重的边发送处理过的元组,因此最短操作器路径必须有着最小的延迟,将延迟设为边的权重,因此每条SQG边的权重等于单个元组在该步中被处理完毕所花的时间;此外,各个逻辑主机可能需要处理多个其他主机发来的元组,所以一个上一级节点在计算某个下一级节点的负载时需要考虑单个节点上承载的来自其他上一级节点的数据流。为简化计算,设有两个相同逻辑主机,T*为元组在从第一级操作器达到最后一级操作器的最短路径上消耗的时间,则有:
T*=MIN(T1[n]+xn 1,T2[n]+xn 2) (1)
其中T1[n]和T2[n]分别为从逻辑主机1和2进入并到达第n级操作器的元组所花的时间,xn 1和xn 2分别为主机1和主机2的第n级操作器处理该元组所花时间。当主机中只有一个操作器时有:
否则,由于以最短路径从操作器出去的元组必定以最短路径从操作器Oi-1 j-1输入的,由此可以得到定理1:
MIN_PATH(Oi j)=MIN_PATH(Oi-1 j-1)+xi j (3)
根据定理1有:
将公式(2)和公式(4)带入公式(1)可以得到T*。由此选择合适的边进行调度。
所述的算法开销优化方案,为两种减小上下文切换开销的方案,即限制每个逻辑主机能够执行的操作器数量和积累一定数量的元组再进行调度。
所述的限制每个逻辑主机能够执行的操作器数量,具体描述为:将逻辑主机进一步分割成多个子集,每个子主机拥有的操作器也是一个匹配序列的子集。此外,虽然所有逻辑主机都有着相同的匹配序列,但某些情况下某些主机上的操作器不需要被纳入到调度算法之中(例如到该操作器的网络延迟突然增大等),此时可以将SQG中的对应边设为无穷大,减少算法的计算负载。
所述的积累一定数量的元组再进行调度,具体描述为:由于操作器的调度频率是由元组到达的频率决定的,因此调整调度频率,由按照每个元组调度改为按照p个元组进行调度可以极大减少开销,并使得精度仍然保持在可接受的范围内。
数据流处理的基本形式是原始数据流进入处理单元,由该单元内的各个操作器进行计算,或者对多股数据流进行汇聚,联合,分离等操作。为了简单起见,假设数据流由简单事件组成。一个元组代表一个简单事件,按照一定顺序出现的多个简单事件可以看做一个复杂事件。例如两个简单事件A={0031,drop,0.04,201209011030},B={0031,drop,0.05,201209011430}分别代表交易号0031的股票在2012年9月1日十点三十分时下跌百分之四和百分之五,如果事先设定了业务逻辑:若交易号0031的股票在1天内下跌5%,则卖出所持的所有此类股票。该逻辑将在AB事件出现后被触发,因此AB也可以称作一条复杂事件。
为了节约成本,每个逻辑处理单元通常包含多个操作器。这些单元可以是物理单元,例如多核系统的各个处理器以及簇计算环境中的节点,抑或是虚拟单元例如系统中的一个线程。为了降低处理单元的压力,采用多个相同的处理单元以并行的方式进行处理,并且各个不同逻辑主机的操作器间可以按照一定规律传递信息。例如图1所示为多个逻辑主机协作处理同一个匹配序列,整个处理流程中,操作器A输出的数据作为操作器B的输入,那么所有逻辑单元中的操作器A都可以向别的逻辑单元中的操作器B发送数据。
如图2所示为流序列图。操作器a可以进行选取(selection),即选择代表下跌股票信息的元组,操作器b可以进行聚合(join),即接收a传来的所有关于此股票的数据,计算是否满足出售条件。
如图4所示,为了减少上下文切换开销,可以将逻辑主机进一步分割成多个子集,每个子主机拥有的操作器也是一个匹配序列的子集。
为了体现算法的有益效果,需要建立系统模型并进行仿真分析。PetriNet是对离散并行系统的数学表示,适合于描述异步、并发的计算机系统模型。PetriNet既有严格的数学表述方式,也有直观的图形表达方式,既有丰富的系统描述手段和系统行为分析技术,并且可以在单一模型中引入并行表示法、时间轴、容错机制以及可分解的性能分析技术。因此建立基于PetriNet的模型可以较好地对并行系统进行分析。
PetriNet的元素包括:
(1)库所:圆形节点,执行动作的基本单元。
(2)有向弧:表示库所之间的状态转移。
(3)令牌:库所中的动态对象,可以从一个库所移动到另一个库所。
(4)输入门:位于输入库所之前,可以自由定义的规则集,用于增强PetriNet的灵活性。本文中代表操作器之前的先进先出队列,储存即将被操作器处理的元组。
(5)输出门:与连输入门类似。每个输出门都与一个计算功能相关联。本文中代表储存操作器的输出值的先进先出队列。
图5表示了本系统采用两个逻辑主机(k=2)时的模型。首先在起点处有一个令牌引发动作Initial,整个模型被初始化。然后到达(Arrive)动作会被不断出发,以此模拟不断到达的元组。库所OpiMj代表需要被第j个主机的第i个操作器处理的元组,如图中的Op1Mj,Op2Mj,Op3Mj.动作selj被触发后将元组送入临时缓存tBuffj中。为了模拟在逻辑主机j上的操作器,定义动作Doj,该动作选取tBuffj中的元组,处理后按照优先级放入输出门ogDi中,处理完毕的元组从输出门进入完成态。图中的igi,igiDi,ogiDi分别代表操作器i上的输入门、需要进行的动作以及其输出门。实验环境为一台主频3.2G,4G内存的服务器,软件环境基于java。数据集来源于自制的事件仿真器,采用LoadRunner[17]仿真器模拟实时大量产生事件的数据源,一个数据源绑定一个类型的事件,按照时间顺序持续生成事件并传给各个逻辑主机。事件的组合类型共有五种,如表1所示:
表1事件组合类型
由于是逻辑主机,所以主机间的数据交换开销可以看做零。实验中需要测量的参数如表2所示:
表2实验测量的参考
设逻辑主机个数为n,一次处理元组个数为p。实验共设置n个逻辑主机,数据源每秒发送500个元组。为了减小上下文切换开销,每次积累p个元组再进行处理。改变n和p的值,观察表2中参数的变换情况。
实验1:逻辑主机个数对算法性能影响
首先将p设置为1,改变逻辑主机的个数n,观察系统响应时间,队列长度,和磁盘时间的变化情况。
图6可以看出随着逻辑主机个数的增加,系统的响应时间,即元组从生成到被最后一级操作器处理完毕所需时间在逐渐减少,当n值为3时达到最小值。当n继续增大,系统的响应时间不减反增。图7表明随着逻辑主机个数的增加,系统队列长度,即各操作器前的等待队列的平均值随着逻辑主机的增加而逐渐减少,这是因为更多的逻辑主机可以同时处理更多的元组,系统不需要消耗太多的缓存资源存储尚未来得及被处理的元组,因此在缓存资源有限而数据流量又非常大时可以适当增加逻辑主机个数,减轻缓存压力。然而从图8中可以看出逻辑主机并不是越多越好,过多的逻辑主机会极大地占用系统资源,这是因为一个逻辑主机可能占用一个或多个线程,而CPU在线程之间的切换也需要很大的开销。这也可以解释为什么逻辑主机个数过多时系统的响应时间反而会变慢,此时很多线程会来回的在睡眠态和执行态之间切换,大大降低了执行效率。
实验2:一次处理元组个数对算法性能的影响
通过实验1可以发现逻辑主机个数为3时算法可以达到最大性能,但是对每个元组都进行调度会给系统带来较大压力,因此需要增加一次处理的元组个数。实验2设置n=3,调整p值,观察系统参数变化,结果如图9,10,11,所示。
图9可以看出当p=5时有着最小的响应时间,随后响应时间不断上升,在p=20时达到最大值,而p=1与p=10时的响应时间并没有太大差别。这是因为虽然一次虽然要处理更多的元组,但算法并不需要频繁对元组进行调度,上下文切换的时间却减少了,因此对响应时间并不会造成太大影响。然而p值过大依然会导致系统响应时间急剧上升。图10表明p=5时队列长度最小,随着p的增大队列长度逐渐上升,这是因为算法会等待p的值满足要求后再进行调度,导致积压在队列中的元组数量增多。不过从图11可以看出调度频率的减小会使得系统压力急剧降低,因此在数据流量较大时可以减小调度频率,即增大p的值,从而使系统不至于崩溃。
Claims (6)
1.一种面向流计算的动态分配调度方法,其特征在于该方法建立流序列图SQG,采用动态权重更新机制计算每条边的权重,选择权重最小的边发送元组,同时提出两种优化方案,
该方法实现过程如下:设k为主机数,首先初始化k台主机上的模板匹配器,将需要匹配的模板分配给k个逻辑主机,构成k个相同的匹配序列,然后以操作器为顶点,对应操作器的输入输出关系为边,建立流序列图SQG,对于每个逻辑主机,采用动态权重更新机制计算从某节点出去的边的权重,在流序列图SQG中进行最短路径选择,即选择权重最小的边,设定一个计数器并将其归0,然后重复下面步骤:
1)处理上一个操作器发来的元组,
2)发送已处理好的元组至下一级操作器并将首部中的操作器序列号operator_Id加1,
3)计数器加1,为了减小上下文切换,设置计数器上限为w,当计数器大于w时跳出循环,最后一级操作器将缓存的元组排序并发送给用户应用。
2.根据权利要求1所述的一种面向流计算的动态分配调度方法,其特征在于所述的流序列图SQG是一个加权的有向无环图,具体描述如下:
每个逻辑处理单元通常包含多个操作器,这些单元是物理单元,即多核系统的各个处理器以及簇计算环境中的节点,抑或是虚拟单元;为了降低处理单元的压力,采用多个相同的处理单元以并行的方式进行处理,并且各个不同逻辑主机的操作器间按照既定规律传递信息;整个处理流程中,操作器A输出的数据作为操作器B的输入,那么所有逻辑单元中的操作器A都可以像别的逻辑单元中的操作器B发送数据;
由K个相同逻辑单元构成的操作器序列组成了一个有向图,操作器为图的顶点,源点和汇点为图中两个特殊节点;第一级的节点通过一条边与源点相连,最后一级的节点通过一条边与汇点相连,连接两个节点的一条边代表操作器之间的任务队列,边的权重代表队列中等待的任务数;操作器a可以进行选取,即选择有着某些信息的元组,操作器b可以进行聚合,即接收操作器a传来的所有特定的元组,计算是否满足触发下一步动作的条件;动态分配调度算法运行前需要建立此图,根据各个操作器的性能变化进行调度;调度进程对SQG进行运算,找到源点到汇点的最短路径,减少元组的延迟;
定义1:在SQG中,图的顶点记为V,代表流操作器,图的边记为E,代表两个操作器之间的队列,代表位于主机j上的第i级操作器,O_ i代表所有主机上的第i级操作器,Oj_代表主机j上的所有操作器,O_ |V|代表所有主机上的最后一级操作器,
定义2:一个可划分子集的有向图,从其状态i顶点出去的边只与状态i+1的顶点相连,则此图为多状态图,
3.根据权利要求1所述的一种面向流计算的动态分配调度方法,其特征在于所述的动态权重更新机制,具体过程如下:动态分配算法会选择具有最小权重的边发送处理过的元组,因此最短操作器路径必须有着最小的延迟,将延迟设为边的权重,因此每条SQG边的权重等于单个元组在该步中被处理完毕所花的时间;此外,各个逻辑主机可能需要处理多个其他主机发来的元组,所以一个上一级节点在计算某个下一级节点的负载时需要考虑单个节点上承载的来自其他上一级节点的数据流;为简化计算,设有两个相同逻辑主机,T*为元组在从第一级操作器达到最后一级操作器的最短路径上消耗的时间,则有:
T*=MIN(T1[n]+xn 1,T2[n]+xn 2) (1)
其中T1[n]和T2[n]分别为从逻辑主机1和2进入并到达第n级操作器的元组所花的时间,xn 1和xn 2分别为主机1和主机2的第n级操作器处理该元组所花时间,当主机中只有一个操作器时有:
MIN_PATH(Oi j)=MIN_PATH(Oi-1 j-1)+xi j (3)
根据定理1有:
将公式(2)和公式(4)带入公式(1)可以得到T*;由此选择合适的边进行调度。
4.根据权利要求1所述的一种面向流计算的动态分配调度方法,其特征在于所述的优化方案为两种减小上下文切换开销的方案,即限制每个逻辑主机能够执行的操作器数量和积累一定数量的元组再进行调度。
5.根据权利要求4所述的一种面向流计算的动态分配调度方法,其特征在于所述的限制每个逻辑主机能够执行的操作器数量,具体描述为:将逻辑主机进一步分割成多个子集,每个子主机拥有的操作器也是一个匹配序列的子集;此外,虽然所有逻辑主机都有着相同的匹配序列,但某些情况下某些主机上的操作器不需要被纳入到调度算法之中,此时可以将SQG中的对应边设为无穷大,减少算法的计算负载。
6.根据权利要求4所述的一种面向流计算的动态分配调度方法,其特征在于所述的积累一定数量的元组再进行调度,具体描述为:由于操作器的调度频率是由元组到达的频率决定的,因此调整调度频率,由按照每个元组调度改为按照p个元组进行调度可以极大减少开销,并使得精度仍然保持在可接受的范围内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013103450087A CN103412794A (zh) | 2013-08-08 | 2013-08-08 | 一种面向流计算的动态调度分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013103450087A CN103412794A (zh) | 2013-08-08 | 2013-08-08 | 一种面向流计算的动态调度分配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103412794A true CN103412794A (zh) | 2013-11-27 |
Family
ID=49605807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013103450087A Pending CN103412794A (zh) | 2013-08-08 | 2013-08-08 | 一种面向流计算的动态调度分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103412794A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699455A (zh) * | 2013-12-27 | 2014-04-02 | 重庆大学 | 一种多核实时容错系统中获取准确的最晚截止时间的方法 |
CN104714753A (zh) * | 2013-12-12 | 2015-06-17 | 中兴通讯股份有限公司 | 一种数据访问存储方法及装置 |
CN105068862A (zh) * | 2015-09-12 | 2015-11-18 | 中国电子科技集团公司第十研究所 | 统一划分数据链信息处理流程的方法 |
CN105224805A (zh) * | 2015-10-10 | 2016-01-06 | 百度在线网络技术(北京)有限公司 | 基于流式计算的资源管理方法及装置 |
CN105760974A (zh) * | 2014-12-17 | 2016-07-13 | 金蝶软件(中国)有限公司 | Erp系统中业务对象分配关系的获取方法及装置 |
US9661052B1 (en) | 2016-10-14 | 2017-05-23 | International Business Machines Corporation | Reconfiguring a streaming application to reduce latency mismatches |
CN107016083A (zh) * | 2017-03-31 | 2017-08-04 | 清华大学 | 一种支持处理单元在线切换的流数据处理方法 |
CN107667341A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于向计算节点动态地分配存储资源的方法和装置 |
CN108509613A (zh) * | 2018-04-03 | 2018-09-07 | 重庆大学 | 一种利用nvm提升加密文件系统性能的方法 |
CN109800072A (zh) * | 2019-01-22 | 2019-05-24 | 深圳市简智联信息科技有限公司 | 基于边缘计算的任务调度优化方法和装置 |
CN109947565A (zh) * | 2019-03-08 | 2019-06-28 | 北京百度网讯科技有限公司 | 用于分配计算任务的方法和装置 |
CN113495923A (zh) * | 2021-02-09 | 2021-10-12 | 深圳市云网万店科技有限公司 | 用于分布式数据库执行器的调度管理方法及系统 |
CN117971173A (zh) * | 2024-02-01 | 2024-05-03 | 江西志宏数字技术有限公司 | 基于物联网的智慧数据汇聚软件系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629219A (zh) * | 2012-02-27 | 2012-08-08 | 北京大学 | 并行计算框架中的Reduce端自适应负载均衡方法 |
CN103235742A (zh) * | 2013-04-07 | 2013-08-07 | 山东大学 | 多核集群服务器上基于依赖度的并行任务分组调度方法 |
-
2013
- 2013-08-08 CN CN2013103450087A patent/CN103412794A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629219A (zh) * | 2012-02-27 | 2012-08-08 | 北京大学 | 并行计算框架中的Reduce端自适应负载均衡方法 |
CN103235742A (zh) * | 2013-04-07 | 2013-08-07 | 山东大学 | 多核集群服务器上基于依赖度的并行任务分组调度方法 |
Non-Patent Citations (1)
Title |
---|
于悦: "面向数据处理的流计算关键技术研究", <<南京邮电大学硕士学位论文>> * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714753A (zh) * | 2013-12-12 | 2015-06-17 | 中兴通讯股份有限公司 | 一种数据访问存储方法及装置 |
WO2015085747A1 (zh) * | 2013-12-12 | 2015-06-18 | 中兴通讯股份有限公司 | 一种数据访问存储方法及装置 |
CN103699455B (zh) * | 2013-12-27 | 2016-05-25 | 重庆大学 | 一种多核实时容错系统中获取准确的最晚截止时间的方法 |
CN103699455A (zh) * | 2013-12-27 | 2014-04-02 | 重庆大学 | 一种多核实时容错系统中获取准确的最晚截止时间的方法 |
CN105760974A (zh) * | 2014-12-17 | 2016-07-13 | 金蝶软件(中国)有限公司 | Erp系统中业务对象分配关系的获取方法及装置 |
CN107667341A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于向计算节点动态地分配存储资源的方法和装置 |
CN107667341B (zh) * | 2015-06-26 | 2021-08-03 | 英特尔公司 | 用于向计算节点动态地分配存储资源的方法和装置 |
CN105068862A (zh) * | 2015-09-12 | 2015-11-18 | 中国电子科技集团公司第十研究所 | 统一划分数据链信息处理流程的方法 |
CN105068862B (zh) * | 2015-09-12 | 2018-10-23 | 中国电子科技集团公司第十研究所 | 统一划分数据链信息处理流程的方法 |
WO2017059695A1 (zh) * | 2015-10-10 | 2017-04-13 | 百度在线网络技术(北京)有限公司 | 基于流式计算的资源管理方法及装置 |
CN105224805A (zh) * | 2015-10-10 | 2016-01-06 | 百度在线网络技术(北京)有限公司 | 基于流式计算的资源管理方法及装置 |
CN105224805B (zh) * | 2015-10-10 | 2018-03-16 | 百度在线网络技术(北京)有限公司 | 基于流式计算的资源管理方法及装置 |
US10021163B2 (en) | 2016-10-14 | 2018-07-10 | International Business Machines Corporation | Reconfiguring a streaming application to reduce latency mismatches |
US9661052B1 (en) | 2016-10-14 | 2017-05-23 | International Business Machines Corporation | Reconfiguring a streaming application to reduce latency mismatches |
CN107016083A (zh) * | 2017-03-31 | 2017-08-04 | 清华大学 | 一种支持处理单元在线切换的流数据处理方法 |
CN108509613A (zh) * | 2018-04-03 | 2018-09-07 | 重庆大学 | 一种利用nvm提升加密文件系统性能的方法 |
CN109800072A (zh) * | 2019-01-22 | 2019-05-24 | 深圳市简智联信息科技有限公司 | 基于边缘计算的任务调度优化方法和装置 |
CN109800072B (zh) * | 2019-01-22 | 2021-07-09 | 深圳市简智联信息科技有限公司 | 基于边缘计算的任务调度优化方法和装置 |
CN109947565A (zh) * | 2019-03-08 | 2019-06-28 | 北京百度网讯科技有限公司 | 用于分配计算任务的方法和装置 |
CN113495923A (zh) * | 2021-02-09 | 2021-10-12 | 深圳市云网万店科技有限公司 | 用于分布式数据库执行器的调度管理方法及系统 |
CN113495923B (zh) * | 2021-02-09 | 2024-08-23 | 深圳市云网万店科技有限公司 | 用于分布式数据库执行器的调度管理方法及系统 |
CN117971173A (zh) * | 2024-02-01 | 2024-05-03 | 江西志宏数字技术有限公司 | 基于物联网的智慧数据汇聚软件系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103412794A (zh) | 一种面向流计算的动态调度分配方法 | |
Liu et al. | Adaptive asynchronous federated learning in resource-constrained edge computing | |
Tao et al. | CLPS-GA: A case library and Pareto solution-based hybrid genetic algorithm for energy-aware cloud service scheduling | |
CN104572307B (zh) | 一种对虚拟资源进行弹性调度的方法 | |
WO2022267791A1 (zh) | 一种基于多目标粒子群算法的工作流调度方法、系统及存储介质 | |
CN105512179A (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
CN110990140B (zh) | 一种光电交换网络中分布式机器学习流的调度方法 | |
Wu et al. | Real-time load balancing scheduling algorithm for periodic simulation models | |
Fang et al. | GRID: Gradient routing with in-network aggregation for distributed training | |
Li et al. | Endpoint-flexible coflow scheduling across geo-distributed datacenters | |
Hu et al. | Joint deployment and request routing for microservice call graphs in data centers | |
Miao et al. | Efficient flow-based scheduling for geo-distributed simulation tasks in collaborative edge and cloud environments | |
Luo et al. | Optimizing task placement and online scheduling for distributed GNN training acceleration | |
Abdalkafor et al. | A hybrid approach for scheduling applications in cloud computing environment | |
CN111580950A (zh) | 一种提升云可靠性的自适应反馈资源调度方法 | |
CN104852860A (zh) | 一种基于队列的异构资源多目标调度策略 | |
Li et al. | Joint optimization of auto-scaling and adaptive service placement in edge computing | |
Yang et al. | Trust-based scheduling strategy for cloud workflow applications | |
CN111245906A (zh) | 一种业务请求分配方法 | |
CN115629879A (zh) | 分布式模型训练的负载均衡方法和装置 | |
Tairin et al. | Embracing Uncertainty for Equity in Resource Allocation in ML Training | |
Mithila et al. | Latency-based vector scheduling of many-task applications for a hybrid cloud | |
CN114286304A (zh) | 一种基于二维动态匹配的mec资源分配方法 | |
Wang et al. | A Scalable Deep Reinforcement Learning Model for Online Scheduling Coflows of Multi-Stage Jobs for High Performance Computing | |
Wang et al. | Online scheduling of coflows by attention-empowered scalable deep reinforcement learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131127 |