基于Docker容器的电力系统超算平台任务调度方法与流程

文档序号:19155002发布日期:2019-11-16 00:37阅读:442来源:国知局
基于Docker容器的电力系统超算平台任务调度方法与流程

本发明属于电力系统超算平台领域,更具体地,涉及一种基于docker容器的电力系统超算平台任务调度算法。



背景技术:

电力系统的计算量随着网络规模的增大可能呈级数被增加,传统的单物理机无法满足计算需求,因此采用并行处理的方法,在计算集群上进行计算。现今,电力系统的计算任务主要运行于分布式计算模式的超算平台。但是超算平台存在低负载高能耗的问题,这会造成巨大的浪费。

容器技术是一种替代虚拟机的轻量级方案,docker容器是资源分割和调度的基本单位,封装整个软件运行时环境,用于构建、发布和运行分布式应用的平台。与虚拟机不同的是,虚拟机是硬件虚拟化,即在物理硬件上虚拟化出一台虚拟机,需要利用hypervisor层实现,而容器技术是操作系统级别的虚拟化,可以通过软件实现。相比于虚拟机,docker容器具有启动速度快,消耗资源少,轻量级等优点,因此,细粒度、部署调度灵活的docker容器使得在电力系统超算平台中实现负载集中、减少空闲节点以降低能耗成为了可能。

docker容器提供了容器资源限制方式,容器资源限制指对cpu、内存和磁盘i/o等资源的使用限制,其中对于cpu资源限制有多种方式:第一种是设定容器cpu权重的软限制,使用该方式,宿主机通过根据容器的cpu权重动态分配cpu资源;第二种是设定容器cpu数量的硬限制,使用该方式,宿主机限制容器可使用的cpu资源不超过容器的cpu数量;第三种是设定容器可使用cpu的硬限制,使用该方式,宿主机限制容器仅能使用限定的cpu。docker容器服务中的dockerswarm集群提供了容器调度方式,将容器调度至有充足的剩余资源足以负载容器,且剩余资源最多的节点。

但是针对于电力系统超算平台,没有基于docker容器的任务调度方法,进一步也不存在根据电力系统低负载高能耗的特性对容器调度和资源配置进行优化的方法。



技术实现要素:

针对现有技术的缺陷和改进需求,本发明提供了一种基于docker容器的电力系统超算平台任务调度方法,其目的在于,在尽量不影响超算平台运行的情况下,提高资源利用率以降低能耗。

旨在解决电力系统超算平台低负载高能耗的问题。

为实现上述目的,按照本发明的第一方面,提供了一种基于docker容器的电力系统超算平台任务调度方法,包括:节点调整步骤、资源配置步骤以及容器调度步骤;

节点调整步骤包括:

(a1)以t为时间间隔,将超算平台的运行时间划分为多个调整周期;

(a2)在每一个调整周期的开始时刻,获得超算平台的历史资源使用情况,以预测超算平台在下一个调整周期的资源使用量ucluster,并确定对应的利用率阈值thr;

(a3)根据预测结果调整开启节点的数量,以使得超算平台的资源利用率维持在与利用率阈值thr相匹配的水平;

资源配置步骤包括:

(b1)在新任务taskj到达时,为其创建容器;

(b2)若任务taskj没有实时性要求,且超算平台中开启节点的数量已经经过了调整,则转入步骤(b3);否则,根据任务taskj的任务需求进行资源配置后,转入步骤(b5);

(b3)获得超算平台的历史资源使用情况,以预测超算平台在下一个调整周期的资源利用率u′;

(b4)根据预测结果和任务需求为该容器配置资源,以使得在任务需求所允许的范围内,该容器的资源配置与资源利用率u′反相关;

(b5)将配置好的容器插入到容器调度队列中;

容器调度步骤包括:依次从容器调度队列中获取待调度的容器,根据其中的任务需求以及超算平台当前的资源使用情况,将该容器部署到超算平台的节点中。

本发明所提供的基于docker容器的电力系统超算平台任务调度方法,在节点调整步骤中,通过预测未来的资源使用情况,并根据预测结果调整超算平台中开启节点的数量,使得超算平台的资源利用率维持在与利用率阈值相匹配的水平,能够在资源利用率偏低时提高资源利用率,以降低空闲资源的能耗,并在资源利用率偏高时保证服务质量;在资源配置过程中,通过预测未来的资源使用情况,并根据预测结果调整容器的资源配置,使得在任务需求允许的范围内,容器的资源配置与超算平台的资源利用率反相关,由此能够在超算平台资源利用率偏低时提高资源利用率,以降低空闲资源的能耗,并在资源利用率偏高时保证服务质量。总的来说,本发明第一方面提供的基于docker容器的电力系统超算平台任务调度方法,能够在尽量不影响超算平台运行的情况下,提高资源利用率,从而降低能耗。

