基于计算资源的动态任务调度装置及方法与流程

文档序号:34386406发布日期:2023-06-08 06:24阅读:37来源:国知局
基于计算资源的动态任务调度装置及方法与流程

本发明涉及云计算,更具体地说,涉及一种基于计算资源的动态任务调度装置及方法。


背景技术:

1、随着互联网的不断扩张,传统单节点服务器的计算能力已经不足以处理当前与日俱增的数据量,因此开发人员需要将大量的计算资源进行统一管理和调度,构成一个资源池用以向终端用户提供服务。k8s(kubernetes)和openstack作为业内应用最多的云计算管理平台,提供了不错的资源管理和调度方案。随着业务体量的发展,企业对人工智能模型训练、仿真等相关场景的任务调度需求愈发明显。然而作为一种通用型任务及资源调度平台,针对cpu、内存、io等资源比较敏感的任务没有很好的表现。

2、例如专利cn112241368a,公开了基于k8s的自动化模型训练方法和装置,通过k8s实现了模型训练任务的调度。其工作原理如图1所示,基于k8s构建了一套上层模型训练管理平台,创建训练任务后,通过调用k8s的api接口创建pod,k8s调度器在接到创建pod请求后立即寻找可用节点并将任务调度到该节点上,k8s节点守护进程负责拉起容器并执行任务。但该方案存在以下缺点:强依赖于k8s,部署困难,不够灵活;使用k8s内置调度算法,定制化困难,无法对特定资源敏感的任务进行积极响应;k8s将任务调度到指定节点后,在内存等不可压缩资源占用突然增长的情况下,可能导致oom(内存溢出)或者pod驱逐致使任务失败或重新执行。

3、如上所述,基于k8s等分布式调度平台进行相关任务系统的构建已成为业界主流方案,虽然其系统构建较为简单,然而其调度算法的灵活性较差,运维困难的问题却也非常显著。


技术实现思路

1、为了解决以上问题,本提案提出了一种基于计算资源的动态任务调度系统和相关算法。该方案具备完整的设计架构,针对不同任务可进行定制化修改,对特定资源敏感的任务积极响应,解决统一调度算法的不足,提高了灵活度。为了实现上述目的,本发明采用了如下技术方案:

2、一种基于计算资源的动态任务调度装置,包括:控制模块、计算模块、etcd以及mysql数据库服务器;所述控制模块包括多个调度器,计算模块包括多个节点,每个节点包括节点监控模块与任务处理模块;

3、所述调度器用于根据用户提交的任务调度计算模块执行任务,所述调度器基于etcd提供的主备高可用且数据强一致的特性完成主调度器和备调度器的选举功能,从而实现调度器的高可用;在服务正常情况下,只有主调度器负责调度业务,当主调度器出现异常时,备调度器之一将立刻捕捉到异常并选举成为主调度器,继续处理业务。

4、本发明提供了高可用性架构,调度器基于etcd提供的raft分布式一致性协议组成了主备集群,当主调度器出现异常时,备用调度器将立即选举为主调度器继续处理。

5、进一步地,所述监控模块负责与调度器通信,将当前节点资源状态传送给当前主调度器,主调度器将任务下发到监控模块后,监控模块负责准备任务所需要的数据并拉起任务,待任务完成后将任务执行结果回调给主调度器。

6、进一步地,所述调度器还包括任务资源需求评估模块,针对不同任务,为达到更好的调度效果,对用户提交的任务针对敏感资源进行评估,计算所需要的资源数量,此资源数量将作为后续节点选择的重要标准。

7、进一步地,所述调度器还包括节点预选模块,用于根据任务资源需求评估模块评估后的结果,查找当前在线节点中剩余资源满足需求的节点;当节点池较大时,配合随机数确定查找起点和步长,当满足需求的节点数量达到一定数量后即可停止预选,并将预选结果传递给下一步。

8、进一步地,所述调度器还包括负载均衡模块,用于对预选出的节点进行评分,评分依赖于任务所需要的各种资源,资源与其权重的乘积作为积极参数;节点惩罚值作为消极参数,由其失败次数使用指数加权滑动平均算法计算而来,短时间内失败次数越高则惩罚值越高,否则将随任务的执行成功惩罚值逐渐降低为1。

