一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务调度方法、装置、电子设备及存储介质与流程

2022-02-24 12:47:14 来源:中国专利 TAG:


1.本发明涉及云计算技术领域,尤其涉及一种任务调度方法、装置、电子设备及存储介质。


背景技术:

2.目前,在云计算的实施过程中,任务调度策略决定了云计算系统的运行效率,相关技术中,在进行任务调度的时候,是根据单个调度指标制定任务调度策略,使得任务调度的效果不佳,从而使云计算系统的运行效率降低。


技术实现要素:

3.有鉴于此,本发明实施例提供一种任务调度方法、系统、电子设备及存储介质,以至少解决相关技术任务调度的效果不佳,从而使云计算系统的运行效率降低。
4.本发明实施例的技术方案是这样实现的:
5.本发明实施例提供一种任务调度方法,包括:
6.确定待调度任务集,所述待调度任务集包括至少一个待调度任务;
7.确定所述待调度任务集的任务完成成本;所述任务完成成本至少包括时间成本和资源成本;
8.根据所述任务完成成本,生成目标函数;
9.基于所述目标函数与所述任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将所述待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为所述待调度任务集对应的分配结果;
10.根据所述待调度任务集对应的分配结果,将所述待调度任务集中的每个待调度任务分别分配到至少一台虚拟机上。
11.上述方案中,所述根据所述任务完成成本,生成目标函数,包括:
12.对所述任务完成成本进行归一化处理;
13.根据归一化处理后的任务完成成本,利用线性加权和法生成目标函数;所述目标函数包括第一系数和第二系数;其中,所述第一系数表征时间成本的权重,所述第二系数表征资源成本的权重。
14.上述方案中,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
15.确定所述至少一台虚拟机中每台虚拟机的计算能力;
16.确定所述至少一台虚拟机中所有虚拟机的平均计算能力;
17.根据所述至少一台虚拟机中每台虚拟机的计算能力及所述平均计算能力,确定至少一条映射路径对应的信息素初始值;其中,
18.所述至少一条映射路径中的每条映射路径表征将所述待调度任务集中一个待调度任务分配至所述至少一台虚拟机中的一台虚拟机。
19.上述方案中,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
20.确定所述至少一台虚拟机中每台虚拟机的已执行时间;
21.确定所述至少一台虚拟机的中所有虚拟机的平均执行时间;
22.根据对应虚拟机的对应的已执行时间和所述平均执行时间,确定对应虚拟机的负载均衡因子;
23.确定对应虚拟机的启发函数;所述启发函数中包括所述负载均衡因子;所述启发函数的取值随着所述负载均衡因子的增大而增大。
24.上述方案中,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
25.当一只蚂蚁完成一次寻解时,得到所述一只蚂蚁对应的分配结果;
26.根据所述蚁群算法中的设定参数与信息素的取值,确定局部信息素浓度;所述局部信息素浓度为一只蚂蚁完成一次寻解后,信息素浓度的更新值;
27.根据所述局部信息素参数以及所述一只蚂蚁对应的分配结果,更新映射路径对应的信息素浓度。
28.上述方案中,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
29.当所有蚂蚁完成一次寻解时,根据所述每只蚂蚁对应的分配结果,计算得到第一分配结果;
30.从所述待调度任务集中任意选取两个待调度任务,作为目标任务;
31.当所述第一分配结果中两个目标任务对应的虚拟机不同时,在所述第一分配结果中交换两个目标任务对应的虚拟机,得到第二分配结果;
32.当所述第一匹配结果对应的目标函数的函数值大于所述第二分配结果对应的目标函数的函数值时,将所述第二匹配结果确定为全局分配结果;
33.当所述第一匹配结果对应的目标函数的函数值小于或等于所述第二分配结果对应的目标函数的函数值时,在满足设定规则的情况下,将第二分配结果确定为全局分配结果;在不满足设定规则的情况下,将第一分配结果确定为全局分配结果;
34.根据蚁群算法中设定的最大循环次数,将最后一次循环蚁群算法所确定的全局分配结果确定为所述待调度任务集对应的分配结果;其中,
35.所述全局分配结果为对应完成一次蚁群算法循环之后得到的分配结果。
36.上述方案中,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
37.当完成一次蚁群算法循环时,根据所述对应的全局分配结果,获取所述全局分配结果对应的目标函数的函数值;所述全局分配结果为对应完成一次蚁群算法循环之后得到的分配结果;
38.根据所述目标函数的函数值,确定全局信息素浓度;所述全局信息素浓度为完成一次蚁群算法循环后,信息素浓度的更新值;
39.根据所述全局信息素浓度以及全局分配结果,更新映射路径对应的信息素浓度。
40.本发明实施例还提供了一种任务调度装置,包括:
41.第一确定单元,用于确定待调度任务集,所述待调度任务集包括至少一个待调度任务;
42.第二确定单元,用于确定所述待调度任务集的任务完成成本;所述任务完成成本至少包括时间成本和资源成本;
43.第一生成单元,用于根据所述任务完成成本,生成目标函数;
44.第二生成单元,用于基于所述目标函数与所述任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将所述待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为所述待调度任务集对应的分配结果;
45.分配单元,用于根据所述待调度任务集对应的分配结果,将所述待调度任务集中的每个待调度任务分别分配到至少一台虚拟机上。
46.本发明实施例还提供了一种电子设备,包括:
47.处理器和用于存储能够在处理器上运行的计算机程序的存储器,
48.其中,所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
49.本发明实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
50.在本发明实施例中,通过确定每个待调度任务集的任务完成成本,其中,任务完成成本包括时间成本和资源成本,根据任务完成成本生成目标函数,基于目标函数与任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为待调度任务集对应的分配结果,根据待调度任务集对应的分配结果,将待调度任务集中每个待调度任务分配到对应的虚拟机上,能够综合考虑待调度任务集的任务完成成本,根据资源成本和时间成本制定任务调度策略,提高了服务器资源的利用率和任务执行的效率。
附图说明
51.图1为本发明一实施例提供的任务调度方法的实现流程示意图;
52.图2为本发明一实施例提供的蚁群算法得到待调度任务集对应的分配结果的示意图;
53.图3为本发明又一实施例提供的任务调度方法的实现流程示意图;
54.图4为本发明又一实施例提供的任务调度方法的实现流程示意图;
55.图5为本发明又一实施例提供的任务调度方法的实现流程示意图;
56.图6为本发明又一实施例提供的任务调度方法的实现流程示意图;
57.图7为本发明又一实施例提供的任务调度方法的实现流程示意图;
58.图8为本发明一实施例提供的确定第二分配结果的示意图;
59.图9为本发明一实施例提供的任务调度方法的实现流程示意图;
60.图10为本发明应用实施例提供的任务调度方法的流程示意图;
61.图11为本发明实施例提供的应用的任务调度装置的结构示意图;
62.图12为本发明实施例电子设备的硬件组成结构示意图。
具体实施方式
63.下面结合附图及具体实施例对本发明作进一步详细的说明。
64.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
65.需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
66.图1示出了本发明实施例提供的任务调度方法的实现流程。如图1所示,所述方法包括:
67.s101:确定待调度任务集,所述待调度任务集包括至少一个待调度任务。
68.这里,待调度任务集是由至少一个待调度任务组成的,待调度任务是指未分配到虚拟机上的任务。在实际应用中,待调度任务集中的每个待调度任务之间可以是互相独立的,没有前后依赖关系。
69.s102:确定所述待调度任务集的任务完成成本;所述任务完成成本至少包括时间成本和资源成本。
70.这里,通过待调度任务集的属性以及虚拟机的属性,确定待调度任务集的任务完成成本,其中,任务完成成本至少包括时间成本和资源成本中的。时间成本是指执行待调度任务集所需要花费的时间。虚拟机的属性包括虚拟机的单pe的计算能力、cpu数量、通信带宽等相关参数。资源成本是指执行待调度任务集所需要占用的虚拟机的资源。在实际应用中,时间成本包括任务执行时间与任务传输时间。任务执行时间的具体计算过程为:通过计算待调度任务集中每个待调度任务的执行时间,从而确定待调度任务集的任务执行时间。其中,一个待调度任务的执行时间与该待调度任务需要执行的指令的代码的长短以及执行该待调度任务的虚拟机的计算能力有关。具体地,可以通过公式计算每一个待调度任务的执行时间,其中,et
ij
表示待调度任务i在虚拟机j上的执行时间,t
length_i
表示一个待调度任务i需要执行的指令大小,vm
comp_j
代表虚拟机j处理待调度任务i的速度。其中,vm
comp_j
=vm
mips_j
×
vm
penum_j
,vm
mips_j
表示一台虚拟机j一个单位的计算能力,vm
penum_j
表示一台虚拟机j的cpu数量。通过上述计算公式,能够得到待调度任务集中每个待调度任务的执行时间,将待调度任务集中每个待调度任务的执行时间用矩阵et表示:
[0071][0072]
其中,矩阵中的et
mn
表示待调度任务集中的待调度任务m在虚拟机n上的执行时间。
[0073]
待调度任务的传输时间的计算关系式为其中,er
ij
表示待调度任务i传输到虚拟机j的时间,t
inputfilesize_i
表示待调度任务i传输到虚拟机j上时的数据量大小,vm
bw_j
表示虚拟机j的通信带宽。通过上述计算公式,能够得到待调度任务集中每个待
调度任务的传输时间,将待调度任务集中每个待调度任务的传输时间用矩阵er表示:
[0074][0075]
其中,矩阵中的er
mn
表示待调度任务集中的待调度任务m传输至虚拟机n上的传输时间。
[0076]
因此,一个待调度任务的完成时间可以通过该待调度任务的执行时间与传输时间确定,具体地,taskruntime
ij
=et
ij
er
ij
,其中taskruntime
ij
表示待调度任务i分配到虚拟机j的完成时间,et
ij
表示待调度任务i分配到虚拟机j的执行时间,et
ij
表示待调度任务i分配到虚拟机j的传输时间。那么虚拟机j的完成时间可以通过分配到该虚拟机的所有任务的完成时间之和得到,具体的计算表达式为其中,vm
completetime_j
表示虚拟机j的完成时间,表示分配到该虚拟机上的所有任务的完成时间之和。在实际应用中,将待调度任务集中的待调度任务分配到各台虚拟机上进行执行时,由于各台虚拟机是并行执行所分配到的任务,因此,待调度任务集的完成时间是最后一个完成任务的虚拟机的执行时间,即待调度任务集的完成时间可以通过最晚结束任务执行的虚拟机的结束时间进行表示,具体地,待调度任务集的完成时间可以表示为:c_time(i)=max(vm
completetime_j
),j∈[1,n],其中,c_time(i)为待调度任务集的完成时间,max(vm
completetime_j
)是指最晚结束任务执行的虚拟机的结束时间。
[0077]
待调度任务集的资源成本可以包括待调度任务集在虚拟机上执行的执行成本与待调度任务集传输到虚拟机上的传输成本。待调度任务在虚拟机上执行的执行成本可以通过待调度任务在虚拟机上的执行时间和该虚拟机单位时间的计算成本得到,待调度任务的执行成本的具体的算法为:cost_run
ij
=et
ij
×
cost_mipsj,其中,cost_run
ij
表示待调度任务i在虚拟机j上的执行成本,et
ij
表示待调度任务i在虚拟机j上的执行时间,cost_mipsj表示虚拟机j的单位时间的计算成本。虚拟机单位时间的计算成本的可以通过该虚拟机的属性得到,具体的算法可以表示为:cost_mipsj=cost_per_mips
×
pe_numj×
pe_mipsj,其中,cost_per_mips表示虚拟机j每秒处理单字长定点指令的成本,pe_numj表示虚拟机j的cpu个数,pe_mipsj表示虚拟机j的单个cpu的计算能力。一个待调度任务传输到一台虚拟机上的传输成本可以通过该待调度任务的传输时间以及该虚拟机单位时间的通信成本得到,具体的算法可以表示为:cost_trans
ij
=er
ij
×
cost_bwj,其中,cost_trans
ij
表示待调度任务i传输到虚拟机j的传输成本,er
ij
表示待调度任务i传输到虚拟机j的传输时间,cost_bwj表示虚拟机j的单位时间的传输通信成本。虚拟机的单位时间的通信成本的算法可以表示为:cost_bwj=cost_per_bw
×
bwj,其中,cost_per_bw表示虚拟机j的单位带宽的成本,bwj表示虚拟机j的通信带宽。因此,一个待调度任务在一台虚拟机上执行完成的资源成本为:cost
ij
=cost_run
ij
cost_trans
ij
。通过获取每个待调度任务在对应的虚拟机上执行完成的资源成本,可以确定所有的虚拟机完成待调度任务集时所需要的资源成本,具体的计算表达式为其中,total_cost(i)为待调度任务集中的待调度任务在所有的虚拟机上执行完成的资源成本,cost
ij
为待调度任务集中每个待调度任务在对应
的虚拟机上执行完成的资源成本的总和。
[0078]
s103:根据所述任务完成成本,生成目标函数。
[0079]
这里,根据待调度任务集的任务完成成本,生成目标函数。目标函数包含了所有的任务完成成本。目标函数中含有权重系数,通过权重系数能够选择目标函数衡量的对象。当目标函数中的一个权重系数为零的时候,说明目标函数只用于衡量其中一项任务成本。
[0080]
s104:基于所述目标函数与所述任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将所述待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为所述待调度任务集对应的分配结果。
[0081]
这里,待调度任务集的分配结果是指将待调度任务集分配到虚拟机上的结果。基于目标函数与任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为待调度任务集对应的分配结果,其中,候选分配结果是指待调度任务集中每个任务与不同虚拟机的所有分配组合。蚁群算法是一种用来寻找优化路径的概率型算法,在运行蚁群算法寻找优化路径的时候,需要对蚁群算法中的相关参数进行设置,蚁群算法中的相关参数是通过蚁群算法寻找优化路径中的必要参数,在实际应用中,相关参数至少包括待调度任务与虚拟机之间的映射路径上的信息素初始浓度、信息素更新浓度以及用于确定待调度任务匹配的虚拟机的参数,从而能够通过完成参数设置的蚁群算法,在至少两个候选分配结果中确定目标函数的函数值最小的候选分配结果,并将目标函数的函数值最小的候选分配结果输出为待调度任务集对应的分配结果。如图2所示,图2示出了通过蚁群算法得到待调度任务集对应的分配结果的示意图。t为待调度任务集,v为虚拟机集。e为待调度任务集中每个待调度任务分配路径,表示为e={e
ij
|i=1,2,
……
,m,j=1,2,
……
,n},其中,e
ij
是蚁群算法中一只蚂蚁选择的分配路径,表示任务ti分配到虚拟机vj上。如图2所示,任务集t与虚拟机集v之间的连线关系表征分配路径,例如,任务集t中的t1分配到虚拟机集v中的vm1上处理,那么t1与vm1之间的映射路径可以表示为e11。在实际应用中,蚁群会通过多次循环计算,找到一个分配结果,使这个分配结果对应的目标函数的函数值是最小的。目标函数的函数值最小表示对应的分配结果在至少两个候选分配结果中的负载均衡效果最好,表示虚拟机在完成任务的时候所需要的任务完成成本最小。在实际应用中,当目标函数只含有时间成本的时候,输出的分配结果对应的由时间成本组成的目标函数的函数值是所有候选分配结果中最小的。当目标函数只含有资源成本时,输出的分配结果对应的由资源成本组成的目标函数的函数值是所有候选分配结果中最小的。当目标函数含有时间成本与资源成本的时候,输出的分配结果对应的由时间成本与资源成本组成的目标函数的函数值是所有候选结果中最小的。
[0082]
s105:根据所述待调度任务集对应的分配结果,将所述待调度任务集中的每个待调度任务分别分配到至少一台虚拟机上。
[0083]
这里,在得到待调度任务集对应的分配结果之后,根据待调度任务集对应的分配结果,将待调度任务集中的每个待调度任务分别分配到对应的虚拟机上。在实际应用中,待调度任务集中的每个待调度任务都有对应的任务编号,虚拟机也有对应的虚拟机编号。分配结果可以通过将任务编号与对应虚拟机编号进行组合表示,根据分配结果中的任务编号与对应的虚拟机编号,就能够将待调度任务集中每个待调度任务分配到对应的虚拟机,每
一台虚拟机能够独立处理所分配到的任务。
[0084]
在上述实施例中,通过获取待调度任务集,确定代调度任务集的任务完成成本,根据任务完成成本生成目标函数,基于目标函数与任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为待调度任务集对应的分配结果,根据待调度任务集对应的分配结果,将待调度任务分配到对应的虚拟机上,能够根据一个或多个调度目标制定调度策略,得到效果更佳的分配结果,提高了资源的利用率和任务的执行效率。
[0085]
在一实施例中,如图3所示,所述根据所述任务完成成本,生成目标函数,包括:
[0086]
s301:对所述任务完成成本进行归一化处理。
[0087]
这里,对任务完成成本进行归一化处理,可以使用离差标准化方式对任务完成成本进行归一化处理。离差标准化方式的转换函数为max是指需要进行归一化处理的样本的最大值,min是指需要进行归一化处理的样本的最小值。具体地,根据转换函数,时间成本归一化处理所对应的算法为其中,c_time(i)表示未进行归一化处理的时间成本中的一个样本,c_time
min
是指未进行归一化处理的时间成本中最小的样本,表示待调度任务集中所有的待调度任务在性能最好的虚拟机上并行时的运行时间,c_time
max
是指未进行归一化处理的时间成本中最大的数值,表示待调度任务集中所有的待调度任务在性能最差的虚拟机上并行时的运行时间。未进行归一化处理的时间成本中最小的数值可以通过j∈[1,n]计算得到,其中,表示所有待调度任务在性能最好的虚拟机上执行的总时间,表示所有待调度任务传输到虚拟机的传输时间,m表示任务数量,n表示虚拟机数量。未进行归一化处理的时间成本最大的数值可以通过j∈[1,n]计算得到,其中,表示所有待调度任务在性能最差的虚拟机上执行的总时间。而对资源成本进行归一化处理的计算表达式为其中,c_cost(i)表示资源成本进行归一化处理后的数值,totalcost(i)表示未进行归一化处理的资源成本中的一个数值,totalcost
min
是指未进行归一化处理的最小资源成本的数值,表示待调度任务在虚拟机上并行执行时,所需要的最低资源成本,totalcost
max
是指未进行归一化处理的最大资源成本的数值,表示待调度任务在虚拟机并行执行时,所需要的最高资源成本。未进行归一化处理时资源成本最小值可以通过最小执行成本与最小传输成本计算得到,具体的算法可以表示为:
其中,表示所有待调度任务在性能最好的虚拟机上平均执行时间与最小的单位执行成本的乘积,即理论上平均最小执行成本。均执行时间与最小的单位执行成本的乘积,即理论上平均最小执行成本。表示所有待调度任务的平均最小传输时间与平均最小单位传输成本之积,即理论上任务的平均最小传输成本。未进行归一化处理时资源成本的最大值可以通过最大执行成本与最大传输成本计算得到,具体的算法为:最大值可以通过最大执行成本与最大传输成本计算得到,具体的算法为:其中,其中,表示所有待调度任务在性能最差的虚拟机上平均执行时间与最大单位执行成本的乘积,即理论上平均最大执行成本。表示所有待调度任务的最大平均传输时间与最大单位传输成本的乘积,即理论上最大的平均传输成本。基于上述时间成本归一化所对应的算法,以及资源成本归一化所对应的算法,完成时间成本和资源成本的归一化处理。
[0088]
s302:根据归一化处理后的任务完成成本,利用线性加权和法生成目标函数;所述目标函数包括第一系数和第二系数;其中,所述第一系数表征时间成本的权重,所述第二系数表征资源成本的权重。
[0089]
这里,当对待调度任务集的任务完成成本完成归一化处理之后,可以根据归一化处理后的任务完成成本,生成目标函数。在实际应用中,可以通过线性加权和法构造目标函数,线性加权和法是一种评价函数方法,通过按各目标的重要性赋予相应的权系数,然后对各目标组成的线性组合进行寻优的求解多目标规划问题的方法。通过线性加权和法生成的目标函数为l=w1time_cf w2c_cost,其中,time_cf代表着目标函数中的时间成本,c_cost代表着目标函数中的资源成本,w1为时间成本的权重系数,w2为资源成本的权重系数,w1与w2之间的关系为w1 w2=1。在实际应用中,可以根据实际的情况,调节时间成本的权重系数与资源成本的权重系数。当w1=0,w2=1时,则目标函数为只与资源成本有关的目标函数,那么在利用蚁群算法确定待调度任务集的分配结果时候,仅将待调度任务集的资源成本作为考虑的因素。当w1=1,w2=0时,时,则目标函数为只与时间成本有关的目标函数,在利用蚁群算法确定待调度任务集的分配结果的时候,仅将待调度任务集的时间成本作为考虑的因素。当w1=0.5,w2=0.5时时,那么目标函数中的时间成本与资源成本所占的权重一样,那么在利用蚁群算法确定待调度任务集的分配结果的时候,将综合待调度任务集的时间成本和资源成本的影响。当时间成本的权重大于资源成本的权重的时候,在利用蚁群算法确定待调度任务集的分配结果的时候,将侧重考虑待调度任务集的时间成本的影响。
[0090]
在上述实施例中,通过对待调度任务集的任务完成成本进行归一化处理,根据归
一化处理后的待调度任务集的任务完成成本,生成含有时间成本权重系数与资源成本权重系数的目标函数,能够根据实际情况的需求,调整权重系数,实现多个调度目标的相对重要性的灵活调整,能够制定更符合实际情况的任务调度策略。
[0091]
在一实施例,如图4所示,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
[0092]
s401:确定所述至少一台虚拟机中每台虚拟机的计算能力。
[0093]
这里,通过确定虚拟机的属性,从而确定至少一台虚拟机中每台虚拟机的计算能力。
[0094]
s402:确定所述至少一台虚拟机中所有虚拟机的平均计算能力。
[0095]
这里,通过确定至少一台虚拟机中每台虚拟机的计算能力,并获取虚拟机的数量,能够确定至少一台虚拟机中所有虚拟机的平均计算能力。具体的计算表达式为能够确定至少一台虚拟机中所有虚拟机的平均计算能力。具体的计算表达式为其中,vm
avgcomp
表示平均计算能力,表示所有虚拟机的计算能力的总和,n表示虚拟机的数量。
[0096]
s403:根据所述至少一台虚拟机中每台虚拟机的计算能力及所述平均计算能力,确定至少一条映射路径对应的信息素初始值;其中,
[0097]
所述至少一条映射路径中的每条映射路径表征将所述待调度任务集中一个待调度任务分配至所述至少一台虚拟机中的一台虚拟机。
[0098]
这里,根据至少一台虚拟机中每台虚拟机的计算能力及平均计算能力,确定至少一条映射路径对应的信息素初始值。具体地,通过确定至少一条映射路径的信息素初始值,其中,τ0表示一条映射路径上的信息素初始值,vm
comp_j
表示对应的虚拟机的计算能力,vm
avgcomp
表示上文中的平均计算能力。根据上式,能够确定至少一条映射路径对应的信息素初始值,其中,一条映射路径是指将待调度任务集中一个待调度任务分配到至少一台虚拟机中的一台虚拟机,即一个待调度任务分配到一台虚拟机的分配路径。在实际应用中,通过一台虚拟机的计算能力与一台虚拟机的平均计算能力的比值得到的信息素初始值,信息素初始值的数值不会偏大或偏小,从而不会导致信息素初始值太小时不利于蚁群算法的前期搜索,也不会导致信息素初始值太大时,蚁群算法在后续的搜索过程中引起信息素浓度变化剧烈。
[0099]
在上述实施例中,通过确定至少一台虚拟机中每台虚拟机的计算能力,并确定平均计算能力,根据至少一台虚拟机的计算能力及平均计算能力,确定至少一条映射路径上的信息素初始值,能够根据每个虚拟机属性,进行适当的不同映射路径上的信息素初始化,使得通过一定的区分来引导初始阶段的蚁群算法的搜索,得到更准确的分配结果。
[0100]
在一实施例中,如图5所示,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
[0101]
s501:确定所述至少一台虚拟机中每台虚拟机的已执行时间。
[0102]
这里,虚拟机的主要工作为执行分配到虚拟机上的任务,至少一台虚拟机中每台虚拟机的已执行时间是指一台虚拟机从开始执行任务到当前所经过的时间,即一台虚拟机的工作时间。
[0103]
s502:确定所述至少一台虚拟机中所有虚拟机的平均执行时间。
[0104]
这里,确定至少一台虚拟机中每台虚拟机的已执行时间,并确定虚拟机的数量,能够确定至少一台虚拟机中每台虚拟机的平均执行时间。
[0105]
s503:根据对应的已执行时间和所述平均执行时间,确定对应虚拟机的负载均衡因子。
[0106]
这里,根据一台虚拟机的已执行时间与平均执行时间,能够确定对应虚拟机的负载因子。具体地,虚拟机的负载因子为:其中,ej是一台虚拟机j的已执行时间,e
avg
为所有虚拟机已执行时间的平均执行时间。
[0107]
s504:确定对应虚拟机的启发函数;所述启发函数中包括所述负载均衡因子;所述启发函数的取值随着所述负载均衡因子的增大而增大。
[0108]
这里,在确定负载均衡因子之后,确定启发函数,其中,启发函数可以表示待调度任务集中的一个待调度任务在一台虚拟机上的执行的概率。启发函数可以根据负载均衡因子与一个待调度任务在一台虚拟机上执行的时间确定,这里,启发函数为:其中,loadj表示虚拟机的负载均衡因子,et
ij
表示待调度任务i在虚拟机j上的执行时间。根据启发函数可知,在不考虑的情况下loadj,当et
ij
越小,那么η
ij
越大,代表着该待调度任务在当前虚拟机上的执行的概率较大。虚拟机的负载均衡因子对启发函数的影响具体表现为:当虚拟机j的负载均衡因子中的ej较大时,loadj对应的数值会比较小,说明该虚拟机j的负载较大,已执行的时间较长,那么η
ij
对应的数值就比较小,则该待调度任务在虚拟机j上的执行的概率较小。同理,当虚拟机j的负载均衡因子中的ej较小时,loadj对应的数值会比较大,说明该虚拟机j的负载较小,已执行的时间较短,那么η
ij
对应的数值就比较大,则该待调度任务在虚拟机j上的执行的概率较大。
[0109]
在上述实施例中,确定至少一台虚拟机的已执行时间与平均执行时间,根据至少一台虚拟机的已执行时间与平均执行时间,确定虚拟机的负载均衡因子,确定含有负载均衡因子的启发函数,能够实现对虚拟机的负载进行动态调节,从而更好地进行任务调度。
[0110]
在一实施例中,如图6所示,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
[0111]
s601:当一只蚂蚁完成一次寻解时,得到所述一只蚂蚁对应的分配结果。
[0112]
这里,蚁群算法是通过多只蚂蚁进行寻解,当一只蚂蚁完成一次寻解,能够确定对应的一种分配结果。一只蚂蚁的寻解过程主要包括计算待调度任务集中的每个任务分配到每台虚拟机上的分配概率,以及根据分配概率确定一只蚂蚁对应的分配结果。在实际应用中,主要通过伪随机概率转移公式计算当前任务分配到至少一台虚拟机中每台虚拟机的概率。伪随机概率转移公式具体表式为:
[0113][0114]
其中,q0为一个设定的参数,其取值范围为(0,1),q为一个取值范围[0,1]的随机数。当一只蚂蚁为一个待调度任务选取虚拟机的时候,首先产生一个随机数q,将随机数q与设定的参数q0进行比较,如果出现q≤q0的情况,那么计算一只蚂蚁将一个待调度任务分配
到每台虚拟机上的分配概率,其中,α表示信息素的启发因子,β表示期望启发因子,τ
is
(t)表示在t时刻时,待调度任务与一台虚拟机的映射路径上的信息素浓度,η
is
表示虚拟机的启发函数,根据上述各个参数,计算得到在q≤q0的情况下,一只蚂蚁将一个待调度任务分配到至少一台虚拟机中每台虚拟机上的分配概率。当出现q》q0的情况,那么一只蚂蚁将一个待调度任务分配到至少一台虚拟机中每台虚拟机上的分配概率则为s,其中s的具体算术表达式为:
[0115][0116]
其中,τ
ij
(t)表示在t时刻时,待调度任务i与虚拟机j的映射路径上的信息素浓度,η
ij
表示虚拟机j的启发函数,根据上述各个参数,计算得到在的情况下,一只蚂蚁将一个待调度任务分配到至少一台虚拟机中每台虚拟机上的分配概率s。在实际应用中,可以根据实际情况的需要,设定q0的数值。在得到分配概率之后,利用轮盘赌法为一个待调度任务选择分配的虚拟机,具体过程为,一个轮盘被分为n块扇形区域,一块扇形区域对应一台虚拟机,扇形区域的面积是根据一只蚂蚁通过伪随机概率转移规则计算出的分配概率而确定的,其中,当分配概率的数值越大,在轮盘上对应的扇形面积越大,即当分配概率越大,代表着虚拟机分配到待调度任务的几率越大。当确定轮盘上各块扇形区域的面积之后,转动轮盘,当轮盘停止转动的时候,轮盘指针所停留的扇形区域代表着分配到该待调度任务的虚拟机。通过一只蚂蚁得到的待调度任务集中每个待调度任务对应的分配概率,并通过轮盘赌法,最终能够确定待调度任务集中每个待调度任务所对应的虚拟机,从而能够得到一只蚂蚁对应的分配结果。
[0117]
s602:根据所述蚁群算法中的设定参数与信息素的取值,确定局部信息素浓度;所述局部信息素浓度为一只蚂蚁完成一次寻解后,信息素浓度的更新值。
[0118]
这里,当一只蚂蚁完成一次寻解时,也就是当得到一只蚂蚁对应的分配结果的时候,需要重新确定局部信息素浓度。局部信息素浓度更新规则主要与当前残留的信息素浓度及增加的信息素浓度有关,根据信息素的取值与蚁群算法中的信设定参数,能够得到局部信息素浓度。局部信息素浓度更新规则为:τ
ij
(t 1)=(1-ρ)τ
ij
(t) ρδτ
ij
(t),其中,ρ的取值范围为(0,1],代表信息素挥发因子,(1-ρ)的取值范围为(0,1],代表信息素的残留程度,ρ为蚁群算法中的设定参数,δτ
ij
(t)表示在t时刻待调度任务i与虚拟机j之间的映射路径上的信息素浓度的增加量。局部信息素浓度的增加量通过下面的公式计算得到:
[0119][0120]
其中,l代表一只蚂蚁对应的分配结果的目标函数的函数值,tk(t)代表第k只蚂蚁在第t次蚁群算法循环中寻解,主要是用于判断蚂蚁是否处于蚁群算法的循环中,当蚂蚁不处于蚁群算法的循环中时,则信息素浓度的增加量为零。根据信息素浓度的增加量的算数表达式,可以得知,当目标函数的函数值越大,那么信息素浓度的增加量越小,反之,当目标函数的函数值越小,信息素浓度的增加量越大,其中,目标函数的函数值的越小,代表着对
应的分配结果为较优的分配结果,从而能够增大较优分配结果被选择的概率。根据信息素浓度的增加量的算术表达式与局部信息素更新规则,能够计算得到局部信息素浓度。
[0121]
s603:根据所述局部信息素浓度以及所述一只蚂蚁对应的所述分配结果,更新映射路径对应的信息素浓度。
[0122]
这里,在确定局部信息素浓度之后,根据确定的局部信息素浓度与一只蚂蚁对应的分配结果,将对应的信息素浓度进行更新。一只蚂蚁对应的分配结果中表明了待调度任务与虚拟机的分配情况,通过映射路径,将一个待调度任务分配到一台虚拟机上。因此,在对信息素浓度进行更新的时候,是根据一只蚂蚁对应的分配结果,得到相应的映射路径,更新映射路径上的信息素浓度,将映射路径上的信息素浓度设置为局部信息素浓度。
[0123]
在上述实施例中,通过获取一只蚂蚁对应的分配结果,根据蚁群算法中的信息素设定参数与信息素的取值,确定局部信息素浓度,对分配结果中的映射路径上的信息素浓度进行更新,能够避免不同映射路径上的信息素浓度差距过大的现象,增加了蚁群算法寻找到更佳分配方案的几率。
[0124]
在一实施例中,如图7所示,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
[0125]
s701:当所有蚂蚁完成一次寻解时,根据所述每只蚂蚁对应的分配结果,计算得到第一分配结果。
[0126]
这里,当所有蚂蚁完成一次寻解的时候,也就是完成一次蚁群算法循环,根据每只蚂蚁对应的分配结果,计算出第一分配结果,其中,第一分配结果的目标函数的函数值是所有蚂蚁对应的分配结果中目标函数的函数值最小的。
[0127]
s702:从所述待调度任务集中任意选取两个待调度任务,作为目标任务。
[0128]
这里,在确定第一分配结果之后,从待调度任务集中任意选取两个待调度任务,将这两个待调度任务作为目标任务。
[0129]
s703:当所述第一分配结果中两个目标任务对应的虚拟机不同时,在所述第一分配结果中交换两个目标任务对应的虚拟机,得到第二分配结果。
[0130]
这里,在确定第一分配结果和目标任务之后,根据第一分配结果,判断两个目标任务对应的虚拟机是否相同。如图8所示,图8示出了确定第二分配结果的示意图。从任务集t中选择第一任务t1和第二任务t2作为目标任务。从第一分配结果中查找第一任务对应的虚拟机和第二任务对应的虚拟机,当第一任务对应的虚拟机为vm1,第二任务对应的虚拟机为vm2,那么可以确定第一任务对应的虚拟机和第二任务对应的虚拟机不同,并将第一任务对应的虚拟机与第二任务对应的虚拟机进行交换,也就是说交换后,第一任务对应的虚拟机为vm2,第二任务对应的虚拟机为vm1,得到第二分配结果。目标任务在第一分配结果中对应的虚拟机与在第二分配结果中对应的虚拟机不同,其他任一待调度任务在第一分配结果与第二分配结果中对应的虚拟机相同。
[0131]
s704:当所述第一分配结果对应的目标函数的函数值大于所述第二分配结果对应的目标函数的函数值时,将所述第二匹配结果确定为全局分配结果。
[0132]
这里,计算并比较第一分配结果对应的目标函数的函数值与第二分配结果对应的目标函数的函数值,如果第一分配结果对应的目标函数的函数值大于第二分配结果对应的目标函数的函数值,代表着根据第二分配结果对待调度任务集进行分配的时候,虚拟机的
负载均衡的效果更好,那么将第二分配结果确定为全局分配结果,全局分配结果可以看作是完成一次蚁群算法循环之后得到的分配结果。
[0133]
s705:当所述第一匹配结果对应的目标函数的函数值小于或等于所述第二分配结果对应的目标函数的函数值时,根据预设规则判断所述第二分配结果是否为全局分配结果。
[0134]
这里,当第一匹配结果对应的目标函数的函数值小于或等于第二分配结果对应的目标函数的函数值的时候,则根据预设规则判断是否接收第二分配结果为全局分配结果。在实际应用中,可以根据metropolis准则判断第二分配结果是否为全局分配结果。在进行metropolis准则判断之前,还需要获取当前温度t,温度t是metropolis准则中的一个计算参数,当当前温度t小于tmin的时候,不可以使用metropolis准则进行判断,在实际应用中,当当前温度t小于tmin的时候,将第二匹配结果确定为全局分配结果。当当前温度t大于tmin的时候,可以使用metropolis准则进行判断,其中,tmin是预先设置的数值,在实际应用中,tmin可以设置为10,当前温度t可以通过t(t 1)=ct(t)进行计算得到,其中,c为常量,在实际应用中一般设置为0.995,初始化温度为t0,可以设置为1000。metropolis准则主要是通过概率判断第二分配结果是否为全局分配结果,具体的算法为其中,p表示第二分配结果为全局分配结果的概率,exp表示自然指数,t表示当前的温度,式中的δt可以通过δt=t
n-l