进一步地,步骤(a2)包括:

(a21)以t为时间间隔,向前依次获取m个时刻超算平台的cpu资源使用情况,以计算各时刻超算平台的cpu资源使用量,从而得到长度为m的第一时间序列为:

(a22)若获取成功,说明超算平台已运行了足够长的时间,则转入步骤(a23);否则,说明超算平台处于运行的起始阶段,转入步骤(a24);

(a23)根据第一时间序列预测下一个调整周期的资源使用量ucluster,并确定下一个调整周期的利用率阈值为thr=thrhigh,预测结束;

(a24)预测下一个调整周期的资源使用量ucluster为超算平台当前的cpu资源使用量,并确定下一个调整周期的利用率阈值为thr=thrlow,预测结束;

其中,tnow表示当前时刻,表示在t时刻超算平台的cpu资源使用量,thrlow和thrhigh表示预设的阈值,0<thrlow<thrhigh<1,m∈n+;

由于在超算平台运行的起始阶段,没有足够的历史数据用于预测,此时直接将超算平台当前的cpu资源使用量作为预测值,预测结果的准确性较低,确定的利用率阈值较低(thrlow<thrhigh),可以避免后续根据预测结果对开启节点的数量进行调整时,对系统造成过大的影响。

进一步地,步骤(a3)包括:

(a31)根据预测的资源使用量ucluster预测相应的资源利用率为

(a32)若u>thr,则转入步骤(a33);否则,转入步骤(a35);

(a33)开启cpu资源总量最多的一个关闭节点,以增加开启节点的数量,并将资源利用率u更新为在增加开启节点数量时,优先开启cpu资源总量最多的节点,从而增加较少的开启节点,即可达到平衡资源利用率的目的,提高效率;

(a34)若u≤thr,则停止增加开启节点的数量,操作结束;否则,转入步骤(a33),以继续增加开启节点的数量;

(a35)关闭cpu资源使用量最少的一个开启节点,以减少开启节点的数量;在减少开启节点的数量时,优先关闭cpu资源使用量最少的一个开启节点,能够在关闭开启节点时,尽量减小对超算平台的影响,从而保证较高的服务质量;

(a36)获得剩余开启节点中cpu资源使用量最少的节点nlater及其cpu资源总量rcpulater后,将资源利用率u更新为:

(a37)若u>thr,则停止减少开启节点的数量,操作结束;否则,转入步骤(a35),以继续减少开启节点的数量;

其中,nbegin表示调整开启节点数量之前开启节点的总数,ninc表示增加的开启节点数量,ndec表示减少的开启节点数量,i表示开启节点的序号,rcpui表示第i个开启节点的cpu资源总量;

本发明所提供的基于docker容器的电力系统超算平台认为调度方法,对开启节点的数量进行调整时,若预测的资源利用率偏低,则减少开启节点的数量,由此能够提高资源利用率,降低能耗;若预测的资源偏高,则增加开启节点的数量,由此能够保证超算平台的服务质量。本发明具体在调整开启节点的数量时,逐渐减少/增减开启节点的数量,直至超算平台的资源利用率在不超过利用率阈值的情况下最接近利用率阈值,即超算平台的资源利用率达到与利用率阈值相匹配的水平,从而在尽量不影响平台运行的情况下降低能耗。

进一步地,步骤(b3)包括:

(b31)将各调整周期分别等分为n个子区间;

(b32)获得当前时刻所在的调整周期,以及在该时间段内的子区间序号p,并确定下一个调整周期内的利用率阈值thr′;

(b33)若p=1或p=n,则预测下一个调整周期的资源利用率为u′=thr′,预测结束;否则,转入步骤(b34);

(b34)以为t/n时间间隔,向前依次获取n+p-1个时刻超算平台的cpu资源使用情况,以计算各时刻超算平台的cpu资源使用量,从而得到长度为n+p-1的第二时间序列为:

(b35)根据第二时间序列预测下一个调整周期的资源使用量ucluster′,以预测下一个调整周期的资源利用率为:

其中,tnow表示当前时刻,表示在t时刻超算平台的cpu资源使用量,nnow表示当前时刻开启节点的总数,i表示开启节点的序号,rcpui表示第i个开启节点的cpu资源总量;