9、同时节点当前正在执行的任务数量也作为一个消极参数参与计算,旨在均衡负载;另外为了避免在大负载下大量任务调度到同一节点下,算法在评估节点分数前,先随机选取2个节点,在选中的节点中评估分数并选择较优节点。

10、进一步地,所述负载均衡模块采用以下函数获取权重、惩罚值和节点评分:

11、所述权重为滑动平均权重,计算公式如下(公式一):

12、w=e(last-now)/lifetime;

13、其中,e为数学常数,last为上次节点被选中的时间,now为当前时间,lifetime为自定义的时间周期,在该周期内的时间查值影响较大,它在lifetime×ln(2)后达到半衰期;

14、惩罚值计算公式如下(公式二):

15、penty=old×w+new×(1-w);

16、其中,old为上一次计算出的惩罚值,new为本次惩罚值,如果失败为1000,成功为1,w为公式一计算出的权重;

17、节点评分公式如下:

18、

19、其中,resval为资源剩余值,resweight为资源权重,inflight为当前该节点正在处理的任务数量,penty为公式二计算出的惩罚值。

20、进一步地,所述调度器还包括节点熔断检查模块,用于对节点是否可继续服务进行评估,节点熔断检查模块对错误次数进行记录并决定是否将任务继续调度到该节点、减少无效的网络请求、降低调度延迟中的一种或数种;熔断算法计算公式如下:

21、

22、其中,k为容忍度,减少k使限流算法更加激进,更多流量将被拒绝,增加k使限流算法缓和,允许更多流量;accepts为当前时间窗口正常请求数量,requests为当前时间窗口所有请求数量;

23、当requests无限增大,而accepts不再增长时,f(a)无限趋近于1,触发熔断;反之当accepts增大时,由于k的作用,f(a)无限趋近于0,解除熔断。

24、进一步地,所述调度器还包括过载保护模块,所述过载保护模块作用于计算节点端,当任务由调度器提交到计算节点后,计算节点对当前系统资源与任务所需资源进行比较,当剩余资源不足以执行该任务时,触发过载保护,立即向调度器拒绝任务并做出资源不足响应,避免因资源不足导致的类似oom(内存溢出)等问题。

25、进一步地,所述调度器还包括数据传输协议模块,所述数据传输协议模块使用tcp协议构建request-response模型(请求响应模型),将protobuf数据(googleprotocolbuffer,结构化数据存储格式)进行包装用于双方传递。

26、本发明还提供一种基于计算资源的动态任务调度方法,包括:控制模块、计算模块、etcd以及mysql数据库服务器;所述控制模块包括多个调度器,计算模块包括多个节点,每个节点包括节点监控模块与任务处理模块;

27、所述基于计算资源的动态任务调度方法包括以下步骤:

28、所述调度器根据用户提交的任务调度计算模块执行任务,所述调度器基于etcd提供的主备高可用且数据强一致的特性完成主调度器和备调度器的选举功能,从而实现调度器的高可用;在服务正常情况下,只有主调度器负责调度业务,当主调度器出现异常时,备调度器之一将立刻捕捉到异常并选举成为主调度器,继续处理业务。

29、进一步地,所述基于计算资源的动态任务调度方法还包括节点资源状态监控步骤:所述监控模块负责与调度器通信,将当前节点资源状态传送给当前调度器,主调度器将任务下发到监控模块后,监控模块负责准备任务所需要的数据并拉起任务,待任务完成后将任务执行结果回调给主调度器。

30、进一步地,所述基于计算资源的动态任务调度方法还包括任务资源需求评估步骤:针对不同任务,为达到更好的调度效果,对用户提交的任务针对敏感资源进行评估,计算所需要的资源数量,此资源数量将作为后续节点选择的重要标准。

31、进一步地,所述基于计算资源的动态任务调度方法还包括节点预选步骤:所述调度器根据任务资源需求评估模块评估后的结果,查找当前在线节点中剩余资源满足需求的节点;当节点池较大时,配合随机数确定查找起点和步长,当满足需求的节点数量达到一定数量后即可停止预选,并将预选结果传递给下一步。

