仿真任务调度方法、装置、存储介质、计算机设备与流程

文档序号:33127997发布日期:2023-02-01 06:17阅读:45来源:国知局
仿真任务调度方法、装置、存储介质、计算机设备与流程

1.本技术涉及自动驾驶技术领域,尤其涉及一种仿真任务调度方法、装置、存储介质、计算机设备。


背景技术:

2.在自动驾驶开发过程中,为了训练自动驾驶的ai模型以及验证模型的正确性,开发人员经常需要运行大量的仿真任务。由于服务器的性能有限,需要对所有仿真任务进行调度,以确定仿真任务的执行先后顺序。但传统技术中的仿真任务调度方法存在着调度不合理而引发的平均等待时间过长的问题。


技术实现要素:

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.图1为本技术实施例提供的仿真调度方法的流程示意图;
32.图2为本技术实施例提供的仿真调度装置的模块结构图;
33.图3为本技术实施例提供的计算机设备的内部结构图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于
本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.申请人研究发现,传统的调度方法往往只关注某一单一指标,例如优先级、任务产生的时间的先后关系、任务之间的大小关系等。而自动驾驶领域的仿真任务常常由多个子任务构成,只考虑单一方面,例如只考虑任务产生的时间的先后关系,若正在处理的任务较为复杂,而等待处理任务较为简单你,将会导致整个调度队列堵塞,较简单的任务也必须经过长时间等待。又或者只考虑任务执行所需的时间,可能导致虽然比较复杂但已等待很长时间的任务一直被退后。为解决该问题,本技术提供了一种仿真任务调度方法,请参阅图1,包括步骤s102至步骤s106。
36.s102,获取任务列表中各待处理任务的已等待时间和预计所需时间。
37.待处理任务即为开发人员发送至服务器,需要在服务器上运行的仿真任务。任务队列中即包括了所有等待调度的待处理任务。待处理任务可以包括多个子任务,也可以为独立的一个任务。已等待时间即为每个待处理任务处于任务列表中的时间,可以从待处理任务进入任务列表后开始计时,每次进行调度时,获取各待处理任务对应的计时数据,以得到待处理任务的已等待时间。预计所需时间指的是处理待处理任务预估的所需的时间。而处理待处理任务,若待处理任务包括多个子任务,待处理任务的预计所需时间可以是一次性处理完待处理任务的所有子任务的预计所需时间。但考虑到本领域仿真任务中各个子任务的关联性较弱,可以分开执行,待处理任务的预计所需时间也可以是某个子任务的预计所需时间。即每次处理待处理任务,仅执行一个子任务。
38.s104,根据各待处理任务的已等待时间、预计所需时间以及优先级,为各待处理任务设置调度权重。
39.可以理解,自动驾驶的仿真任务中还需要有优先级的设计,为解决传统调度方法中的问题,本实施例综合考虑待处理任务的已等待时间、预计所需时间之外,还结合了优先级设置调度权重,最后根据调度权重的大小进行调度。具体而言,待处理任务的已等待时间与调度权重正相关,使得等待时间越长的待处理任务所对应的调度权重越大,即越有机会被优先调度。待处理任务的预计所需时间与调度权重负相关,使得预计耗时越长的待处理任务的调度权重越小,即越会被推迟执行。待处理任务的优先级与调度权重正相关,使得优先级越高的待处理任务所对应的调度权重越大,优先调度高优先级的待处理任务。在综合这三者之后,开发人员仍可通过设置优先级对执行先后顺序进行调整,耗时较短的待处理任务也有被优先处理的倾向,但耗时较短或者较高优先级任务不一定会优先于长时间等待的待处理任务执行,保证调度公平。
40.s106,选择调度权重最大的待处理任务为目标任务,处理目标任务,并更新任务列表,返回获取任务列表中各待处理任务的已等待时间和预计所需时间的步骤继续进行调度,直至任务列表清空。
41.可以理解,在设置本次调度的调度权重后,根据调度权重的大小从任务列表中选择出目标任务,作为本次调度的处理对象。在处理目标任务后,根据目标任务的完成情况,确定是否要将目标任务移除出任务列表,以更新任务列表。值得一提的是,这里的更新任务列表只针对是否要将本次调度的目标任务移除出任务列表,而在步骤s102至步骤s106执行的全过程,若开发人员将任务列表中不存在的待处理任务提交,任务列表中都将添加这些
新的待处理任务。在整个调度过程中,在目标任务被处理后,只要任务列表还未清空,则仍需要进行调度。即重新返回步骤s102获取下一次调度时任务列表中各待处理任务的已等待时间、预计所需时间,并重新设置调度权重,直至任务列表中不存在待处理任务。
42.基于本实施例中的仿真任务调度方法,根据调度权重的大小来控制任务处理的先后顺序,而调度权重的设置综合了各待处理任务的已等待时间、预计所需时间以及优先级,保留了任务优先级对调度顺序的调整作用,又同时给耗时较短或者等待时间较长的待处理任务优先被处理的机会。整合了对调度顺序有较大影响的三个因素,实现三者统筹调度,优化平均等待时间和最大等待时间,提供了一种易于实现且公平性优秀的调度方案。
43.结合自动驾驶领域仿真任务由多个子任务组成,且子任务之间的关联性一般较弱的特点,为实现待处理任务可以逐渐推进,在其中一个实施例中,对于独立的待处理任务,则直接统计该待处理任务的预计所需时间即可。独立的待处理任务被选择为目标任务时也直接对该待处理任务处理,处理完成后将该待处理任务排除出任务列表。但对于包含多个子任务的待处理任务而言,待处理任务的预计所需时间的获取过程包括:
44.(1)从待处理任务的未完成子任务中选择一个作为目标子任务。
45.即对于包含多个子任务的待处理任务而言,每次调度仅处理一个子任务。若任意一个包含多个子任务的待处理任务被选择为目标任务,目标子任务即为本次调度被处理的任务。若未完成子任务为两个以上,选择目标子任务的方式可根据实际需要进行选择。例如,可根据未完成子任务之间的逻辑关系进行选择,即若某一未完成子任务的结果是另一未完成子任务的输入,则优先选择该某一未完成子任务。若未完成子任务之间无明显关联,则可以任意选择。
46.(2)根据目标子任务的预计所需时间,确定该待处理任务的预计所需时间。
47.即在每次调度中,为待处理任务设置调度权重时,本实施例不是考虑将待处理任务全部处理完成的预计所需时间,而只是考虑目标子任务的预计所需时间,使得调度权重设置更为合理化。例如,处理完成包含较多未完成子任务的待处理任务将耗时较长,导致这类型待处理任务长时间无法推进,而以子任务为单位进行执行,使得该类待处理任务也可以逐步推进。
48.在其中一个实施例中,目标子任务的预计所需时间的获取过程包括:
49.(1)获取目标子任务历史的实际执行时间。
50.(2)根据目标子任务历史的实际执行时间,计算目标子任务的预计所需时间。
51.具体而言,同一子任务可能需要不止一次的仿真,而由于同一子任务代码数量、代码逻辑基本保持一致,可以根据该子任务往常的实际耗时来推测本次调度时的预计耗时。因此,在每个子任务被执行时记录下实际执行时间,该子任务被选择为目标子任务时,即可根据该子任务历史的实际执行时间的记录,计算目标子任务的预计所需时间。具体的计算方式可以是直接求取每个实际执行时间的平均值。也可以对每个实际执行时间进行加权求平均,距离本次调度时间越近的实际执行时间,其对应的权重越大。
52.在其中一个实施例中,更新任务列表,包括:若目标任务的目标子任务为最后一个子任务,则在目标任务的目标子任务处理完成后,将目标任务从任务列表中排除,否则,在任务列表中保留目标任务。
53.可以理解,对于包括多个子任务的目标任务而言,只有所有子任务都被处理完成,
目标任务才无需继续被调度。因此,在目标任务的目标子任务为最后一个子任务且该目标子任务被处理完成后,通过将目标任务从任务列表中排除的方式,使得该任务无需被调度。在目标任务的目标子任务仍非最后一个子任务时,通过将目标任务保留在任务列表中的方式,使得该任务继续接受调度。
54.在其中一个实施例中,根据各待处理任务的已等待时间、预计所需时间以及优先级,为各待处理任务设置调度权重,包括:
55.(1)根据待处理任务的已等待时间与待处理任务的预计所需时间之间的比,确定初始权重。
56.可以理解,本实施例以待处理任务的已等待时间与待处理任务的预计所需时间这一比例作为核心指标,表达式可以为:其中,f(预计所需时间)是以预计所需时间为变量的函数,即可以根据需要灵活调整该表达式分母的变化特性,f(预计所需时间)是一个定义域非负,值域非负的单调增函数。例如,以预计所需时间为x,f(x)可以为f(x)=x,则f(x)的值随着预计所需时间的变化而线性变化。f(x)还可以为其他函数,如f(x)=x2,则f(x)的值随着预计所需时间的变化而非线性变化。由该表达式可见,在相同的已等待时间下,预计所需时间较短的任务初始权重更大,有机会被优先调度。而预计所需时间较长的任务,随着已等待时间的增大,初始权重也在增大,也有机会被优先调度。由此可见,以这两个时间之间的比作为初始权重,可以很好的保证公平性。
57.(2)根据待处理任务的优先级,确定调整系数,根据调整系数,对初始权重进行调整,得到调度权重。
58.其中,待处理任务的优先级越高,则调整系数越大。为了发挥优先级对调度顺序的调整作用,本实施例根据优先级对应的调整系数控制初始权重的增长速度,调整系数可以为一个随着优先级的提高而增大的非负常数,表达式可以为:调度权重=初始权重*调整系数。该方式即可以保留优先级对调度顺序的调整作用,例如,假设队伍列表中包括a和b两个待处理任务。a待处理任务的初始权重为10,其优先级对应的调整系数为1。b待处理任务的初始权重为8,其优先级高于a待处理任务,对应的调整系数为2。则最终a待处理任务的调度权重为10,b待处理任务的调度权重为16。虽然b待处理任务的初始权重较低,但经过调整系数的调整,仍然会优先处理b待处理任务。该方法又可以排除高优先级必然优先处理的情况,例如,假设队伍列表中包括c和d两个待处理任务。c待处理任务的初始权重为16,其优先级对应的调整系数为1。d待处理任务的初始权重为7,其优先级高于c待处理任务,对应的调整系数为2。则最终c待处理任务的调度权重为16,d待处理任务的调度权重为14。虽然d待处理任务的优先级较高,但仍然会优先处理c待处理任务。
59.在其中一个实施例中,待处理任务的优先级包括立即执行优先级、闲时执行优先级和其他优先级。经立即执行优先级对应的调整系数调整的调度权重将成为最大的调度权重,经闲时执行优先级对应的调整系数调整的调度权重将成为最小的调度权重。立即执行优先级的待处理任务最为紧急,必须立刻处理。无论其初始权重为多少,经过调整系数调整后所得到的调度权重必须是整个任务列表中最大的。因此,在设置立即执行优先级对应的调度系数时,应将其设置为一个趋近于无限大的常数。而闲时执行优先级的待处理任务可在任务列表中仅剩该优先级的待处理任务时才会被调度。无论其初始权重为多少,经过调
整系数调整后所得到的调度权重必须是整个任务列表中最小的。因此,在设置闲时执行优先级对应的调度系数时,可将其设置为趋近于0的极小值,例如1/100000,相较于调度系数为1的任务而言,闲时执行优先级的调度权重增长速度是其的1/100000。其他优先级是处于立即执行优先级和闲时执行优先级之间的优先级,其他优先级对应的调度系数应大于闲时执行优先级对应的调度系数,但小于立即执行优先级对应的调度系数。在有些实施例中,其他优先级被进一步划分为低优先级、正常优先级和高优先级。闲时执行优先级对应的调整系数小于低优先级对应的调整系数,低优先级对应的调整系数小于正常优先级对应的调整系数,正常优先级对应的调整系数小于高优先级对应的调整系数,高优先级对应的调整系数小于立即执行优先级对应的调整系数。具体而言,低优先级对应的调整系数的取值范围为大于0且小于1,正常优先级对应的调整系数为1,高优先级对应的调整系数的取值范围为大于1。
60.本技术实施例提供了一种仿真任务调度装置,请参阅图2,包括数据获取模块210、权重设置模块220和调度执行模块230。数据获取模块210用于获取任务列表中各待处理任务的已等待时间和预计所需时间。权重设置模块220用于根据各待处理任务的已等待时间、预计所需时间以及优先级,为各待处理任务设置调度权重。其中,待处理任务的已等待时间与调度权重正相关,待处理任务的预计所需时间与调度权重负相关,待处理任务的优先级与调度权重正相关。调度执行模块230用于选择调度权重最大的待处理任务为目标任务,处理目标任务,并更新任务列表,返回获取任务列表中各待处理任务的已等待时间和预计所需时间的步骤继续进行调度,直至任务列表清空。
61.在其中一个实施例中,数据获取模块210用于从待处理任务的未完成子任务中选择一个作为目标子任务;根据目标子任务的预计所需时间,确定该待处理任务的预计所需时间。
62.在其中一个实施例中,数据获取模块210用于获取目标子任务历史的实际执行时间;根据目标子任务历史的实际执行时间,计算目标子任务的预计所需时间。
63.在其中一个实施例中,调度执行模块230用于处理目标任务的目标子任务。
64.在其中一个实施例中,调度执行模块230用于在目标任务的目标子任务为最后一个子任务的情况下,在目标任务的目标子任务处理完成后,将目标任务从任务列表中排除,否则,在任务列表中保留目标任务。
65.在其中一个实施例中,权重设置模块220用于根据待处理任务的已等待时间与待处理任务的预计所需时间之间的比,确定初始权重;根据待处理任务的优先级,确定调整系数,根据调整系数,对初始权重进行调整,得到调度权重;其中,待处理任务的优先级越高,则调整系数越大。
66.关于仿真任务调度装置的具体限定可以参见上文中对于仿真任务调度方法的限定,在此不再赘述。上述仿真任务调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
67.本技术实施例提供了一种计算机设备,包括一个或多个处理器,以及存储器,存储
器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,执行:获取任务列表中各待处理任务的已等待时间和预计所需时间;根据各待处理任务的已等待时间、预计所需时间以及优先级,为各待处理任务设置调度权重;其中,待处理任务的已等待时间与调度权重正相关,待处理任务的预计所需时间与调度权重负相关,待处理任务的优先级与调度权重正相关;选择调度权重最大的待处理任务为目标任务,处理目标任务,并更新任务列表,返回获取任务列表中各待处理任务的已等待时间和预计所需时间的步骤继续进行调度,直至任务列表清空。
68.在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行上述任一实施例中的仿真任务调度方法的步骤。
69.示意性地,如图3所示,图3为本技术实施例提供的一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图3,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的文本识别方法。
70.计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(i/o)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如windows server tm、mac os xtm、unix tm、linux tm、free bsdtm或类似。
71.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
72.本技术实施例提供了一种存储介质,存储介质中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:获取任务列表中各待处理任务的已等待时间和预计所需时间;根据各待处理任务的已等待时间、预计所需时间以及优先级,为各待处理任务设置调度权重;其中,待处理任务的已等待时间与调度权重正相关,待处理任务的预计所需时间与调度权重负相关,待处理任务的优先级与调度权重正相关;选择调度权重最大的待处理任务为目标任务,处理目标任务,并更新任务列表,返回获取任务列表中各待处理任务的已等待时间和预计所需时间的步骤继续进行调度,直至任务列表清空。
73.在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:上述任一实施例中的仿真任务调度方法的步骤。
74.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
75.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
76.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1