本发明所提供的基于docker容器的电力系统超算平台认为调度方法,在资源配置步骤中,随着时间推移,有新的历史数据产生,通过包含新的历史数据的时间序列进行预测,获得的预测值更加准确;通过对调整周期进行划分,实现多次预测调整,实现精准预测的目的;第一个子区间内由于刚调整过开启节点数量,因此不需要进行调整配置,最后一个子区间内由于即将调整开启节点数量,保持集群的利用率,也不需要调整配置;预测使用的时间序列数量为n+p-1,由此能够动态调整以除去过早数据产生的不利影响。

进一步地,步骤(b4)包括:

(b41)确定下一个调整周期的利用率阈值thr′,并根据预测的资源利用率u′与利用率阈值thr′的差值计算资源配置的增量因子为:

(b42)若u′≤thr′,则按照增量因子α增加cpu资源的配置,相应的cpu资源配置量为否则,按照增量因子α减少cpu资源的配置,相应的cpu资源配置量为

(b43)根据任务需求确定最终的cpu资源配置量为:

(b44)按照cpu资源配置量和任务taskj所请求的内存资源量rmemj对容器进行资源配置;

其中,j表示任务序号,和rmemj分别表示任务taskj所需的最少cpu资源量、所请求的cpu资源量、最多能使用的cpu资源量以及所请求的内存资源量;η为预设的增量系数,0<η<1;表示向下取整;

本发明所提供的基于docker容器的电力系统超算平台任务调度方法,根据预测结果对容器进行资源配置时,若预测的资源利用率偏低,则在任务需求允许的范围内增加资源配置,由此能够保证较高的资源利用率,降低能耗;若预测的资源利用率偏高,则在任务需求允许范围内减少资源配置,由此能够保证超算平台的服务质量;因此,本发明能够在尽量不影响平台运行的情况下降低能耗。

进一步地,容器调度步骤中,对于从容器调度队列中获取到的任意一个容器d,根据容器d中的任务需求以及超算平台当前的资源使用情况,将容器d部署到超算平台的节点中,包括:

(c1)将超算平台中所有的开启节点划分为有迁移集群和无迁移集群;

(c2)若容器d内的任务有实时性要求,且该任务的资源需求量随时间动态变化,则转入步骤(c3);否则,转入步骤(c4);

(c3)对于有迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的负载均衡指标以计算该节点的负载均衡差值为若负载均衡程度与负载均衡指标正相关,则将负载均衡差值最大的节点作为目标节点;否则,将负载均衡差值最小的节点作为目标节点;确定目标节点后转入步骤(c7);

(c4)若cpu资源为超算平台的性能瓶颈,则转入步骤(c5);否则,转入步骤(c6);

(c5)对于无迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的能耗指标以计算该节点的能耗指标差值为若能耗与能耗指标正相关,则将能耗指标差值最小的节点作为目标节点;否则,将能耗指标差值最大的节点作为目标节点;确定目标节点后转入步骤(c7);

(c6)对于无迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的资源均衡指标以计算该节点的资源均衡指标差值为若资源的使用均衡程度与资源均衡指标正相关,则将资源均衡指标差值最大的节点作为目标节点;否则,将资源均衡指标差值最小的节点作为目标节点;确定目标节点后,转入步骤(c7);

(c7)将容器d调度至目标节点;

其中,负载均衡指标用于衡量节点资源利用率与集群整体的资源利用率之间的相差程度,资源均衡指标用于衡量节点不同资源的资源利用率达到平衡的程度;

本发明所提供的基于docker容器的电力系统超算平台认为调度方法,在进行容器调度时,会结合任务需求和超算平台当前的资源使用情况确定具体的调度策略,对于有实时性要求,且资源需求量随时间动态变化的任务,则在有迁移集群中选择有利于负载均衡的节点作为容器调度的目标节点;对于其他的任务,则在cpu资源为超算平台的性能瓶颈时,在无迁移集群中选择有利于减小对超算品台能耗影响的节点作为容器调度的目标节点;在cpu资源不是超算平台的性能瓶颈时,在无迁移集群中选择有利于资源均衡的节点作为容器调度的目标节点;因此,本发明能够实现不同资源均衡负载以提升资源利用率或实现节点负载均衡以保证服务质量,从而在尽量不影响平台运行的情况下降低能耗。

进一步地,本发明第一方面所提供的基于docker容器的电力系统超算平台认为调度方法,还包括容器迁移步骤;

容器迁移步骤包括:

(d1)以t′为时间间隔,将超算平台的运行时间划分为多个迁移周期;

(d2)在每一个迁移周期的开始时刻,获得有迁移集群内各节点的历史资源使用情况,以预测有迁移集群内各节点在下一个迁移周期的资源利用率和资源预留率;

(d3)对于有迁移集群内的任意一个节点node,计算所预测的资源利用率u″和资源预留率之和为若sava>1,则预测节点node为过载节点,并转入步骤(d4);若sava<thrava,则预测节点node为轻载节点,并转入步骤(d5);若thrava≤sava≤1,则不进行容器迁移,转入步骤(d6);