32、进一步地,所述基于计算资源的动态任务调度方法还包括负载均衡步骤:所述调度器对预选出的节点进行评分,评分依赖于任务所需要的各种资源,资源与其权重的乘积作为积极参数;节点惩罚值作为消极参数,由其失败次数使用指数加权滑动平均算法计算而来,短时间内失败次数越高则惩罚值越高,否则将随任务的执行成功惩罚值逐渐降低为1。

33、同时节点当前正在执行的任务数量也作为一个消极参数参与计算,旨在均衡负载;另外为了避免在大负载下大量任务调度到同一节点下,算法在评估节点分数前,先随机选取2个节点,在选中的节点中评估分数并选择较优节点。

34、进一步地,所述负载均衡步骤采用以下函数获取权重、惩罚值和节点评分:

35、所述权重为滑动平均权重,计算公式如下(公式一):

36、w=e(last-now)/lifetime;

37、其中,e为数学常数,last为上次节点被选中的时间,now为当前时间,lifetime为自定义的时间周期,在该周期内的时间查值影响较大,它在lifetime×ln(2)后达到半衰期;

38、惩罚值计算公式如下(公式二):

39、penty=old×w+new×(1-w);

40、其中,old为上一次计算出的惩罚值,new为本次惩罚值,如果失败为1000,成功为1,w为公式一计算出的权重;

41、节点评分公式如下:

42、

43、其中,resval为资源剩余值,resweight为资源权重,inflight为当前该节点正在处理的任务数量,penty为公式二计算出的惩罚值。

44、进一步地,所述基于计算资源的动态任务调度方法还包括节点熔断检查步骤:所述调度器对节点是否可继续服务进行评估,对错误次数进行记录并决定是否将任务继续调度到该节点、减少无效的网络请求、降低调度延迟中的一种或数种;熔断算法计算公式如下:

45、

46、其中,k为容忍度,减少k使限流算法更加激进,更多流量将被拒绝,增加k使限流算法缓和,允许更多流量;accepts为当前时间窗口正常请求数量,requests为当前时间窗口所有请求数量;

47、当requests无限增大,而accepts不再增长时,f(a)无限趋近于1,触发熔断;反之当accepts增大时,由于k的作用,f(a)无限趋近于0,解除熔断。

48、进一步地,所述基于计算资源的动态任务调度方法还包括过载保护步骤:当任务由调度器提交到计算节点后,计算节点对当前系统资源与任务所需资源进行比较,当剩余资源不足以执行该任务时,触发过载保护,立即向调度器拒绝任务并做出资源不足响应;

49、避免因资源不足导致的类似oom(内存溢出)等问题。

50、进一步地,所述基于计算资源的动态任务调度方法采用以下数据传输协议:使用tcp协议构建request-response模型(请求响应模型),将protobuf数据(google protocolbuffer,结构化数据存储格式)进行包装用于双方传递。

51、本技术方案的有益效果是:

52、1.本方案自行实现了调度算法,对于不同类型的任务,可通过修改节点评分过程中的各类资源权重来完成适配;

53、2.方案中提供了完整的调度算法,包括负载均衡、熔断和过载保护,充分的考虑了调度场景下的各种问题。负载均衡能够尽可能保证各个节点间的负载在同一水平线上。熔断机制能够保证不必要的数据交互,在调度器端直接拒绝不仅减少了网络io,同时降低了调度延迟。过载保护则能够保证节点不会因为资源的缺乏导致系统出现不可预知的错误或任务执行出错。三种机制相辅相成,构成了完整的调度算法,构建出一个稳定的调度平台;

54、3.方案提供了高可用性架构,调度器基于etcd提供的raft分布式一致性协议组成了主备集群,当主调度器出现异常时,备用调度器将立即选举为主调度器继续处理;

55、4.方案摆脱了http协议,使用tcp配合protobuf编码实现了调度器和监控程序之间的高效通信,调度器对各节点状态的感知更加及时;

56、5.支持容器化部署,运维简便。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1