一种并行任务调度方法、系统、存储介质和终端与流程

文档序号:31417084发布日期:2022-09-03 16:48阅读:90来源:国知局
一种并行任务调度方法、系统、存储介质和终端与流程

1.本技术涉及网络安全领域,特别涉及一种并行任务调度方法、系统、存储介质和终端。


背景技术:

2.当今主流的自动化测试框架缺乏对于优化并发执行效率相关的调度策略支持,并发案例执行通常通过增加更多测试环境的方式降低案例执行耗时,但未经调度策略规划的案例执行容易出现如下问题:若案例执行进程所负责执行的案例由外部一次性推送,单个测试环境上的案例护航效应将引发全局计算资源浪费,即部分测试环境因提前完成分配的任务面临无任务可执行的状态,但实际上从全局上,依然有案例尚未执行。
3.因此,如何实现提高任务调度时的资源利用率是本领域技术人员亟需解决的技术问题。


技术实现要素:

4.本技术的目的是提供一种并行任务调度方法、并行任务调度系统、计算机可读存储介质和终端,能够减少计算资源的浪费,降低并发执行的耗时。
5.为解决上述技术问题,本技术提供一种并行任务调度方法,具体技术方案如下:
6.获取待执行任务,并确定所述待执行任务的测试环境数量;其中,各所述待执行任务的任务执行耗时已知;
7.将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;
8.各所述测试队列按所述初始排序依次获取一个当前耗时最长的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;
9.利用所述测试队列执行各所述待执行任务。
10.可选的,利用所述测试队列执行各所述待执行任务包括:
11.确定所述测试队列各自对应的测试背景;
12.按照所述测试背景配置测试环境,并在所述测试环境中执行相应测试队列包含的所述待执行任务。
13.可选的,确定所述测试队列各自对应的测试背景包括:
14.在所述待执行任务的数量满足阈值时,提取所述待执行任务的通用配置信息,得到所述测试背景。
15.可选的,还包括:
16.若第一测试任务和第二测试任务存在任务依赖关系,且所述第一测试任务对应第一执行耗时,所述第二测试任务对应第二执行耗时,将所述第一测试任务和所述第二测试任务合并作为目标待执行任务;所述目标待执行任务的任务执行耗时为所述第一执行耗时和所述第二执行耗时之和。
17.可选的,若接收到任务执行耗时未知的未知待执行任务,还包括:
18.若所述未知待执行任务数量大于数量阈值,将所述未知待执行任务按照任务数量均分至各所述测试队列;
19.若所述未知待执行任务数量小于数量阈值,将所述未知待执行任务添加至当前任务执行总耗时最短的测试队列末尾。
20.可选的,若所述待执行任务包含若干不同的测试场景,还包括:
21.在每个所述测试场景中,选择适应所述测试场景的待执行任务执行如权利要求1所述的并行任务调度方法,得到各所述测试场景中的若干测试队列;其中,各所述测试场景中的测试队列数目相同;
22.对各所述测试场景中的测试队列按照任务执行耗时进行排序,各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时最短的测试队列,得到组合队列;
23.将所述组合队列作为所述测试队列,重新执行所述各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时最短的测试队列的步骤,直至所有所述测试场景的测试队列均组合完毕得到调度队列;
24.按照所述调度队列依次执行所述待执行任务。
25.本技术还提供一种并行任务调度系统,包括:
26.任务获取模块,用于获取待执行任务,并确定所述待执行任务的测试环境数量;其中,各所述待执行任务的任务执行耗时已知;
27.测试队列生成模块,用于将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;
28.任务调度模块,用于各所述测试队列按所述初始排序依次获取一个当前耗时最长的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;
29.任务处理模块,用于利用所述测试队列执行各所述待执行任务。
30.可选的,任务处理模块包括:
31.背景确定单元,用于确定所述测试队列各自对应的测试背景;
32.环境配置单元,用于按照所述测试背景配置测试环境,并在所述测试环境中执行相应测试队列包含的所述待执行任务。
33.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
34.本技术还提供一种终端,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
35.本技术提供一种并行任务调度方法,包括:获取待执行任务,并确定所述待执行任务的测试环境数量;其中,各所述待执行任务的任务执行耗时已知;将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;各所述测试队列按所述初始排序依次获取一个当前耗时最长的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;利用所述测试队列执行各所述待执行任务。
36.本技术通过配置测试队列,使得测试队列在每次待执行任务获取时根据自身已有的任务执行总耗时依次获取,确保各测试队列所执行的待执行任务的总耗时相对均衡,保证了测试过程中的资源利用率,降低了任务执行耗时,提高了任务执行效率。
37.本技术还提供一种并行任务调度系统、计算机可读存储介质和终端,具有上述有益效果,此处不再赘述。
附图说明
38.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
39.图1为本技术实施例所提供的一种并行任务调度方法的流程图;
40.图2为本技术实施例所提供的一种并行任务调度结果示意图;
41.图3为本技术实施例所提供的并行任务调度延时结果示意图;
42.图4为本技术实施例提供的双测试场景三测试环境的结构示意图:
43.图5为本技术实施例提供的对图4对应的测试队列进行组合所得到的调度队列生成示意图;
44.图6为本技术实施例所提供的一种并行任务调度系统结构示意图;
45.图7为本技术实施例所提供的一种终端的结构示意图。
具体实施方式
46.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
47.参见图1,图1为本技术实施例所提供的一种并行任务调度方法的流程图,该方法包括:
48.s101:获取待执行任务,并确定所述待执行任务的测试环境数量;
49.本步骤旨在获取待执行任务,且各待执行任务的任务执行耗时已知。通常而言,对于执行一次的任务,在下一次执行时视为其任务执行耗时已知。该任务执行耗时为相对参考时间,并不必须为实际执行该待执行任务的精确时间。考虑到任务执行时存在执行环境的差异,因此在不同的任务执行环境中,同一待执行任务可能存在一定的任务执行耗时差异。
50.此外,本步骤还需要确定待执行任务的测试环境数量,该测试环境通常由测试设备自身性能决定,可由本领域技术人员根据测试设备的设备参数确定可执行任务的测试环境数量。由于自动化测试过程中存在案例护航,即在一个测试环境上,消耗资源较少的案例因消耗资源较大的案例正在执行而不得不等待的问题,而自动化测试执行是非抢占的,不应在一个测试环境上同时执行多个测试案例,因此当计划在一个测试环境上静态分配一系列案例执行时,会出现案例护航效应。因此,对于消耗较大的待执行任务,应当优先划分相
应的测试环境。
51.作为一种优选的执行方式,在实际执行任务时,时常存在包含任务依赖关系的两个或者多个任务。若执行任务时由外部推送,容易使得存在任务依赖关系的任务被推送至不同进程、环境执行,使得测试结果产生较大误差。为此,若第一测试任务和第二测试任务存在任务依赖关系,且二者的任务执行耗时均已知时,例如第一测试任务对应第一执行耗时,第二测试任务对应第二执行耗时,可以将第一测试任务和第二测试任务合并作为目标待执行任务,该目标待执行任务的任务执行耗时为第一执行耗时和第二执行耗时之和。换言之,对于存在任务依赖关系的任务,只要各自的任务执行耗时已知,可以将所有存在任务依赖关系的任务视为一个待执行任务加以执行。需要注意的是,若其中任意测试任务的任务执行耗时未知,虽然依旧可以合并或者视为一个待执行任务,待该待执行任务应视为一个任务执行耗时未知的待执行任务加以处理。
52.s102:将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;
53.本步骤中,每个测试环境作为一个测试队列,测试队列中的各待执行任务依次执行。且为了便于后续步骤的执行,本步骤需要确定测试队列之间的顺序,用于后续步骤获取待执行任务。
54.s103:各所述测试队列按所述初始排序依次获取一个当前耗时最长的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;
55.本步骤中,各测试队列需要依次获取待执行任务。具体的,首先按照上一步骤中确定的排序,依次获取一个当前耗时最长的待执行任务,在每个测试队列都获取一次待执行任务后,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务。可以此类推,直至获取完所有待执行任务。可以看出,测试队列当前获取的待执行任务的任务执行总耗时越长,下一次获取的待执行任务的任务执行耗时就越短,如此,可使得各测试队列之间的任务执行总耗时相对平均,避免出现部分测试队列先执行完成导致的资源浪费。
56.s104:利用所述测试队列执行各所述待执行任务。
57.在测试队列中的待执行任务确定后,即可执行各待执行任务。需要说明的是,步骤s103为对任务获取方式的描述,在实际执行任务过程中,可以边执行任务边执行任务获取,或者每执行完成一个任务,按照上述方式获取下一个执行的待执行任务均可。
58.还需要注意的是,由于待执行任务在执行过程中可能存在各种意外,导致任务执行耗时超出其已知的任务执行耗时,此时若每完成一个待执行任务,再去获取当前任务执行耗时最长的待执行任务,能够有效降低由于任务执行异常导致的资源利用率下降问题。
59.作为本步骤的一种优选执行方式,在执行待执行任务时,可以先确定测试队列各自对应的测试背景,以便按照测试背景配置测试环境,并在测试环境中执行相应测试队列包含的待执行任务。不同的测试队列之间可能存在测试环境的差异,为了降低任务执行过程中由于任务执行环境对任务执行耗时造成的影响,可以在执行本步骤时针对测试队列配置相应的测试环境。在此对于如何确定测试队列的测试背景不作限定,可以在待执行任务的数量满足阈值时,提取待执行任务的通用配置信息,作为测试背景。在此对于该阈值不作限定,可以为三个、五个甚至更多,具体可由本领域技术人员自行设定。
60.参见图2,图2为本技术实施例所提供的一种并行任务调度结果示意图,现存在12个不同任务执行耗时的待执行任务,按照本实施例所描述的方式,可以划分为四个测试队列,按顺序标号为测试队列1、测试队列2、测试队列3和测试队列4,依次获取当前任务执行耗时最长的待执行任务,则分别对应获取37(表示任务执行耗时,下文同义)、31、25和21,此时由当前测试队列任务执行总耗时最短的测试队列4优先获取当前任务执行耗时最大的待执行任务,即17对应的待执行任务,在第二轮获取任务获取结束后,测试队列4依旧为当前测试队列任务执行总耗时最短的测试队列,因此获取当前任务执行耗时最大的待执行任务,即7对应的待执行任务,如此可以看出,测试队列1、测试队列2、测试队列3和测试队列4的执行时长分别为46、44、41、45,实现了各测试队列之间执行时长的相对均衡,同时也使得资源利用相对均衡。
61.在任务执行过程中,若每完成一个待执行任务,再去获取当前任务执行耗时最长的待执行任务,即使出现任务执行异常导致实际任务执行耗时延长,依旧可以实现任务的调度均衡。参见图3,图3为本技术实施例所提供的并行任务调度延时结果示意图,若测试队列3中的第二个待执行任务的实际任务执行耗时变成了16,按从短到长排序,将导致测试队列3在下一次获取待执行任务时其任务执行总耗时由原来的第二变成第3,其在第三次获取时,只能获取任务执行耗时为4的待执行任务,此时测试队列1、测试队列2、测试队列3和测试队列4的执行时长分别为46、45、45、45,并未影响任务调度均衡的实现。
62.本技术实施例通过配置测试队列,使得测试队列在每次待执行任务获取时根据自身已有的任务执行总耗时依次获取,确保各测试队列所执行的待执行任务的总耗时相对均衡,保证了测试过程中的资源利用率,降低了任务执行耗时,提高了任务执行效率。
63.基于上述实施例,作为优选的实施例,本实施例针对任务执行耗时未知的未知待执行任务进行处置,具体方案可以包括如下步骤:
64.若未知待执行任务数量大于数量阈值,将未知待执行任务按照任务数量均分至各测试队列;
65.若未知待执行任务数量小于数量阈值,将未知待执行任务添加至当前任务执行总耗时最短的测试队列末尾。
66.本实施例需要因未知待执行任务的数量进行相应处置,若其数量小于数量阈值,可以直接将其添加至当前任务执行总耗时最短的测试队列末尾加以执行。若其数量大于数量阈值,按照测试队列的数量相对平均的分到各测试队列的末尾。在此对于该数量阈值不作限定,具体可以由本领域技术人员根据所需要执行测试的待执行任务的总数量以及未知待执行任务的数量进行设定。
67.在上述实施例中,各待执行任务视为基于相同或者相近的测试场景,即对于待执行任务的测试场景要求近似或者相同,作为优选的实施例,若待执行任务包含至少两种不同的测试场景,还包括:
68.s201:在每个所述测试场景中,选择适应所述测试场景的待执行任务执行如权利要求1所述的并行任务调度方法,得到各所述测试场景中的若干测试队列;其中,各所述测试场景中的测试队列数目相同;
69.s202:对各所述测试场景中的测试队列按照任务执行耗时进行排序,各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时
最短的测试队列,得到组合队列;
70.s203:将所述组合队列作为所述测试队列,重新执行所述各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时最短的测试队列的步骤,直至所有所述测试场景的测试队列均组合完毕得到调度队列;
71.s204:按照所述调度队列依次执行所述待执行任务。
72.虽然待执行任务存在不同的测试场景,但由于所应用的测试设备均相同,即利用相同的设备处置待执行任务,因此在每个测试场景中,其测试队列数目相同。
73.按照上述实施例的过程针对每个测试场景进行测试队列的生成,如此可以得到不同测试场景下的若干测试队列,此后针对不同测试场景下的测试队列进行组合或衔接。具体的组合方式视第一个测试场景中测试队列按照任务执行总耗时的排序方式决定,若第一个测试场景中的测试队列按执行耗时从长到短的顺序组合,则在组合下一测试场景中的测试队列时,选择与之组合后任务执行总耗时最短的测试队列。反之则反,若第一个测试场景中的测试队列按执行耗时从短到长的顺序组合,则在组合下一测试场景中的测试队列时,选择与之组合后任务执行总耗时最长的测试队列。在所有测试场景组合完毕后,得到调度队列。
74.需要说明的是,本实施例中的测试场景并不等同与上述实施例中的测试环境,上述实施例中的测试环境可以视为同一测试场景下的不同进程,可以并行实现待执行任务的自动化执行。
75.本实施例可以实现待执行任务被不同测试场景调度时,实现全局资源使用均衡。一种优选的执行方式,可以在每个测试队列中配置专属的测试服务,由该测试服务从管理测试任务的服务中获取当前任务耗时最长的待执行任务执行,此时对测试任务的执行为一种单队列多处理器模型,在此模型下依照上文所述的最长任务优先策略即可保证各个测试环境上的负荷均衡.从而实现最大化资源利用。
76.参考图4和图5,图4为本技术实施例提供的双测试场景三测试环境的结构示意图,图5为应用本技术实施例对图4对应的测试队列进行组合所得到的调度队列生成示意图,图4中,包含了两个测试场景,即测试场景1和测试场景2,包含了6个待执行任务,可以按照上述实施例的步骤得到三个测试队列,同理测试场景2也可以得到三个测试队列,且测试队列1-1、1-2和1-3按照任务执行耗时从短到长的顺序,则测试队列1-1应组合测试场景2中任务执行耗时最长的测试队列,也即测试队列2-1,以满足组合后任务执行总耗时最长。最终可得到图5所示的三个调度队列,且每个调度队列的耗时均为29,实现了全局资源的最大化利用。
77.参见图6,图6为本技术实施例所提供的一种并行任务调度系统结构示意图,本实施例公开的并行任务调度系统与上文所述的并行任务调度方法可以相互参考对照,本技术还提供一种并行任务调度系统,包括:
78.任务获取模块,用于获取待执行任务,并确定所述待执行任务的测试环境数量;其中,各所述待执行任务的任务执行耗时已知;
79.测试队列生成模块,用于将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;
80.任务调度模块,用于各所述测试队列按所述初始排序依次获取一个当前耗时最长
的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;
81.任务处理模块,用于利用所述测试队列执行各所述待执行任务。
82.基于上述实施例,作为优选的实施例,任务处理模块包括:
83.背景确定单元,用于确定所述测试队列各自对应的测试背景;
84.环境配置单元,用于按照所述测试背景配置测试环境,并在所述测试环境中执行相应测试队列包含的所述待执行任务。
85.基于上述实施例,作为优选的实施例,背景确定单元为用于在所述待执行任务的数量满足阈值时,提取所述待执行任务的通用配置信息,得到所述测试背景的单元。
86.基于上述实施例,作为优选的实施例,还包括:
87.任务合并模块,用于若第一测试任务和第二测试任务存在任务依赖关系,且所述第一测试任务对应第一执行耗时,所述第二测试任务对应第二执行耗时,将所述第一测试任务和所述第二测试任务合并作为目标待执行任务;所述目标待执行任务的任务执行耗时为所述第一执行耗时和所述第二执行耗时之和。
88.基于上述实施例,作为优选的实施例,还包括:
89.未知任务调度模块,用于在接收到任务执行耗时未知的未知待执行任务时,若所述未知待执行任务数量大于数量阈值,将所述未知待执行任务按照任务数量均分至各所述测试队列;
90.若所述未知待执行任务数量小于数量阈值,将所述未知待执行任务添加至当前任务执行总耗时最短的测试队列末尾。
91.基于上述实施例,作为优选的实施例,还包括:
92.全局调度模,用于执行如下步骤:
93.若所述待执行任务包含若干不同的测试场景,在每个所述测试场景中,选择适应所述测试场景的待执行任务执行如上所述的并行任务调度方法,得到各所述测试场景中的若干测试队列;其中,各所述测试场景中的测试队列数目相同;
94.对各所述测试场景中的测试队列按照任务执行耗时进行排序,各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时最短的测试队列,得到组合队列;
95.将所述组合队列作为所述测试队列,重新执行所述各所述测试队列按所述耗时从长到短排序依次获取一个下一测试场景中与之组合后任务执行总耗时最短的测试队列的步骤,直至所有所述测试场景的测试队列均组合完毕得到调度队列;
96.按照所述调度队列依次执行所述待执行任务。
97.本技术还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的方法的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
98.本技术还提供了一种终端,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的方法的步骤。当然所述终端还可以包括各种网络接口,电源等组件。请参见图7,图7为本技术实
施例所提供的一种终端的结构示意图,本实施例的终端可以包括:处理器2101和存储器2102。
99.可选的,该终端还可以包括通信接口2103、输入单元2104和显示器2105和通信总线2106。
100.处理器2101、存储器2102、通信接口2103、输入单元2104、显示器2105、均通过通信总线2106完成相互间的通信。
101.在本技术实施例中,该处理器2101,可以为中央处理器(central processing unit,cpu),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。
102.该处理器可以调用存储器2102中存储的程序。具体的,处理器可以执行上文的实施例中终端所执行的操作。
103.存储器2102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本技术实施例中,该存储器中至少存储有用于实现以下功能的程序:
104.获取待执行任务,并确定所述待执行任务的测试环境数量;其中,各所述待执行任务的任务执行耗时已知;
105.将每个测试环境作为测试队列,并确定各所述测试队列之间的初始排序;
106.各所述测试队列按所述初始排序依次获取一个当前耗时最长的待执行任务,根据当前各所述测试队列对应任务执行耗时从短到长的顺序确定当前排序,按照所述当前排序依次获取一个当前耗时最长的待执行任务;
107.利用所述测试队列执行各所述待执行任务。
108.在一种可能的实现方式中,该存储器2102可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以及至少一个功能所需的应用程序等;存储数据区可存储根据计算机的使用过程中所创建的数据。
109.此外,存储器2102可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
110.该通信接口2103可以为通信模块的接口,如gsm模块的接口。
111.本技术还可以包括显示器2105和输入单元2104等等。
112.图7所示的终端的结构并不构成对本技术实施例中终端的限定,在实际应用中终端可以包括比图7所示的更多或更少的部件,或者组合某些部件。
113.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
114.本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
115.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1