(d4)获得节点node内与其相关性最高的容器,并将该容器迁移至容器调度队列中,以减轻节点node的负载,转入步骤(d6);

(d5)将节点node内所有的容器均迁移至容器调度队列中后,关闭节点node,以提高资源利用率,转入步骤(d6);

(d6)针对节点node的容器迁移操作结束;

其中,thrava为预设的阈值,thrava<1,资源预留率表示预留出的资源所占的比例;

本发明所提供的基于docker容器的电力系统超算平台任务调度方法,通过容器迁移步骤能够识别出有迁移集群中的轻载节点和过载节点,对于轻载节点,将其中的容器均迁移出,以关闭该节点,由此能够提高超算平台的资源利用率,减小空闲资源的能耗;对于过载节点,将与该节点相关性最大的容器(即对该节点影响最大的容器)迁移出,由此能够减小过载节点的资源利用率,保证超算平台的服务质量;因此,本发明能够在尽量不影响平台运行的情况下降低能耗。

进一步地,步骤(d2)中,对于有迁移集群内的任意一个节点node,获得节点node的历史资源使用情况,以预测节点node在下一个迁移周期的资源利用率和资源预留率,包括:

(d21)以t′为时间间隔,向前依次获取节点node在各时刻的cpu资源利用率,从而得到第三时间序列为:

(d22)若第三时间序列的长度小于m',则转入步骤(d23);否则,转入步骤(d24);

(d23)计算第三时间序列的绝对中位差,作为节点node在下一个迁移周期的资源预留率并预测节点node在下一个迁移周期的cpu资源利用率u″为节点node当前的cpu资源利用率,预测结束;

(d24)以t′为时间间隔,向前依次获取m′个时刻节点node的cpu资源利用率,从而得到长度为m′的第四时间序列为:

(d25)计算第四时间序列的绝对中位差,作为节点node在下一个迁移周期的资源预留率,并根据第四时间序列预测下一个迁移周期的cpu资源利用率u″,预测结束;

其中,tbegin表示有资源使用情况记录的最早时刻,tnow表示当前时刻,表示对应时刻节点node的cpu资源利用率,m′∈n+。

进一步地,本发明第一方面提供的基于docker容器的电力系统超算平台任务调度方法,根据时间序列进行预测的具体方式为:利用ar模型进行预测,由此能够保证较好的预测效果。

按照本发明的第二方面,提供了一种系统,包括处理器和计算机可读存储介质,计算机可读存储介质用于存储可执行程序;

处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的基于docker容器的电力系统超算平台任务调度方法。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明所提供的基于docker容器的电力系统超算平台任务调度方法,在节点调整步骤中,通过预测未来的资源使用情况,并根据预测结果调整超算平台中开启节点的数量,使得超算平台的资源利用率维持在与利用率阈值相匹配的水平,能够在资源利用率偏低时提高资源利用率,以降低空闲资源的能耗,并在资源利用率偏高时保证服务质量;在资源配置过程中,通过预测未来的资源使用情况,并根据预测结果调整容器的资源配置,使得在任务需求允许的范围内,容器的资源配置与超算平台的资源利用率反相关,由此能够在超算平台资源利用率偏低时提高资源利用率,以降低空闲资源的能耗,并在资源利用率偏高时保证服务质量。总的来说,本发明能够在尽量不影响超算平台运行的情况下,提高资源利用率,从而降低能耗。

(2)本发明所提供的基于docker容器的电力系统超算平台任务调度方法,在进行容器调度时,会结合任务需求和超算平台当前的资源使用情况确定具体的调度策略,对于有实时性要求,且资源需求量随时间动态变化的任务,则在有迁移集群中选择有利于负载均衡的节点作为容器调度的目标节点;对于其他的任务,则在cpu资源为超算平台的性能瓶颈时,在无迁移集群中选择有利于减小对超算品台能耗影响的节点作为容器调度的目标节点;在cpu资源不是超算平台的性能瓶颈时,在无迁移集群中选择有利于资源均衡的节点作为容器调度的目标节点;因此,本发明能够实现不同资源均衡负载以提升资源利用率或实现节点负载均衡以保证服务质量,从而在尽量不影响平台运行的情况下降低能耗。

(3)本发明所提供的基于docker容器的电力系统超算平台任务调度方法,通过容器迁移步骤能够识别出有迁移集群中的轻载节点和过载节点,对于轻载节点,将其中的容器均迁移出,以关闭该节点,由此能够提高超算平台的资源利用率,减小空闲资源的能耗;对于过载节点,将与该节点相关性最大的容器(即对该节点影响最大的容器)迁移出,由此能够减小过载节点的资源利用率,保证超算平台的服务质量;因此,本发明能够在尽量不影响平台运行的情况下降低能耗。

