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

持续集成系统中的任务动态调度方法和系统与流程

2022-04-30 15:21:36 来源:中国专利 TAG:


1.本发明涉及一种任务调度技术,具体涉及一种应用于持续集成系统中的任务动态调度技术。


背景技术:

2.企业级devops实践中,持续集成的效率非常重要,而目前大多数的持续集成系统根据构建任务启动的先后决定先后顺序,这种模式在应对多样性的构建场景时不够灵活,可能会导致很多问题,例如:排队等待中的构建任务可能存在重要的紧急的构建任务无法优先执行,正在执行的构建任务可能存在重要性较低的任务占据系统资源等,分配不合理的构建任务顺序,很容易造成构建资源的抢占与浪费,影响持续集成系统的性能与效率,因此如何调度这些不同类型的构建任务,使得构建资源可以得到高效的利用,成为一个关键问题。
3.同时,在持续集成系统中,通常会遇到构建资源不足的问题,需要运维人员人工添加机器节点来减轻负载压力,这种需要人工介入的需求比较耗时耗力,也影响了整体构建的效率,如何自动且合理的调整构建资源也是一个需要解决的问题。


技术实现要素:

4.以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
5.本发明的目的在于解决上述问题,提供了一种持续集成系统中的任务动态调度方法和系统,解决了构建任务顺序不合理导致的效率问题,同时提升了持续集成系统的整体性能。
6.本发明的技术方案为:本发明揭示了一种持续集成系统的任务动态调度系统,系统包括构建节点分配模块、任务基本优先级分配模块、任务动态优先级调度模块、以及构建资源负载分析模块,其中:
7.构建节点分配模块,用于根据构建任务的所需资源标签,将该构建任务分配到对应的构建节点;
8.任务基本优先级分配模块,用于根据该构建任务的参数量化该构建任务的基础价值,并为各构建任务分配不同的权重参数,以调节每一个任务属性对总基础价值的影响大小;
9.任务动态优先级调度模块,用于根据任务的剩余价值密度与执行紧迫性对构建任务进行动态调度;
10.构建资源负载分析模块,用于根据各构建节点的任务执行负载情况,自动实现构建资源的包括扩容与伸缩在内的调整方案。
11.根据本发明的持续集成系统的任务动态调度系统的一实施例,构建节点分配模块进一步配置为:用户通过模板化步骤创建构建任务,其中每一个模板化步骤设定所需的环境资源标签,以标识每个步骤执行所依赖的对应的环境,当构建节点具有构建任务的所有资源标签合集时,该构建任务则分配到该对应的构建节点执行,当有多个构建节点均满足该构建任务时,则分配目前负载最低的构建节点来执行该构建任务。
12.根据本发明的持续集成系统的任务动态调度系统的一实施例,任务基本优先级分配模块中的构建任务的参数包括:任务用途、重要程度,任务类型,任务构建状态,被依赖的任务个数。
13.根据本发明的持续集成系统的任务动态调度系统的一实施例,任务动态优先级调度模块中的任务的剩余价值密度是由下述公式计算:
[0014][0015]
其中,t表示任务预计执行时间,t表示已执行时间,v表示任务基础价值,m表示任务即时价值产生速度的变化大小。
[0016]
根据本发明的持续集成系统的任务动态调度系统的一实施例,任务动态优先级调度模块中的任务的执行紧迫性是由下述公式计算:
[0017][0018]
其中,t表示任务预计执行时间,t表示已执行时间,n用来调节任务紧迫性对任务动态优先级的影响大小,d表示任务截止时刻,τ表示当前时刻。
[0019]
根据本发明的持续集成系统的任务动态调度系统的一实施例,通过调节m和n两个参数的大小来调节任务剩余价值密度与执行紧迫性对任务动态优先级的影响权重。
[0020]
根据本发明的持续集成系统的任务动态调度系统的一实施例,任务动态优先级调度模块对构建任务进行动态调度的过程中,设置抢占阈值系数k,只有当等待任务中的动态优先级大于目前正在执行的任务动态优先级乘以抢占阈值系数k之后的乘积值,才可以抢占资源执行,否则继续执行当前执行的任务。
[0021]
根据本发明的持续集成系统的任务动态调度系统的一实施例,构建资源负载分析模块进一步配置为:在每个构建节点设置后台数据采集程序,记录构建节点的负载情况,将构建节点的负载情况推送到管理员界面,后台数据采集程序同时记录各构建节点的任务执行成功率与执行效率,对任务排队时间长度高于一设定值的构建节点进行自动扩容。
[0022]
本发明还揭示了一种持续集成系统的任务动态调度方法,方法包括:
[0023]
步骤1:构建任务被触发启动,构建出任务队列;
[0024]
步骤2:根据构建任务的环境资源标签,将构建任务分配到对应的满足条件的构建节点上;
[0025]
步骤3:按照构建节点分组,根据任务属性计算各构建任务的基础价值与预计执行时间;
[0026]
步骤4:计算任务的动态优先级,并根据优先级来动态调度构建任务,其中任务动态优先级的计算是由构建任务的剩余价值密度和执行紧迫性得到的;
[0027]
步骤5:进入等待队列,判断未执行任务的数量是否大于设置的扩容阈值,若大于
扩容阈值则构建资源自动扩容、添加节点,并将这些未执行的构建任务重新分配构建节点后返回步骤3,若小于扩充阈值则返回步骤4中。
[0028]
根据本发明的持续集成系统的任务动态调度方法的一实施例,步骤3进一步包括:
[0029]
计算构建任务的基础价值是由构建任务的各个参数与其对应的影响权重的乘积加总而成;
[0030]
计算构建任务的预计执行时间是采用:若之前构建过则取构建任务历史构建时间的平均值,若未构建过则取同一个构建节点任务预计执行时间的平均值。
[0031]
根据本发明的持续集成系统的任务动态调度方法的一实施例,步骤4进一步包括:
[0032]
第一步,计算所有执行任务与等待任务的动态优先级,步骤3中基础价值最高的构建任务首先获得执行权,然后实时计算系统中各个构建任务的动态优先级,其中任务动态优先级为其中,t表示任务预计执行时间,t表示已执行时间,v表示任务基础价值,m表示任务即时价值产生速度的变化大小,n用来调节任务紧迫性对任务动态优先级的影响大小,d表示任务截止时刻,τ表示当前时刻;
[0033]
第二步,将上一步骤计算得出的任务动态优先级进行排序,当目前的执行任务优先级乘以抢占阈值系数k的乘积,与目前最高动态优先级的任务做比较,若乘积大于最高动态优先级则进入步骤5,若乘积小于最高动态优先级则由任务抢占系统资源开始执行,在任务抢占系统资源开始执行后,还与等待任务同时计算动态优先级,进行动态调度。
[0034]
本发明对比现有技术有如下的有益效果:本发明对持续集成系统的构建任务进行动态优先级调度,解决了构建任务顺序不合理导致的效率问题,同时通过对构建节点负载分析,实现构建资源的自动调整,提升持续集成系统的整体性能。
附图说明
[0035]
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
[0036]
图1a和1b示出了本发明的持续集成系统的任务动态调度系统的一实施例的架构示意图。
[0037]
图2示出了本发明的持续集成系统的任务动态调度方法的一实施例的流程图。
具体实施方式
[0038]
以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
[0039]
图1a和1b示出了本发明的持续集成系统的任务动态调度系统的一实施例的架构。请参见图1a和1b,本实施例的任务动态调度系统包括以下模块:构建节点分配模块、任务基本优先级分配模块、任务动态优先级调度模块、以及构建资源负载分析模块。
[0040]
构建节点分配模块用于根据构建任务的所需资源标签,将该构建任务分配到对应的构建节点。
[0041]
构建节点分配模块的具体实现如下:用户通过模板化步骤创建构建任务,每个步
骤需要依赖不同的环境依赖才可以执行,例如maven构建需要maven环境、docker镜像构建需要docker环境等,因此,系统为每一个模板化步骤设定所需的环境资源标签(即例子中的maven环境、docker环境等),当构建节点具有构建任务的所有资源标签合集时,该构建任务便可以分配到该构建节点执行,当有多个构建节点均可以满足该构建任务时,则分配目前负载最低的构建节点来执行该构建任务。
[0042]
任务基本优先级分配模块用于结合持续集成系统中的构建任务的特点,根据该构建任务的参数量化该构建任务的基础价值,并为各个构建任务分配不同的权重参数,调节每一个属性对总基础价值的影响大小。
[0043]
构建任务的参数包括:
[0044]
1、任务用途、重要程度(紧急发布构建》批量测试》普通构建);
[0045]
2、任务类型(价值:定时触发《mr触发、push触发《手动触发),其中mr是指git中的merge request(代码合并请求)。
[0046]
3、任务构建状态(上一次的构建情况:失败后构建》首次构建》成功后构建);
[0047]
4、被依赖的任务个数(被依赖的任务越多,本任务的重要性越高)。
[0048]
任务动态优先级调度模块用于根据任务的剩余价值密度与执行紧迫性对构建任务进行动态调度。
[0049]
任务动态优先级调度模块的具体实现如下:在实时应用系统中,价值高的任务执行时间不一定紧迫,而时间紧迫的任务价值反而不一定高,所以为了兼顾公平与效率,综合考虑任务价值与截止期、空余时间等因素,在任务的执行过程中,同步计算任务队列的价值密度与执行紧迫度,实现动态调度。
[0050]
上述的任务价值密度是指:任务的价值属性是任务执行优先级的一个重要判断因素,在任务基本优先级分配模块所执行的基础优先级分配时已经计算出构建的基础价值,即该构建任务执行完成可以给系统带来的收益,然而,任务的价值不是在任务执行的那个瞬间产生,而是随着任务的执行而逐渐积累的过程,因此本系统综合考虑任务的价值与执行时间,较佳的使用剩余价值密度来量化构建任务的重要程度,即任务在剩余执行时间内,单位时间产生的价值。
[0051]
上述的任务的其中,t表示任务预计执行时间,t表示已执行时间,v表示任务基础价值,m表示任务即时价值产生速度的变化大小。
[0052]
上述的任务的执行紧迫性是指:在持续集成系统中,一些紧急构建的需求要求系统需要尽可能满足任务的时间约束,来保证构建任务可以在截止期前成功执行,传统的基于任务时间属性的调度方法往往根据任务的截止期来评判任务执行的紧迫性,但仅仅根据截止期具有一定的局限性,因此本系统分析任务截止期、剩余执行时间及空闲时间的关系,使用执行强度来评判构建任务的紧迫性,即完成任务所需的执行时间与任务空闲时间的比值,比值越高说明任务的执行紧迫性越高。
[0053]
上述的任务的其中,t表示任务预计执行时间,t表示已执行时间,n用来调节任务紧迫性对任务动态优先级的影响大小,d表示任务截止时刻,τ表示当前时刻。
[0054]
本系统为以上两种评价指标(任务的剩余价值密度、任务的执行紧迫度)设定合适
的调节参数m和n,通过调节m和n两个参数的大小来调节任务剩余价值密度与执行紧迫性对任务动态优先级的影响权重,提高了对不同持续集成系统的适应性。
[0055]
同时设置合理的抢占阈值系数k,只有当等待任务中的动态优先级大于目前正在执行的任务动态优先级乘以抢占阈值系数k之后的乘积值,才可以抢占资源执行,否则继续执行当前执行的任务,避免两个或两个以上的任务优先级交替上升导致任务之间反复抢占的情况。
[0056]
构建资源负载分析模块用于根据各构建节点的任务执行负载情况,自动实现构建资源的包括扩容与伸缩在内的调整方案。
[0057]
具体而言,在每个构建节点设置后台数据采集程序,记录构建节点的负载情况,推送到管理员界面,同时,记录各构建节点的任务执行成功率与执行效率,对任务排队时间较长的构建节点进行自动扩容,节省人力成本,提升持续集成系统的效率。
[0058]
图2示出了本发明的持续集成系统的任务动态调度方法的一实施例的流程。请参见图2,本实施例的任务动态调度方法的实施步骤详述如下。
[0059]
步骤1:构建任务被触发启动,构建出任务队列。
[0060]
构建任务被触发的情况包括:开发测试人员在持续集成系统手动构建、开发人员push与mr到git仓库时触发、定时任务触发等。
[0061]
步骤2:根据构建任务的环境资源标签,将构建任务分配到对应的满足条件的构建节点上。
[0062]
这一步骤是由构建节点分配模块完成的。
[0063]
步骤3:按照构建节点分组,根据任务属性计算各构建任务的基础价值与预计执行时间。
[0064]
这一步骤是由任务基本优先级分配模块完成的,任务的基础价值和预计执行时间的具体计算过程如下。
[0065]
1、计算构建任务的基础价值的过程:
[0066]
以下a-d是构建任务的参数:
[0067]
a.任务用途、重要程度(紧急发布构建》批量测试》普通构建);
[0068]
b.任务类型(价值:定时触发《mr触发、push触发《手动触发);
[0069]
c.任务构建状态(上一次的构建情况:失败后构建》首次构建》成功后构建);
[0070]
d.被依赖的任务个数(被依赖的任务越多,本任务的重要性越高);
[0071]
任务的基础价值=a
×
a b
×
b c
×
c d
×
d,其中a,b,c,d分别表示任务在以上四个参数上的价值分数,而a,b,c,d分别表示以上四个参数对总基础价值的影响权重。
[0072]
在此处理中,通过四种不同角度考虑持续集成系统中的构建任务,并设置不同的权重参数,可以实现多方位量化构建任务基础价值的技术效果,解决了目前多数持续集成系统针对任务价值计算不够全面的问题
[0073]
2、计算每个构建任务的预计执行时间t:若之前构建过,取构建任务历史构建时间的平均值,若未构建过,取同一个构建节点任务预计执行时间的平均值。
[0074]
步骤4:计算任务的动态优先级,并根据优先级来动态调度构建任务。
[0075]
这一步骤是由任务动态优先级调度模块来完成的,计算任务动态优先级的具体过程为:
[0076]
第一步,计算所有执行任务与等待任务的动态优先级,步骤3中基础价值最高的构建任务首先获得执行权,然后随着系统时间推移,系统中各个构建任务的优先级动态变化。对于执行中的任务,其执行紧迫性不变,但剩余价值密度随已执行时间的增加而不断增加,对于等待中的任务,其剩余价值密度不变,但随着等待时间的增加,执行紧迫性不断增加。
[0077]
其中,t表示任务预计执行时间,t表示已执行时间,v表示任务基础价值,m表示任务即时价值产生速度的变化大小,n用来调节任务紧迫性对任务动态优先级的影响大小,d表示任务截止时刻,τ表示当前时刻。
[0078]
第二步,根据上一步骤计算得出的任务动态优先级进行排序,当目前的执行任务优先级乘以抢占阈值系数k的乘积,与目前最高动态优先级的任务做比较,若乘积大于最高动态优先级则进入步骤5,若乘积小于最高动态优先级则由任务抢占系统资源开始执行,在任务抢占系统资源开始执行后,还可能被抢占停止执行,因此任务在执行中状态时,还需要与等待任务同时计算动态优先级,进行动态调度。
[0079]
在本步骤中,使用构建任务剩余价值密度与执行紧迫性两种属性来对任务进行动态调度,并通过两个调节参数来调节影响权重,实现了保证高价值的任务与高紧迫性任务动态调度的平衡,同时引入抢占阈值,解决了两个和多个任务优先级交替上升导致任务之间反复抢占的问题。
[0080]
步骤5:进入等待队列,判断未执行任务的数量是否大于设置的扩容阈值(扩容阈值表示构建节点等待队列的任务数量),若大于则构建资源自动扩容、添加节点,并将这些未执行的构建任务重新分配构建节点后返回步骤3,若小于则返回步骤4中。
[0081]
在本步骤中,通过分析构建节点的负载情况,自动扩容以减轻负载压力,让等待的构建任务尽快得到执行机会,实现了灵活伸缩构建资源的技术效果,解决了持续集成系统需要人工管理资源带来的效率问题。
[0082]
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
[0083]
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
[0084]
结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心协作的一个或多个微处理器、或任何其
他此类配置。
[0085]
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
[0086]
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
[0087]
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
再多了解一些

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

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

相关文献