发明内容
本发明为了解决以上至少一种技术缺陷,提供一种分布式空三计算任务调度方法及系统,旨在提高大规模实景空三的计算在多机组环境下的计算效率。
为解决上述技术问题,本发明的技术方案如下:
本方案提供一种分布式空三计算任务调度方法,用于对多个主机节点进行任务调度,包括以下步骤:
S1:对每个主机节点硬件的使用状态进行监控,获取实时的状态数据;
S2:根据实时的状态数据,综合业务指标计算每个主机节点的选举优先级;
S3:依据调度任务的任务类型,设置主机节点选举时的筛选条件,得到预设的选举规则;
S4:按照选举优先级及预设的选举规则选取主机节点,若选举成功,则将封装好的任务信息从待投递列表中投递到该主机节点进行计算,然后执行步骤S5;若选举失败,则将封装好的任务信息回投到初始列表中,待下一次投递;
S5:对计算状态进行监控,若计算成功则执行步骤S6,若计算失败则标识失败状态,并将封装好的任务信息回投到待投递列表中,返回执行步骤S4;
S6:判断此次计算是否为计算流程的最后一步,若是,则结束计算过程;否则,生成下一阶段的计算任务,并将下一阶段的计算任务回投到待投递列表中,返回执行步骤S4。
上述方案在任务分发调度时结合了不同计算任务类型对主机硬件性能不同要求,使得大规模实景空三的计算任务计算能充分发挥主机的算力,在保证计算进程稳定的前提下,使大规模实景空三的计算时间达到最短。
上述方案综合指标计算了主机节点的优先级,并针对不同任务类型增减筛选条件的办法,能极为有效地提高任务计算时与主机性能的契合度,在充分发挥主机算力的同时,使得整体任务的运算时间达到最短,提高大规模实景空三的计算在多机组环境下的计算效率。
其中,所述步骤S5还包括:当某一个封装好的任务信息被标记三次失败状态后,结束计算过程。
其中,在步骤S1中,所述实时的状态数据包括CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率和GPU显存实时占用率;在步骤S2中,根据每个主机节点实时的状态数据,按照综合业务指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级;所述综合业务指标包括了空三计算的任务的不同计算阶段的硬件需求指标,根据不同计算阶段不同的硬件需求指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级。
其中,在步骤S4中,所述选举规则具体包括:主机节点在线且启用,主机节点的剩余内存大于封装好的任务信息所需计算的运行内存,主机节点的CPU实时利用率小于90%,可用任务槽大于0,主机节点当前无已运行的同类任务,主机节点距离上一次投递任务时间间隔大于3分钟,CPU实时利用率小的优先派送;其中:主机节点的剩余内存通过内存实时占用率、内存大小计算得到;可用任务槽用于主机节点执行任务,主机节点会根据机器性能配置对应的任务槽数量。
上述方案中,选举规则由筛选条件构成,筛选条件包括主机节点在线且启用、主机节点的剩余内存大于封装好的任务信息所需计算的运行内存、主机节点的CPU实时利用率小于90%、可用任务槽大于0、主机节点当前无已运行的同类任务、主机节点距离上一次投递任务时间间隔大于3分钟。在实际应用时,根据计算任务的类型及要求对筛选条件进行排序组合,构成所需的选举规则。
上述方案中,主机节点在线且启用这一规则是进行任务调度的前提。主机节点需要是健康的,并且没有因为主观原因关闭其空三计算任务的,可以保证计算进程的稳定。主机节点的剩余内存大于封装好的任务信息所需计算的运行内存这一规则是动态调节的,基于每个计算进程对主机内存余量要求的不同,需要根据计算类型的不同状态量进行筛选,保证计算进程能够拥有足够的资源。主机节点的CPU实时利用率小于90%这一规则是为了保证主机节点的基础硬件资源满足计算要求。一般而言,主机节点CPU利用率较高,系统的流畅度就会降低。一般任务进程对CPU的要求较高,当主机节点处于高频运算时,再往该主机节点投递任务,计算任务的稳定性就无法得到保证。可用任务槽大于0这一规则是为了保证主机节点拥有足够多的任务槽可以执行任务。一般主机节点会根据其机器性能配置对应的任务槽数量,如果任务槽数全在占用中,为了保证主机的稳定性,此时不应该再对此主机节点派发任务。
上述方案中,主机节点当前无已运行的同类任务这一规则是基于计算进程的性能要求指定的。比如GPU版本的提取匹配进程已在进行,此时GPU利用率与显存资源的占用率明显提高,接近满负荷状态,但实际内存与CPU的占用还很低,可以再次承接毅哥CPU版本的提取匹配任务,使得CPU与内存能达到满负荷或者接近满负荷的状态。但主机节点在运行GPU/CPU版本的提取匹配任务时,不应该再承接同一种类型的任务,否则主机节点容易因为性能过载而崩溃。
上述方案中,主机节点距离上一次投递任务时间间隔大于3分钟这一规则设定是基于任务的投递与计算需要有毅哥加载的时间。经过多次测量验证,发现1分钟的投递时间与2分钟的启动预热时间,能够充分保证计算进程正在运算,且运算过程对硬件性能的占用达到稳定值,此时就可以基于主机节点实时监控判断此主机节点能否继续承接任务。
上述方案中,CPU实时利用率小的优先派送这一规则是基于CPU是主机节点的调度运算中心,所有任务都需要经过CPU进行管理,如果CPU占用较低,可以理解为此主机节点相对空闲,依据主机节点空闲程度进行任务派送,可以提高任务的计算效率。
其中,在所述步骤S5中,对计算状态进行监控,当计算成功时,需要进一步检查计算结果是否符合规范,若是,则将任务标记为成功,执行步骤S6;否则,将任务标识失败状态,并将封装好的任务信息回投到待投递列表中,返回执行步骤S4。
上述方案中,计算结果符合规范的标志对于每个计算类型任务各不相同。如分开任务通过判定分块文件是否存在,提取匹配判断匹配文件是否存在且文件大小大于1Kb,分开平差判断平差的结果文件是否存在、融合平差判断融合文件是否存在、密集匹配判断成果总预览文件是否存在等。
上述方案中,在步骤S4中,当选举到多个符合选举规则的主机节点时,按照选举优先级的顺序选举出最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。若选举到的仅有一个符合选举规则的主机节点,则将该主机节点作为最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。
本方案提供一种分布式空三计算任务调度系统,用于执行一种分布式空三计算任务调度方法,包括多个主机节点、主机节点监控模块、选举优先级计算模块、任务类型识别模块、筛选条件设置模块、选举规则预设模块、选举模块、任务初始列表模块和任务待投递列表模块;所述主机节点上设置有计算模块、计算状态监控模块和计算流程判断模块;其中:
所述主机节点监控模块用于对每个主机节点硬件的使用状态进行监控,获取实时的状态数据;
所述选举优先级计算模块用于根据实时的状态数据,综合业务指标计算增减主机节点后的每个主机节点选举优先级;
所述任务类型识别模块用于识别调度任务的任务类型,由筛选条件设置模块根据任务类型设置主机节点选举时的筛选条件,得到预设的选举规则并保存于选举规则预设模块中;
所述任务初始列表模块用于存储任务初始列表;所述任务待投递列表模块用于存储任务待投递列表,其包括了封装好的任务信息;
所述选举模块用于按照选举优先级及预设的选举规则选取主机节点,若选举成功,则将封装好的任务信息从待投递列表中投递到该主机节点进行计算,若选举失败,则将封装好的任务信息回投到初始列表中,待下一次投递;
所述计算状态监控模块用于对主机节点的计算状态进行监控,若计算成功传输至计算流程判断模块进一步处理,若计算失败则标识失败状态,并将封装好的任务信息回投到待投递列表中,待下一次投递;
所述计算流程判断模块用于判断此次计算是否为计算流程的最后一步,若是,则结束计算过程;否则,生成下一阶段的计算任务,并将下一阶段的计算任务回投到待投递列表中,待下一次投递。
其中,在所述计算状态监控模块中,当某一个封装好的任务信息被标记三次失败状态后,结束计算过程。
其中,在所述主机节点监控模块中,其获取主机节点实时的状态数据包括CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率和GPU显存实时占用率;在所述选举优先级计算模块中,根据每个主机节点实时的状态数据,按照综合业务指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级;所述综合业务指标包括了空三计算的任务的不同计算阶段的硬件需求指标,根据不同计算阶段不同的硬件需求指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级。
其中,在选举规则预设模块中,其预设的选举规则具体包括:主机节点在线且启用,主机节点的剩余内存大于封装好的任务信息所需计算的运行内存,主机节点的CPU实时利用率小于90%,可用任务槽大于0,主机节点当前无已运行的同类任务,主机节点距离上一次投递任务时间间隔大于3分钟,CPU实时利用率小的优先派送;其中:主机节点的剩余内存通过内存实时占用率、内存大小计算得到;可用任务槽用于主机节点执行任务,主机节点会根据机器性能配置对应的任务槽数量。
上述方案中,选举规则由筛选条件构成,筛选条件包括主机节点在线且启用、主机节点的剩余内存大于封装好的任务信息所需计算的运行内存、主机节点的CPU实时利用率小于90%、可用任务槽大于0、主机节点当前无已运行的同类任务、主机节点距离上一次投递任务时间间隔大于3分钟。在实际应用时,根据计算任务的类型及要求对筛选条件进行排序组合,构成所需的选举规则。
其中,在所述计算状态监控模块中,对计算状态进行监控,当计算成功时会进一步检查计算结果是否符合规范,若是,则将任务标记为成功,传输至计算流程判断模块进一步处理,否则,将任务标识失败状态,并将封装好的任务信息回投到待投递列表中,待下一次投递。
上述方案中,在选举模块中,当选举到多个符合选举规则的主机节点时,按照选举优先级的顺序选举出最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。若选举到的仅有一个符合选举规则的主机节点,则将该主机节点作为最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出了一种分布式空三计算任务调度方法及系统,在任务分发调度时结合了不同计算任务类型对主机硬件性能不同要求,使得大规模实景空三的计算任务计算能充分发挥主机的算力,在保证计算进程稳定的前提下,使大规模实景空三的计算时间达到最短。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提供一种分布式空三计算任务调度方法,用于对多个主机节点进行任务调度,如图1所示,包括以下步骤:
S1:对每个主机节点硬件的使用状态进行监控,获取实时的状态数据;
S2:根据实时的状态数据,综合业务指标计算每个主机节点的选举优先级;
S3:依据调度任务的任务类型,设置主机节点选举时的筛选条件,得到预设的选举规则;
S4:按照选举优先级及预设的选举规则选取主机节点,若选举成功,则将封装好的任务信息从待投递列表中投递到该主机节点进行计算,然后执行步骤S5;若选举失败,则将封装好的任务信息回投到初始列表中,待下一次投递;
S5:对计算状态进行监控,若计算成功则执行步骤S6,若计算失败则标识失败状态,并将封装好的任务信息回投到待投递列表中,返回执行步骤S4;
S6:判断此次计算是否为计算流程的最后一步,若是,则结束计算过程;否则,生成下一阶段的计算任务,并将下一阶段的计算任务回投到待投递列表中,返回执行步骤S4。
在具体实施过程中,在任务分发调度时结合了不同计算任务类型对主机硬件性能不同要求,使得大规模实景空三的计算任务计算能充分发挥主机的算力,在保证计算进程稳定的前提下,使大规模实景空三的计算时间达到最短。
更具体的,所述步骤S5还包括:当某一个封装好的任务信息被标记三次失败状态后,结束计算过程。
更具体的,在步骤S1中,所述实时的状态数据包括CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率和GPU显存实时占用率;在步骤S2中,根据每个主机节点实时的状态数据,按照综合业务指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级;所述综合业务指标包括了空三计算的任务的不同计算阶段的硬件需求指标,根据不同计算阶段不同的硬件需求指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级。
更具体的,在步骤S4中,所述选举规则具体包括:主机节点在线且启用,主机节点的剩余内存大于封装好的任务信息所需计算的运行内存,主机节点的CPU实时利用率小于90%,可用任务槽大于0,主机节点当前无已运行的同类任务,主机节点距离上一次投递任务时间间隔大于3分钟,CPU实时利用率小的优先派送;其中:主机节点的剩余内存通过内存实时占用率、内存大小计算得到;可用任务槽用于主机节点执行任务,主机节点会根据机器性能配置对应的任务槽数量。
在具体实施过程中,选举规则由筛选条件构成,筛选条件包括主机节点在线且启用、主机节点的剩余内存大于封装好的任务信息所需计算的运行内存、主机节点的CPU实时利用率小于90%、可用任务槽大于0、主机节点当前无已运行的同类任务、主机节点距离上一次投递任务时间间隔大于3分钟。在实际应用时,根据计算任务的类型及要求对筛选条件进行排序组合,构成所需的选举规则。
在具体实施过程中,主机节点在线且启用这一规则是进行任务调度的前提。主机节点需要是健康的,并且没有因为主观原因关闭其空三计算任务的,可以保证计算进程的稳定。主机节点的剩余内存大于封装好的任务信息所需计算的运行内存这一规则是动态调节的,基于每个计算进程对主机内存余量要求的不同,需要根据计算类型的不同状态量进行筛选,保证计算进程能够拥有足够的资源。主机节点的CPU实时利用率小于90%这一规则是为了保证主机节点的基础硬件资源满足计算要求。一般而言,主机节点CPU利用率较高,系统的流畅度就会降低。一般任务进程对CPU的要求较高,当主机节点处于高频运算时,再往该主机节点投递任务,计算任务的稳定性就无法得到保证。可用任务槽大于0这一规则是为了保证主机节点拥有足够多的任务槽可以执行任务。一般主机节点会根据其机器性能配置对应的任务槽数量,如果任务槽数全在占用中,为了保证主机的稳定性,此时不应该再对此主机节点派发任务。
在具体实施过程中,主机节点当前无已运行的同类任务这一规则是基于计算进程的性能要求指定的。比如GPU版本的提取匹配进程已在进行,此时GPU利用率与显存资源的占用率明显提高,接近满负荷状态,但实际内存与CPU的占用还很低,可以再次承接毅哥CPU版本的提取匹配任务,使得CPU与内存能达到满负荷或者接近满负荷的状态。但主机节点在运行GPU/CPU版本的提取匹配任务时,不应该再承接同一种类型的任务,否则主机节点容易因为性能过载而崩溃。
在具体实施过程中,主机节点距离上一次投递任务时间间隔大于3分钟这一规则设定是基于任务的投递与计算需要有毅哥加载的时间。经过多次测量验证,发现1分钟的投递时间与2分钟的启动预热时间,能够充分保证计算进程正在运算,且运算过程对硬件性能的占用达到稳定值,此时就可以基于主机节点实时监控判断此主机节点能否继续承接任务。
在具体实施过程中,CPU实时利用率小的优先派送这一规则是基于CPU是主机节点的调度运算中心,所有任务都需要经过CPU进行管理,如果CPU占用较低,可以理解为此主机节点相对空闲,依据主机节点空闲程度进行任务派送,可以提高任务的计算效率。
更具体的,在所述步骤S5中,对计算状态进行监控,当计算成功时,需要进一步检查计算结果是否符合规范,若是,则将任务标记为成功,执行步骤S6;否则,将任务标识失败状态,并将封装好的任务信息回投到待投递列表中,返回执行步骤S4。
在具体实施过程中,计算结果符合规范的标志对于每个计算类型任务各不相同。如分开任务通过判定分块文件是否存在,提取匹配判断匹配文件是否存在且文件大小大于1Kb,分开平差判断平差的结果文件是否存在、融合平差判断融合文件是否存在、密集匹配判断成果总预览文件是否存在等。
在具体实施过程中,在步骤S4中,当选举到多个符合选举规则的主机节点时,按照选举优先级的顺序选举出最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。若选举到的仅有一个符合选举规则的主机节点,则将该主机节点作为最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。
在具体实施过程中,综合指标计算了主机节点的优先级,并针对不同任务类型增减筛选条件的办法,能极为有效地提高任务计算时与主机性能的契合度,在充分发挥主机算力的同时,使得整体任务的运算时间达到最短,提高大规模实景空三的计算在多机组环境下的计算效率。
实施例2
本实施例提供一种分布式空三计算任务调度系统,用于执行一种分布式空三计算任务调度方法,如图2所示,包括多个主机节点、主机节点监控模块、选举优先级计算模块、任务类型识别模块、筛选条件设置模块、选举规则预设模块、选举模块、任务初始列表模块和任务待投递列表模块;所述主机节点上设置有计算模块、计算状态监控模块和计算流程判断模块;其中:
所述主机节点监控模块用于对每个主机节点硬件的使用状态进行监控,获取实时的状态数据;
所述选举优先级计算模块用于根据实时的状态数据,综合业务指标计算增减主机节点后的每个主机节点选举优先级;
所述任务类型识别模块用于识别调度任务的任务类型,由筛选条件设置模块根据任务类型设置主机节点选举时的筛选条件,得到预设的选举规则并保存于选举规则预设模块中;
所述任务初始列表模块用于存储任务初始列表;所述任务待投递列表模块用于存储任务待投递列表,其包括了封装好的任务信息;
所述选举模块用于按照选举优先级及预设的选举规则选取主机节点,若选举成功,则将封装好的任务信息从待投递列表中投递到该主机节点进行计算,若选举失败,则将封装好的任务信息回投到初始列表中,待下一次投递;
所述计算状态监控模块用于对主机节点的计算状态进行监控,若计算成功传输至计算流程判断模块进一步处理,若计算失败则标识失败状态,并将封装好的任务信息回投到待投递列表中,待下一次投递;
所述计算流程判断模块用于判断此次计算是否为计算流程的最后一步,若是,则结束计算过程;否则,生成下一阶段的计算任务,并将下一阶段的计算任务回投到待投递列表中,待下一次投递。
更具体的,在所述计算状态监控模块中,当某一个封装好的任务信息被标记三次失败状态后,结束计算过程。
更具体的,在所述主机节点监控模块中,其获取主机节点实时的状态数据包括CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率和GPU显存实时占用率;在所述选举优先级计算模块中,根据每个主机节点实时的状态数据,按照综合业务指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级;所述综合业务指标包括了空三计算的任务的不同计算阶段的硬件需求指标,根据不同计算阶段不同的硬件需求指标为每个主机节点设置权重值,根据权重值对每个主机节点实时的状态数据进行计算,根据每个主机节点的计算结果生成选举优先级。
更具体的,在选举规则预设模块中,其预设的选举规则具体包括:主机节点在线且启用,主机节点的剩余内存大于封装好的任务信息所需计算的运行内存,主机节点的CPU实时利用率小于90%,可用任务槽大于0,主机节点当前无已运行的同类任务,主机节点距离上一次投递任务时间间隔大于3分钟,CPU实时利用率小的优先派送;其中:主机节点的剩余内存通过内存实时占用率、内存大小计算得到;可用任务槽用于主机节点执行任务,主机节点会根据机器性能配置对应的任务槽数量。
在具体实施过程中,选举规则由筛选条件构成,筛选条件包括主机节点在线且启用、主机节点的剩余内存大于封装好的任务信息所需计算的运行内存、主机节点的CPU实时利用率小于90%、可用任务槽大于0、主机节点当前无已运行的同类任务、主机节点距离上一次投递任务时间间隔大于3分钟。在实际应用时,根据计算任务的类型及要求对筛选条件进行排序组合,构成所需的选举规则。
更具体的,在所述计算状态监控模块中,对计算状态进行监控,当计算成功时会进一步检查计算结果是否符合规范,若是,则将任务标记为成功,传输至计算流程判断模块进一步处理,否则,将任务标识失败状态,并将封装好的任务信息回投到待投递列表中,待下一次投递。
在具体实施过程中,在选举模块中,当选举到多个符合选举规则的主机节点时,按照选举优先级的顺序选举出最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。若选举到的仅有一个符合选举规则的主机节点,则将该主机节点作为最优的主机节点,将封装好的任务信息从待投递列表中投递到该主机节点进行计算。
在具体实施过程中,本实施例提供的一种分布式空三计算任务调度系统可以很好地实现分布式空三计算任务调度方法,在任务分发调度时结合了不同计算任务类型对主机硬件性能不同要求,使得大规模实景空三的计算任务计算能充分发挥主机的算力,在保证计算进程稳定的前提下,使大规模实景空三的计算时间达到最短。
实施例3
更具体的,在实施例1、实施例2的基础上,构建一种分布式系统,其融合和分布式空三计算任务调度方法与系统的基本发明构思,对任务的调度处理由基础的主机硬件监控模块与任务调度监控模块组成,具体系统运行流程如图3所示。
主机硬件监控模块是对每一台登记到分布式集群环境下的主机节点进行硬件数据的监控获取与展示。采用基于Prometheus的监控模块实现,其主机硬件监控功能是分布式集群后续做任务调度监控的数据基础,主要包含主机硬件数据包括CPU实时利用率、内存实时占用率、GPU实时利用率与GPU显存实时占用率等多项指标,由于CPU是主机运算的基石,所有运算进程都需要通过CPU进行调度处理,因此使用CPU的实时利用率对主机做一个基础的优先级排序,并对内存实时占用率、GPU实时利用率与GPU显存实时占用率进行入库处理,在节点选举阶段,针对不同的任务类型,做查询筛选的增减项处理。主机硬件监控功能不仅为后续的调度提供了基本的数据判别依据,也提供了主机状态综合阅览的功能,使用户能够清晰明了的在界面上看到主机硬件的实时状态。
主机硬件监控模块的特点在于,可以实时监控主机的硬件指标(CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率与GPU显存实时占用率),利用内存实时占用与内存大小计算出剩余的内存容量,并综合以CPU实时利用率作为基础优先级的参照,为后续的调度派送提供数据基础;同时,基于Prometheus开源监控系统,实现的兼容多类型主机的监控功能,数据可靠性与稳定性有较大的保证。
任务调度监控模块是整个分布式系统任务调度与任务计算监控的核心,是保证大规模实景空三计算任务能够稳定高效计算的核心内容。在主机硬件监控模块的基础上,通过接收界面输入获得的待计算任务,基于节点任务的选取方法,选取到符合该任务计算所需条件的最佳节点后,执行任务投递工作,将封装好的任务指定到节点运行,并开启任务监控功能,监控节点任务的运行状态。因为大部分情况下,待计算的任务列表是远高于节点数的,将可以投递到一台机上运行的任务实现任务的并行计算,对于性能要求较高的任务实现单例控制,一台节点机同一时间只允许运行一个此类型的任务。节点选举的优势在于针对不同类型的任务选出最贴合硬件性能的节点,并且节点承载的任务可以是并行的,比如主机在执行CPU方式的提取匹配任务时,可以并行执行GPU的提取匹配,可以同时将CPU的算力与GPU的算力发挥到极致。
任务调度监控模块的特点在于:可以根据主机硬件信息的实时监控,获取到的节点优先级排序,并在此基础上进行节点选择机制,提高了主机计算任务并行度,充分发挥了主机的硬件性能,也提高了运算效率;使用日志监控机制,使任务投递状态有迹可寻;使用多线程监控机制,监控主机与监控任务分开处理、错峰处理,减缓系统压力,保证系统的稳定性;主机状态监控与任务状态监控并重,能够依据主机状态动态调节任务并行度,也可以根据任务状态反过来标记主机的单例标识,保证高效运算的同时,保持主机硬件性能的稳态;采用了针对不同计算进程的针对性调度方案,并依据其对主机硬件性能的要求不同,分别进行定点投送;在计算节点进行任务监控的基础上,调度模块定时抓取任务状态入库,并根据最新的任务状态进行任务流程控制,进而完成任务计算的闭环。
更具体的,主机硬件监控模块的实现步骤具体为(如图4所示):
安装部署Prometheus(Prometheus是由SoundCloud开发的开源监控报警方案)到主节点,exporter监控插件到各个监控主机,使其能够通过接口访问监控数据;
启用定时器15秒访问一次主机监控数据,访问的信息包括CPU实时利用率、内存实时占用率、内存大小、GPU实时利用率与GPU显存实时占用率,并将其解析出来,获取到有效信息;
将解析出来的GPU实时利用率与GPU显存实时占用率入库;将解析出来的内存信息经过计算,保存成剩余内存容量入库;将解析出来的CPU实时利用率入库,并将其经过权重换算后,导出成节点优先级顺序入库。
更具体的,任务调度监控模块的实现步骤具体为(如图4所示):
步骤一:接收到任务流程开始的信息后,生成指定流程的计算子任务,进入待投递任务列表;
步骤二:后台线程定时检查待投递的任务状况,发现有待投递列表,则进入节点选举;
步骤三:节点通过如下通用规则进行判断:节点在线且启用、剩余内存大于阈值、CPU小于90%、可用节点数大于0、要求单例控制的任务要求节点当前无已运行的同类任务、同一节点距离上一次投递任务时间间隔大于3分钟、按照CPU占用率排序,占用小优先派送。
步骤四:如果已经选举到了合适的节点,进行下一步的任务计算监控步骤,未选中则回到待投递列表,之后进行步骤二;
步骤五:投递到指定节点计算后,定时监控节点任务的运行状态,步骤如下:
A)监控计算进程是否正常,正常计算中则等待其状态变化;
B)计算进程异常退出则将任务标记失败,且在任务标识中失败次数+1,判断失败次数是否小于3,小于3则回到待投递列表,等待执行步骤二;大于等于3则将任务终止;
C)计算进程正常退出则进一步检查计算成果是否符合规范。计算成果符合规范的标志每个计算类型各不相同。比如分块任务通过判定分块文件是否存在,提取匹配判断匹配文件是否存在且文件大小大于1Kb,分块平差判断平差的结果文件是否存在、融合平差判断融合文件是否存在、密集匹配判断成果总预览文件是否存在等等。如果计算成果不符合规范则将任务标记为失败,回到步骤五B);如果计算成果符合规范则将任务标记为成功,并进行是否是流程的最后一步的判断;
D)该任务是流程的最后一步,则将主工程标记为成功后,流程终止;如果不是流程的最后一步,则需要生成下一阶段的任务列表,并将其放到待投递列表中,回到步骤二。
在具体实施过程中,本实施例旨在提高大规模实景空三的计算在多机组环境下的计算效率。在任务分发调度时结合不同计算任务类型对主机硬件性能不同要求,使大规模实景空三的计算任务计算能充分发挥主机的算力,在保证计算进程稳定的前提下,使大规模实景空三的计算时间达到最短。
实施例4
本实施例具体说明了两种任务分配的过程,分别为分块平差任务分配过程(普通情况)与融合平差任务分配过程(特殊情况)。
分块平差任务分配过程:一般一个分块的提取匹配的流程结束后,会自动开启这个分块的平差工作。平差计算的要求条件为基础的选举规则(节点的CPU实时利用率小于90%,可用任务槽大于0,节点距离上一次投递任务时间间隔大于3分钟,且该节点在所有可用集群节点中CPU利用率最小)则选取它作为计算节点。计算节点接到来自主节点投递的任务后,便对它开始监控,确保它处于正常计算中的状态。当计算节点将收到的平差任务计算完成后,会将计算状态标记为已完成。此时主节点收到来自该计算节点的计算完成通知,开始检查此分块平差任务是不是分块平差任务列表中的最后一项,如果是,则开始融合平差工作。
融合平差任务分配过程:融合平差的选举规则在上述基础规则的基础上,叠加主机内存剩余数为(照片数*0.15%G)的条件,比如此次为10000张照片的三维重建工作,进行融合平差至少需要有15G的内存,即选举规则为(节点的CPU实时利用率小于90%,可用任务槽大于0,节点距离上一次投递任务时间间隔大于3分钟,节点不存在其他正在计算的融合平差任务,且该节点在所有可用集群节点中CPU利用率最小,且主机空闲内存数>15G),有符合条件的机子则会选取出来,进行融合平差任务计算。融合平差一般为此流程的最后一步,因此融合平差计算成功之后,会将工程的一次平差阶段标记为已完成。
本实施例说明了,在具体实施过程中,可以根据具体需要预审不同的选举规则,使得其任务调度过程更加合理和高效,能提高大规模实景空三的计算在多机组环境下对于各种任务的计算效率。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。