(4)本发明所提供的基于docker容器的电力系统超算平台任务调度方法,在其优选方案中,利用ar模型进行预测,由此能够保证较好的预测效果。

附图说明

图1为本发明实施例提供的基于docker容器的电力系统超算平台任务调度方法示意图;

图2为本发明实施例提供的节点调整步骤流程图;

图3为本发明实施例提供的资源配置步骤流程图;

图4为本发明实施例提供的容器调度步骤流程图;

图5为本发明实施例提供的容器迁移步骤流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

为了解决现有的电力系统超算平台低负载高能耗的问题,本发明提供了一种基于docker容器的电力系统超算平台任务调度方法,如图1所示,包括:节点调整步骤、资源配置步骤以及容器调度步骤;

如图2所示,节点调整步骤具体包括:

(a1)以t为时间间隔,将超算平台的运行时间划分为多个调整周期;

时间间隔t具体可根据负载特性、系统能耗需求等相应设定,例如,若负载的资源随时间变化幅度较大,则相应地可将时间间隔t设置较小,以使得超算平台的资源利用率维持平衡;在本实施例中,具体设置t=1h;

(a2)在每一个调整周期的开始时刻,获得超算平台的历史资源使用情况,以预测超算平台在下一个调整周期的资源使用量ucluster,并确定对应的利用率阈值thr;

在一个可选的实施方式中,步骤(a2)具体包括:

(a21)以t为时间间隔,向前依次获取m个时刻超算平台的cpu资源使用情况,以计算各时刻超算平台的cpu资源使用量,从而得到长度为m的第一时间序列为:

(a22)若获取成功,说明超算平台已运行了足够长的时间,则转入步骤(a23);否则,说明超算平台处于运行的起始阶段,转入步骤(a24);

(a23)根据第一时间序列预测下一个调整周期的资源使用量ucluster,并确定下一个调整周期的利用率阈值为thr=thrhigh,预测结束;

(a24)预测下一个调整周期的资源使用量ucluster为超算平台当前的cpu资源使用量,并确定下一个调整周期的利用率阈值为thr=thrlow,预测结束;

其中,tnow表示当前时刻,表示在t时刻超算平台的cpu资源使用量,thrlow和thrhigh表示预设的阈值,0<thrlow<thrhigh<1,m∈n+;

由于在超算平台运行的起始阶段,没有足够的历史数据用于预测,此时直接将超算平台当前的cpu资源使用量作为预测值,预测结果的准确性较低,确定的利用率阈值较低(thrlow<thrhigh),可以避免后续根据预测结果对开启节点的数量进行调整时,对系统造成过大的影响;

为了获得较好的预测效果,在本发明实施例中,m=10,thrlow=0.8,thrhigh=0.9;应当理解的是,此处的设定仅为一个示例性的说明,不应理解为对本发明的唯一限定;

(a3)根据预测结果调整开启节点的数量,以使得超算平台的资源利用率维持在与利用率阈值thr相匹配的水平;

在一个可选的实施方式中,步骤(a3)具体包括:

(a31)根据预测的资源使用量ucluster预测相应的资源利用率为

(a32)若u>thr,则转入步骤(a33);否则,转入步骤(a35);

(a33)开启cpu资源总量最多的一个关闭节点,以增加开启节点的数量,并将资源利用率u更新为在增加开启节点数量时,优先开启cpu资源总量最多的节点,从而增加较少的开启节点,即可达到平衡资源利用率的目的,提高效率;

(a34)若u≤thr,则停止增加开启节点的数量,操作结束;否则,转入步骤(a33),以继续增加开启节点的数量;

(a35)关闭cpu资源使用量最少的一个开启节点,以减少开启节点的数量;在减少开启节点的数量时,优先关闭cpu资源使用量最少的一个开启节点,能够在关闭开启节点时,尽量减小对超算平台的影响,从而保证较高的服务质量;

(a36)获得剩余开启节点中cpu资源使用量最少的节点nlater及其cpu资源总量rcpulater后,将资源利用率u更新为:

(a37)若u>thr,则停止减少开启节点的数量,操作结束;否则,转入步骤(a35),以继续减少开启节点的数量;

其中,nbegin表示调整开启节点数量之前开启节点的总数,ninc表示增加的开启节点数量,ndec表示减少的开启节点数量,i表示开启节点的序号,rcpui表示第i个开启节点的cpu资源总量;