best
计算得到,其中,tn为第二分配结果对应的目标函数的函数值,l

best
为第一分配结果对应的目标函数的函数值。通过metropolis准则的计算公式,能够得到第二分配结果为全局分配结果的概率p,当得到概率p之后,从集合[0,1]中产生一个均匀分布随机数,当概率值p大于随机数,那么第二分配结果为全局分配结果,如果概率值p小于随机数的条件时,那么第二分配结果不为全局分配结果,将第一分配结果确定为全局分配结果。
[0135]
s706:根据蚁群算法中设定的最大循环次数,将最后一次循环蚁群算法所确定的全局分配结果确定为所述待调度任务集对应的分配结果;其中,
[0136]
所述全局分配结果为对应完成一次蚁群算法循环之后得到的分配结果。
[0137]
这里,确定每一次循环蚁群算法所对应的全局分配结果之后,根据蚁群算法中设定的最大循环次数,判断是否已经完成设定的最大循环次数次的循环,如果已经完成所需要循环蚁群算法的次数之后,将最后一次循环蚁群算法所确定的全局分配结果输出,作为待调度任务集对应的分配结果。在蚁群算法中,在相同的时间内,蚂蚁在较短路径上行走的次数会比在较长路径上行走的次数多,因此较短的路径上留下的信息素浓度会比其他路径的信息素浓度要高,通过所有蚂蚁的多次循环寻解,在最后一次循环中得到的结果就是最终的分配结果,因此通过蚁群算法进行任务调度时,蚁群算法中较短的路径就相当于效果较好的任务调度策略,较长的路径就相当于效果欠佳的任务调度策略。因此,通过最后一次蚁群算法的循环,得到的全局分配结果实际上是最终的分配结果,因此可以将最后一次蚁群算法得到的全局分配结果输出,作为所述待调度任务集对应的分配结果。
[0138]
在上述实施例中,根据每只蚂蚁对应的分配结果,计算得到第一分配结果,从待调度任务集中任意选取两个目标任务,当第一分配结果中两个目标任务对应的虚拟机不同的时候,在第一分配结果中交换两个目标任务对应的虚拟机,得到第二分配结果,通过比较第
一分配的目标函数的函数值与第二分配结果的目标函数的函数值,确定全局分配结果,根据设定的最大循环次数,在循环结束之后输出分配结果,通过对第一分配结果进行一定的扰动,能够防止蚁群算法陷入局部解,有利于蚁群算法能够寻求更多的分配结果,提升了分配结果的科学性。
[0139]
在一实施例中,如图9所示,在通过蚁群算法得到所述待调度任务集对应的分配结果时,所述方法还包括:
[0140]
s901:当完成一次蚁群算法循环时,根据所述一次蚁群算法循环确定的全局分配结果,获取所述全局分配结果对应的目标函数的函数值。
[0141]
这里,当完成一次蚁群算法循环,也就是得到一次蚁群算法循环对应的全局分配结果之后,获取该次蚁群算法循环对应的全局分配结果的目标函数的函数值。
[0142]
s902:根据所述目标函数的函数值,确定全局信息素浓度;所述全局信息素浓度为完成一次蚁群算法循环后,信息素浓度的更新值。
[0143]
这里,在获取一次蚁群算法循环对应的全局分配结果的目标函数的函数值之后,根据目标函数的函数值,确定全局信息素浓度。全局信息素浓度更新规则主要与蚁群算法中的信息素设定参数与全局分配结果的目标函数的函数值有关,根据信息素的取值、蚁群算法中的设定参数以及全局分配结果的目标函数的函数值,能够得到全局信息素浓度。全局信息素浓度的更新规则为:τ
ij
(t 1)=(1-ρ1)τ
ij
(t) ρ1δτ
ij
(t),其中,ρ1是取值范围为(0,1)的参数,指信息素挥发因子,表示信息素在单位时间内挥发程度,1-ρ1表示信息素的残留程度。当ρ1越大,说明信息素挥发越快,ρ1为蚁群算法中的设定参数,ρ1的取值可以与ρ相同。δτ
ij
(t)表示在t时刻时,待调度任务i与虚拟机j之间的映射路径上的信息素浓度的增加量。
[0144]
全局信息素浓度的增加量为:
[0145][0146]
其中,l
best
是指全局分配结果的目标函数的函数值。根据全局信息素浓度的更新规则,能够得到完成一次蚁群算法循环之后,全局信息素浓度的大小。
[0147]
s903:根据所述全局信息素浓度以及全局分配结果,更新每个待调度任务与对应的虚拟机之间的映射路径上的信息度浓度。
[0148]
这里,当确定全局信息素浓度的大小之后,根据全局分配结果,将映射路径上对应的信息素浓度进行更新。可以通过获取全局分配结果,根据全局分配结果中记录的映射路径,更新映射路径上的信息素浓度,将映射路径上的信息素浓度设置为全局信息素浓度。由于更新的信息素浓度是全局分配结果对应的映射路径,全局分配结果代表着负载均衡效果较好的映射路径,而全局分配结果之外的映射路径代表这负载均衡效果一般的映射路径,那么就会使全局分配结果对应的映射路径上的信息素浓度与其他映射路径上的信息素浓度的差距增大,使蚂蚁更倾向于选择信息素浓度高的映射路径,导致蚂蚁的寻解能够集中到负载均衡效果较好的映射路径附近,提高了蚁群算法的寻解效率。
[0149]
在上述实施例中,通过获取一次蚁群算法循环确定的全局分配结果,获取全局分配结果对应的目标函数的函数值,根据目标函数的函数值,确定全局信息素浓度,根据全局
分配结果,更新每个待调度任务与对应的虚拟机的映射路径上的信息素浓度,有利于在进行多次蚁群算法循环的时候,对蚁群算法的寻解起到了引导作用,提高了蚁群算法的寻解效率,高效地得到分配结果。
[0150]
本发明还提供了应用实施例,如图10所示,图10示出了任务调度方法的流程示意图。
[0151]
s1001:初始化蚁群算法的相关参数。其中,蚁群算法的相关参数包括信息素初始值、信息素启发因子、期望启发因子、挥发因子、蚂蚁数量、伪随机转移概率中的q0,目标函数的第一系数和第二系数、最大循环次数。
[0152]
s1002:获取当前进行寻解的蚂蚁序号。在进行蚁群算法的时候,是通过多只蚂蚁进行寻解,综合多只蚂蚁的寻解,得到最终的结果。因此,需要获取当前进行寻解的蚂蚁序号。
[0153]
s1003:随机产生q。在每只蚂蚁进行寻解之前,会随机产生一个数值q,其中,q的取值范围为(0,1)。
[0154]
s1004:判断q≤q0是否成立。当q≤q0成立时,则转到s10041,当q≤q0不成立时,则转到s10042。
[0155]
s10041:根据第一预设规则进行分配。这里,第一预设规则是指一只蚂蚁根据计算待调度任务集中每个待调度任务分配到至少一台虚拟机的分配概率,并根据计算得到的分配概率,为待调度任务集中每个待调度任务选择对应的虚拟机。
[0156]
s10042:根据第二预设规则进行分配。这里,第二预设规则是指一只蚂蚁根据计算待调度任务集中每个待调度任务分配到至少一台虚拟机的分配概率,并根据计算得到的分配概率,为待调度任务集中每个待调度任务选择对应的虚拟机。
[0157]
s1005:判断待所有待调度任务是否完成分配,当待调度任务集中每个待调度任务未分配完毕,则转到s1003。当待调度任务集中每个待调度任务分配完毕,则转到s1006。
[0158]
s1006:记录一只蚂蚁对应的分配结果。
[0159]
s1007:更新局部信息素浓度。这里,当一只蚂蚁为待调度任务集中每个待调度任务分配完毕之后,根据局部信息素浓度更新规则,更新局部信息素浓度。
[0160]
s1008:判断当前的蚂蚁序号是否大于或等于蚂蚁数量。当当前的蚂蚁序号小于蚂蚁数量时候,转到s1002。当当前的蚂蚁序号大于或等于蚂蚁数量时候,转到s1009。这里,通过比较当前的蚂蚁序号与蚂蚁数量,是为了判断所有的蚂蚁是否完成了求解。
[0161]
s1009:计算第一分配结果。这里,第一分配结果是根据一次蚁群算法的循环确定的。
[0162]
s1010:随机生成第二分配结果。这里,是从待调度任务集中随机选取两个待调度任务,根据全局匹配结果,确定选取的两个待调度任务对应的虚拟机,当选取的两个待调度任务对应的虚拟机不同时,在全局匹配结果的基础上,将选取的两个待调度任务对应的虚拟机进行交换,得到新的全局匹配结果。
[0163]
s1011:判断第二分配结果的目标函数的函数值是否大于第一分配结果的目标函
数的函数值。当第二分配结果的目标函数的函数值大于第一分配结果的目标函数值的时候转到s10111。当第二分配结果的目标函数的函数值小于或等于第一分配结果的目标函数的函数值的时候转到s10112。
[0164]
s10111:将第二分配结果确定为全局分配结果。
[0165]
s10112:根据metropolis准则判断第二分配结果是否为全局分配结果。
[0166]
s1012:判断t是否小于tmin。当t小于tmin时,转到s1013,当t大于或等于tmin时,将转到s1010。这里,是t《tmin是结束确定全局分配的循环的条件,其中,t是metropolis准则中的一个计算变量,代表着当前温度,tmin是metropolis准则中的一个参数。这里是在判断第二分配结果是否为全局分配结果之后,再进行下一轮的试验,以获得效果更佳的分配结果。
[0167]
s1013:更新全局信息素浓度。这里,当完成一次蚁群算法循环之后,根据全局信息素浓度更新规则,更新全局信息素浓度。
[0168]
s1014:确定当前循环次数。
[0169]
s1015:判断当前循环次数是否大于最大循环次数。当当前循环次数大于最大循环次数,转到s1016。当当前循环次数小于最大循环次数,转到s1002。
[0170]
s1016:输出分配结果。
[0171]
为实现本发明实施例的任务调度方法,本发明实施例还提供了一种任务调度装置,如图11所示,该任务调度装置包括:
[0172]
第一确定单元1101,用于确定待调度任务集,所述待调度任务集包括至少一个待调度任务;
[0173]
第二确定单元1102,用于确定所述待调度任务集的任务完成成本;所述任务完成成本至少包括时间成本和资源成本;
[0174]
第一生成单元1103,用于根据所述任务完成成本,生成目标函数;
[0175]
第二生成单元1104,用于基于所述目标函数与所述任务完成成本对蚁群算法的参数进行设置,通过完成参数设置的蚁群算法,将所述待调度任务集对应的至少两个候选分配结果中目标函数的函数值最小的候选分配结果输出为所述待调度任务集对应的分配结果;
[0176]
分配单元1105,用于根据所述待调度任务集对应的分配结果,将所述待调度任务集中的每个待调度任务分别分配到至少一台虚拟机上。
[0177]
在一实施例中,所述第一生成单元根据所述任务完成成本,生成目标函数,包括:
[0178]
对所述任务完成成本进行归一化处理;
[0179]
根据归一化处理后的任务完成成本,利用线性加权和法生成目标函数;所述目标函数包括第一系数和第二系数;其中,所述第一系数表征时间成本的权重,所述第二系数表征资源成本的权重。
[0180]
在一实施例中,所述第二生成单元通过蚁群算法得到所述待调度任务集对应的分配结果时,还包括:
[0181]
确定所述至少一台虚拟机中每台虚拟机的计算能力;
[0182]
确定所述至少一台虚拟机中所有虚拟机的平均计算能力;
[0183]
根据所述至少一台虚拟机中每台虚拟机的计算能力及所述平均计算能力,确定至
少一条映射路径对应的信息素初始值;其中,
[0184]
所述至少一条映射路径中的每条映射路径表征将所述待调度任务集中一个待调度任务分配至所述至少一台虚拟机中的一台虚拟机。
[0185]
在一实施例中,所述第二生成单元通过蚁群算法得到所述待调度任务集对应的分配结果时,还包括:
[0186]
确定所述至少一台虚拟机中每台虚拟机的已执行时间;
[0187]
确定所述至少一台虚拟机的中所有虚拟机的平均执行时间;
[0188]
根据对应的已执行时间和所述平均执行时间,确定对应虚拟机的负载均衡因子;
[0189]
确定对应虚拟机的启发函数;所述启发函数中包括所述负载均衡因子;所述启发函数的取值随着所述负载均衡因子的增大而减小。
[0190]
在一实施例中,所述第二生成单元通过蚁群算法得到所述待调度任务集对应的分配结果时,还包括:
[0191]
当一只蚂蚁完成一次寻解时,得到所述一只蚂蚁对应的分配结果;
[0192]
根据所述蚁群算法中的设定参数与信息素的取值,确定局部信息素浓度;所述局部信息素浓度为一只蚂蚁完成一次寻解后,信息素浓度的更新值;
[0193]
根据所述局部信息素浓度以及所述一只蚂蚁对应的分配结果,更新映射路径对应的信息素浓度。
[0194]
在一实施例中,所述第二生成单元通过蚁群算法得到所述待调度任务集对应的分配结果时,还包括:
[0195]
当所有蚂蚁完成一次寻解时,根据所述每只蚂蚁对应的分配结果,计算得到第一分配结果;
[0196]
从所述待调度任务集中任意选取两个待调度任务,作为目标任务;
[0197]
当所述第一分配结果中两个目标任务对应的虚拟机不同时,在所述第一分配结果中交换两个目标任务对应的虚拟机,得到第二分配结果;
[0198]
当所述第一匹配结果对应的目标函数的函数值大于所述第二分配结果对应的目标函数的函数值时,将所述第二匹配结果确定为全局分配结果;
[0199]
当所述第一匹配结果对应的目标函数的函数值小于或等于所述第二分配结果对应的目标函数的函数值时在满足设定规则的情况下,将第二分配结果确定为全局分配结果;在不满足设定规则的情况下,将第一分配结果确定为全局分配结果;
[0200]
根据蚁群算法中设定的最大循环次数,将最后一次循环蚁群算法所确定的全局分配结果确定为所述待调度任务集对应的分配结果;其中,
[0201]
所述全局分配结果为对应完成一次蚁群算法循环之后得到的分配结果。
[0202]
在一实施例中,所述第二生成单元通过蚁群算法得到所述待调度任务集对应的分配结果时,还包括:
[0203]
当完成一次蚁群算法循环时,根据所述对应的全局分配结果,获取所述全局分配结果对应的目标函数的函数值;所述全局分配结果为对应完成一次蚁群算法循环之后得到的分配结果;
[0204]
根据所述目标函数的函数值,确定全局信息素浓度;所述全局信息素浓度为完成一次蚁群算法循环后,信息素浓度的更新值;
[0205]
根据所述全局信息素浓度以及全局分配结果,更新每个待调度任务与对应的虚拟机的映射路径上的信息素浓度。基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供了一种电子设备,图12为本发明实施例电子设备的硬件组成结构示意图,如图12所示,电子设备包括:
[0206]
通信接口1,能够与其它设备比如网络设备等进行信息交互;
[0207]
处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的任务调度方法。而所述计算机程序存储在存储器3上。
[0208]
当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图12中将各种总线都标为总线系统4。
[0209]
本发明实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
[0210]
可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储器2旨在包括但不限于这些和任意其它适合类型的存储器。
[0211]
上述本发明实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执
行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
[0212]
处理器2执行所述程序时实现本发明实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
[0213]
在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd-rom等存储器。
[0214]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置、终端和方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0215]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0216]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0217]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0218]
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0219]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献