对开启节点的数量进行调整时,若预测的资源利用率偏低,则减少开启节点的数量,由此能够提高资源利用率,降低能耗;若预测的资源偏高,则增加开启节点的数量,由此能够保证超算平台的服务质量;具体来说,在调整开启节点的数量时,逐渐减少/增减开启节点的数量,直至超算平台的资源利用率在不超过利用率阈值的情况下最节点利用率阈值,即超算平台的资源利用率达到与利用率阈值相匹配的水平,从而在尽量不影响平台运行的情况下降低能耗;

如图3所示,资源配置步骤包括:

(b1)在新任务taskj到达时,为其创建容器;

j表示任务序号,可将任务taskj描述为:

其中,和rmemj分别表示任务taskj所需的最少cpu资源量、所请求的cpu资源量、最多能使用的cpu资源量以及所请求的内存资源量;

(b2)若任务taskj没有实时性要求,且超算平台中开启节点的数量已经经过了调整,则转入步骤(b3);否则,根据任务taskj的任务需求进行资源配置,即按照和rmemj为该容器进行cpu资源和内存资源的配置,之后转入步骤(b5);

(b3)获得超算平台的历史资源使用情况,以预测超算平台在下一个调整周期的资源利用率u′;

在一个可选的实施方式中,步骤(b3)具体包括:

(b31)将各调整周期分别等分为n个子区间;

在本发明中,n=12,经过划分之后,各子区间的长度为5min;应当理解的是,此处的设定仅为一个示例性的说明,不应理解为对本发明的唯一限定;

(b32)获得当前时刻所在的调整周期,以及在该时间段内的子区间序号p,并确定下一个调整周期内的利用率阈值thr′;

(b33)若p=1或p=n,则预测下一个调整周期的资源利用率为u′=thr′,即预测资源利用率u′既不偏高,也不偏低,后续需要根据和rmemj进行资源配置,预测结束;否则,转入步骤(b34);

(b34)以为t/n时间间隔,向前依次获取n+p-1个时刻超算平台的cpu资源使用情况,以计算各时刻超算平台的cpu资源使用量,从而得到长度为n+p-1的第二时间序列为:

(b35)根据第二时间序列预测下一个调整周期的资源使用量ucluster′,以预测下一个调整周期的资源利用率为:

其中,tnow表示当前时刻,表示在t时刻超算平台的cpu资源使用量,nnow表示当前时刻开启节点的总数,i表示开启节点的序号,rcpui表示第i个开启节点的cpu资源总量;

在资源配置步骤中,随着时间推移,有新的历史数据产生,通过包含新的历史数据的时间序列进行预测,获得的预测值更加准确;通过对调整周期进行划分,实现多次预测调整,实现精准预测的目的;第一个子区间内由于刚调整过开启节点数量,因此不需要进行调整配置,最后一个子区间内由于即将调整开启节点数量,保持集群的利用率,也不需要调整配置;预测使用的时间序列数量为n+p-1,由此能够动态调整以除去过早数据产生的不利影响;

(b4)根据预测结果和任务需求为该容器配置资源,以使得在任务需求所允许的范围内,该容器的资源配置与资源利用率u′反相关;

在一个可选的实施方式中,步骤(b4)具体包括:

(b41)确定下一个调整周期的利用率阈值thr′,并根据预测的资源利用率u′与利用率阈值thr′的差值计算资源配置的增量因子为:

资源利用率u′与利用率阈值thr′的差值越大,增量因子α越大,反之,增量因子α越小;当资源利用率u′与利用率阈值thr′相等时,增量因子α为0;

(b42)若u′≤thr′,即资源利用率偏低,则按照增量因子α增加cpu资源的配置,相应的cpu资源配置量为否则,即资源利用率偏高,按照增量因子α减少cpu资源的配置,相应的cpu资源配置量为

(b43)根据任务需求确定最终的cpu资源配置量为:

通过调整,能够保证最终的cpu资源配置量在任务需求允许的范围内;

(b44)按照cpu资源配置量和任务taskj所请求的内存资源量rmemj对容器进行资源配置;

其中,η为预设的增量系数,0<η<1;表示向下取整;在本实施例中中,η=0.1;此处的设定仅为一个示例性的说明,不应理解为对本发明的唯一限定;

根据预测结果对容器进行资源配置时,若预测的资源利用率偏低,则在任务需求允许的范围内增加资源配置,由此能够保证较高的资源利用率,降低能耗;若预测的资源利用率偏高,则在任务需求允许范围内减少资源配置,由此能够保证超算平台的服务质量;因此,本发明能够在尽量不影响平台运行的情况下降低能耗;

(b5)将配置好的容器插入到容器调度队列中;

如图4所示,容器调度步骤包括:依次从容器调度队列中获取待调度的容器,根据其中的任务需求以及超算平台当前的资源使用情况,将该容器部署到超算平台的节点中;

在一个可选的实施方式中,容器调度步骤中,对于从容器调度队列中获取到的任意一个容器d,根据容器d中的任务需求以及超算平台当前的资源使用情况,将容器d部署到超算平台的节点中,具体包括:

(c1)将超算平台中所有的开启节点划分为有迁移集群和无迁移集群;

有迁移集群用于负载具有实时性要求且需求资源发生变化的任务的容器,无迁移集群用于负载其他任务的容器;

(c2)若容器d内的任务有实时性要求,且该任务的资源需求量随时间动态变化,则转入步骤(c3);否则,转入步骤(c4);

(c3)对于有迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的负载均衡指标以计算该节点的负载均衡差值为若负载均衡程度与负载均衡指标的值正相关,则将负载均衡差值最大的节点作为目标节点;否则,将负载均衡差值最小的节点作为目标节点;确定目标节点后转入步骤(c7);

负载均衡指标用于衡量节点资源利用率与集群整体的资源利用率之间的相差程度;

可选地,可根据计算节点的负载均衡指标;其中,i表示开启节点的序号,分别表示该节点的cpu资源利用率、内存资源利用率和带宽资源利用率,分别表示有迁移集群cpu资源利用率、存资源利用率和宽资源利用率;

由于采用这种方式计算节点的负载均衡指标时,负载均衡程度与负载均衡指标的值反相关,相应地,将负载均衡指标差值最小的节点作为目标节点;

(c4)若cpu资源为超算平台的性能瓶颈,则转入步骤(c5);否则,转入步骤(c6);

可选地,可根据无迁移集群中各资源利用率的相差程度判定当前cpu资源是否为超算平台的性能瓶颈,例如,当cpu资源利用率远高于(相差两倍或其他)其他资源的利用率时,则可判定cpu资源为超算平台的性能瓶颈;

(c5)对于无迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的能耗指标以计算该节点的能耗指标差值为若能耗与能耗指标正相关,则将能耗指标差值小的节点作为目标节点;否则,将能耗指标差值最大的节点作为目标节点;确定目标节点后转入步骤(c7);

可选地,可根据计算节点的能耗指标;其中,分别表示该节点的cpu资源利用率和内存资源利用率,c和m为阶数,通常情况下,c=m=3,a0~ac、b0~bm表示回归系数;

由于采用这种方式计算节点的能耗指标时,能耗与能耗指标的值正相关,相应地,将能耗指标差值最小的节点作为目标节点;

(c6)对于无迁移集群中的每一个能够负载容器d的节点,分别计算将容器d调度至该节点前、后该节点的资源均衡指标以计算该节点的资源均衡指标差值为若资源的使用均衡程度与资源均衡指标正相关,则将资源均衡指标差值最大的节点作为目标节点;否则,将资源均衡指标差值最小的节点作为目标节点;确定目标节点后,转入步骤(c7);

资源均衡指标用于衡量节点不同资源的资源利用率达到平衡的程度;

可选地,可根据计算节点的资源均衡指标;其中,分别表示该节点的cpu资源利用率、内存资源利用率和带宽资源利用率,分别表示无迁移集群cpu资源利用率、存资源利用率和宽资源利用率;

由于采用这种方式计算节点的资源均衡指标时,资源的使用均衡程度与资源均衡指标正相关,相应地,将资源均衡指标差值最大的节点作为目标节点;

(c7)将容器d调度至目标节点;

应当理解的是,上述负载均衡指标、能耗及资源均衡指标的计算方式仅为示例性的说明,不应理解为对本发明的唯一限定,其他用于计算负载均衡指标、能耗及资源均衡方法的方式,同样适用于本发明;

在进行容器调度时,结合任务需求和超算平台当前的资源使用情况确定具体的调度策略,对于有实时性要求,且资源需求量随时间动态变化的任务,则在有迁移集群中选择有利于负载均衡的节点作为容器调度的目标节点;对于其他的任务,则在cpu资源为超算平台的性能瓶颈时,在无迁移集群中选择有利于减小对超算品台能耗影响的节点作为容器调度的目标节点;在cpu资源不是超算平台的性能瓶颈时,在无迁移集群中选择有利于资源均衡的节点作为容器调度的目标节点;因此,本发明能够实现不同资源均衡负载以提升资源利用率或实现节点负载均衡以保证服务质量,从而在尽量不影响平台运行的情况下降低能耗。

为了实现进一步优化,可选地,上述基于docker容器的电力系统超算平台认为调度方法,还可包括容器迁移步骤;

如图5所示,容器迁移步骤包括:

(d1)以t′为时间间隔,将超算平台的运行时间划分为多个迁移周期;

在本实施例中,t′=5min;

(d2)在每一个迁移周期的开始时刻,获得有迁移集群内各节点的历史资源使用情况,以预测有迁移集群内各节点在下一个迁移周期的资源利用率和资源预留率;

在一个可选的实施方式中,步骤(d2)中,对于有迁移集群内的任意一个节点node,获得节点node的历史资源使用情况,以预测节点node在下一个迁移周期的资源利用率和资源预留率,具体包括:

(d21)以t′为时间间隔,向前依次获取节点node在各时刻的cpu资源利用率,从而得到第三时间序列为:

其中,tbegin表示有资源使用情况记录的最早时刻,tnow表示当前时刻,表示对应时刻节点node的cpu资源利用率;

(d22)若第三时间序列的长度小于m',即超算平台处于运行的起始阶段,则转入步骤(d23);否则,即超算平台已运行了足够的时间,转入步骤(d24);

其中,m′∈n+;在本实施例中,m'=12;

(d23)计算第三时间序列的绝对中位差,作为节点node在下一个迁移周期的资源预留率并预测节点node在下一个迁移周期的cpu资源利用率u″为节点node当前的cpu资源利用率,预测结束;

具体地,计算第三时间序列的绝对中位差时,先取的第三时间序列中位数为:

然后计算绝对中位数为:

其中,median{}表示取序列的中位数,a为预设的系数,在本实施例中,此处a=1.5;

(d24)以t′为时间间隔,向前依次获取m′个时刻节点node的cpu资源利用率,从而得到长度为m′的第四时间序列为:

(d25)计算第四时间序列的绝对中位差,作为节点node在下一个迁移周期的资源预留率并根据第四时间序列预测下一个迁移周期的cpu资源利用率u″,预测结束;

在步骤(d25)中,第四时间序列的绝对中位差的具体计算方式,可参考上述步骤(d23)的描述,所不同之处在于,此处a=1;

(d3)对于有迁移集群内的任意一个节点node,计算所预测的资源利用率u″和资源预留率之和为若sava>1,则预测节点node为过载节点,并转入步骤(d4);若sava<thrava,则预测节点node为轻载节点,并转入步骤(d5);若thrava≤sava≤1,则不进行容器迁移,转入步骤(d6);

(d4)获得节点node内与其相关性最高的容器,并将该容器迁移至容器调度队列中,以减轻节点node的负载,转入步骤(d6);

具体可通过计算相关系数来获得节点与容器之间的相关性,相关系数的具体计算表达式如下:

其中,表示节点和容器的相关系数,表示节点的平均cpu资源利用率,表示对应时刻容器的cpu资源利用率,表示容器的平均cpu资源利用率;

(d5)将节点node内所有的容器均迁移至容器调度队列中后,关闭节点node,以提高资源利用率,转入步骤(d6);

(d6)针对节点node的容器迁移操作结束;

其中,thrava为预设的阈值,thrava<1,资源预留率表示预留出的资源所占的比例;在本实施例中,thrava=0.5;

本发明所提供的基于docker容器的电力系统超算平台任务调度方法,通过容器迁移步骤能够识别出有迁移集群中的轻载节点和过载节点,对于轻载节点,将其中的容器均迁移出,以关闭该节点,由此能够提高超算平台的资源利用率,减小空闲资源的能耗;对于过载节点,将与该节点相关性最大的容器(即对该节点影响最大的容器)迁移出,由此能够减小过载节点的资源利用率,保证超算平台的服务质量;因此,本发明能够在尽量不影响平台运行的情况下降低能耗。

作为一种优选的实施方式,上述基于docker容器的电力系统超算平台任务调度方法,根据时间序列进行预测的具体方式为:利用ar模型进行预测,由此能够保证较好的预测效果;

ar模型可描述为predict(x,k),用于根据一个时间序列预测一段时间之后的参数取值,ar模型的具体计算过程如下:

x={xk|k=1,2,3,...,s}

r=[r1r2…ry]t

w=[w1w2…wy]t=r-1*r

xs+k=predict(x,k)=[xkxk+1…xs+k-1]*w(k=1,2,3...)

其中,x表示输入的时间序列,x中任意相邻两个值之间的时间间隔均为tinterval,varx、ri、r、r和w均为计算过程中间值;利用ar模型进行预测时,ar模型会根据输入的时间序列x,预测经过ktinterval之后的值。

本发明还提供了一种系统,包括处理器和计算机可读存储介质,计算机可读存储介质用于存储可执行程序;

处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于docker容器的电力系统超算平台任务调度方法。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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