掌桥专利:专业的专利平台
掌桥专利
首页

一种数据中心作业调度方法、系统、存储介质及计算设备

文献发布时间:2023-06-19 11:45:49



技术领域

本发明属于数据中心能耗管理技术领域,具体涉及一种数据中心作业调度方法、系统、存储介质及计算设备。

背景技术

近年来随着计算机科学技术的发展,硬件的计算能力不断提升,而互联网业务的蓬勃发展,也使得互联网数据量呈现爆炸式增长。这些都导致了对计算资源的需求飞速提升。单机的计算能力已经不能满足需求。因此云计算应运而生。云计算是分布式计算、并行计算、虚拟化、负载均衡等传统计算机和网络技术发展融合的产物。云计算将大量的服务器通过虚拟机技术虚拟为一个个计算资源节点,用户无需关心硬件的实现和维护,只需要在云端购买计算资源,即可快速的获取自己所需的资源。而云计算的背后离不开数据中心的支撑。

数据中心是由数万台服务器,数百台网络设备,以及冷却设备、供电设备等构成。数据中心能耗十分巨大,降低数据中心典礼能耗具有重大的社会意义。同时,据统计,在数据中心长期运营成本中,电力能耗成本所占比率约为50%,降低数据中心电力能耗也有助于降低数据中心长期运营成本,具有重大的现实意义。

在数据中心中,能耗主要由四部分所消耗,包括:IT设备,冷却设备,供电设备和照明设备。其中IT设备能耗约占60%,冷却设备约占30%。供电设备和照明设备共占约10%。由此可见,IT设备能耗是数据中心能耗的主要组成部分。因此降低IT设备能耗能有效降低数据中心能耗,其具有重要意义。

降低IT设备能耗的相关研究通常可以分为硬件层面的节能和系统层面的节能,分别指使用动态电压缩放等技术节省各IT设备部件能耗和进行作业或虚拟机调度来节能。IT设备的能耗较高的原因除了本身硬件能效低之外,主要就是作业或虚拟机分配的不合理,目前的研究点主要就集中在合理分配设备资源,例如通过作业调度或虚拟机迁移技术来关闭空闲设备。

然而,目前数据中心规模不断扩大,大型数据中心中可能部署了数千台服务器。而且随着数据中心的不断发展,数据中心中新旧服务器并存,服务器的参数各不相同。因此设计一个面向能耗最小化的专家系统用于作业调度越来越难以实现。而近年来深度强化学习在复杂系统控制方面取得了突出成就。深度强化学习在围棋和电子游戏上都取得了比人类更优异的成绩。因此深度强化学习在面向能耗最小化的数据中心作业调度器设计方面有着优异的前景,也受到了学界的关注。

然而,现存的面向能耗最小化基于深度强化学习的数据中心作业调度器设计通常是把整个集群的状展平输入到神经网络中。这种方法存在以下问题:

1.不支持弹性伸缩。云计算最为关键的特性就是可扩展性。数据中心作为云计算的基础设施,也必然要支持新服务器的加入和服务器的退出。由于神经网络的特性决定了输入的维度必须是固定的。因此简单地将整个集群的信息输入神经网络显然无法支持新服务器的加入,或者说集群规模的扩大。而服务器的宕机退出虽然可以简单地把对应服务器的剩余资源设置为0来规避调度,但是显然这也增加了神经网络的学习难度。

2.维度爆炸。当数据中心规模增大时,状态空间和动作空间规模会线性增长,有维度爆炸的风险。

3.冗余信息过多。正常运行的数据中心集群应处于一个较繁忙的状态。此时大部分服务器无法承担新任务的运行。将整个集群的状态都输入网络会导致神经网络接受到很多冗余信息,增加了学习难度。

发明内容

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种数据中心作业调度方法、系统、存储介质及计算设备,解决数据中心作业调度器存在不支持弹性伸缩、维度爆炸,冗余信息过多的问题。

本发明采用以下技术方案:

一种数据中心作业调度方法,利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存;对比完成后,将保存的服务器-作业对列表输入到神经网络中计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,将任务调度到被选择的服务器-作业对中对应的服务器上执行;如果作业中所有未调度任务都已经完成调度决策,则标记为已完成,继续遍历未完成作业列表,完成作业调度。

具体的,调度器的单次调度过程具体为:

调度器判断当前时刻是否存在未完成调度的作业,如果没有,则结束;如果存在未完成的调度作业,选取最先到达的作业进行调度;

判断作业是否存在未作出调度决策的任务,如果存在,选取任务做出调度决策;

如果作业不存在未作出调度决策的任务,标记作业在当前时刻完成调度。

具体的,调度决策具体为:

调度器选取本次要调度的任务后,遍历集群中所有的服务器,对比服务器剩余资源和任务需求,判断服务器是否满足任务需求,如果满足需求,服务器特征和任务特征组成服务器-作业对machine_job_pair,将服务器-作业对加入服务器-作业对列表machine_job_pair_list中;遍历结束后,将machine_job_pair_list作为一个batch输入到神经网络中,神经网络输出一个Q_list,选择Q_list中最大值对应的machine_job_pair作为调度决策,将任务调度到machine_job_pair中对应服务器上执行。

具体的,训练调度器具体为:

使用两个结构相同的价值网络和目标网络,采用基于episode的方式在模拟器中对调度器进行训练,目标网络选择价值网络中Q值最大的动作作为自己的动作用于更新价值网络;每间隔固定的迭代次数后将价值网络的参数复制到目标网络;

在每个episode中,作业按照对应的到达时间提交到模拟器中;定义调度器的奖励函数,在每个时间步,调度器根据状态做出动作,然后根据奖励函数获得奖励,使用折扣方式更新价值函数Q(s

在每次做出调度决策时将Q值最大的服务器-作业对作为状态s

当每次有新作业到达时,调度器在每个时间步进行调度,直至不存在未完全调度的作业;调度器训练完毕。

进一步的,调度器的累计奖励函数为从当前时刻t到未来的奖励之和R(t),具体为:

其中,T为一个Epsiode的结束时刻,t为当前时刻,r(t)为调度器的奖励函数,M是集群中服务器数量,machine

进一步的,使用折扣方式更新价值函数Q(s

其中,γ是折扣系数,γ<1,r(t)为奖励函数,max

进一步的,从记忆池中采样一个batch的样本,样本表示为(s

y

其中,M为集群中服务器数量,r

本发明的另一技术方案是,一种数据中心作业调度系统,包括:

对比模块,利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存;

计算模块,神经网络根据服务器-作业对列表计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,将任务调度到被选择的服务器-作业对中对应的服务器上执行;

调度模块,如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表,完成作业调度。

本发明的另一技术方案是,一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据所述的方法中的任一方法。

本发明的另一技术方案是,一种计算设备,包括:

一个或多个处理器、存储器及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为所述一个或多个处理器执行,所述一个或多个程序包括用于执行所述的方法中的任一方法的指令。

与现有技术相比,本发明至少具有以下有益效果:

本发明一种数据中心作业调度方法,利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,通过采用先到先服务的模型,尽量在一次调度中放置更多的任务;对比完成后,将保存的服务器-作业对列表输入到神经网络中计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,使用基于深度Q网络的方法,相比传统专家系统可以更好地进行大规模复杂集群的调度,将任务调度到被选择的服务器-作业对中对应的服务器上执行;如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表,完成作业调度;使用服务器-作业对作为神经网络的输入,使得神经网络的输入向量维度不随集群规模变化,加快了算法收敛,提高了方法的性能。

进一步的,单次调度根据先到先服务调度所有集群能满足任务资源需求的任务,加快了任务放置速度。

进一步的,通过筛选服务器是否满足任务资源需求而构成服务器-作业对,避免了不满足任务资源需求的服务器也输入神经网络造成的冗余信息过多的问题。

进一步的,取价值网络和目标网络两个神经网络进行训练,能够单个网络过高估计的问题,提高算法性能进一步的,奖励函数既考虑了能耗也考虑了作业执行时间,避免了调度器不分配任务导致能耗降低却延长了作业执行时间的问题。

进一步的,采取折扣累计奖励函数进行计算,便于网络在不能遍历全部状态动作对的情况下收敛。

进一步的,奖励函数既考虑了能耗也考虑了作业执行时间,避免了调度器不分配任务导致能耗降低却延长了作业执行时间的问题。

进一步的,采取从记忆池采样的损失函数计算方式,避免了样本间相关性造成价值神经网络不易收敛的问题。

一种数据中心作业调度系统,由对比模块、计算模块和调度模块构成。模块化的设计便于对模块的修改和系统的扩展,有利于系统的实现和维护。

综上所述,本发明通过使用服务器-作业对作为神经网络的输入,解决了现存算法存在的不支持弹性伸缩、维度爆炸,冗余信息过多这三个问题,加快了算法收敛,提高了算法性能。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为调度器单次调度流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

在附图中示出了根据本发明公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。

一种数据中心作业调度方法,在每个调度时刻,调度器根据先到先服务(FirstCome First Service,FCFS)的原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存。对比完成后,将保存的服务器-作业对列表输入到神经网络中计算其Q值,选择Q值最高的服务器-作业对作为调度决策,也就是说将任务调度到被选择的服务器-作业对中对应的服务器上执行。

1.系统模型

用户将其任务打包成一个作业提交到系统中,作业Job的信息表示为Job

每个任务可以被描述为Task

假定集群中有M台服务器,整个集群的状态表示为cluster_status={machine

服务器的状态表示为machine

请参阅图1,本发明一种数据中心作业调度方法,在每次调度时,调度器根据先到先服务(First Come First Service,FCFS)的原则依次调度现存未完成作业中包含的未完成任务,以提高调度吞吐量,避免印调度因素提高任务完成时间;调度器遍历未完成作业列表,选取到达时间最早的作业,然后遍历作业中未完成的任务,对每个任务做出调度决策。如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表。

调度器的单次调度的具体步骤如下:

S1、判断当前时刻是否存在未完成调度的作业,如果没有,则结束;如果存在未完成的调度作业,选取最先到达的作业进行调度;

S2、如果没有最先到达的作业,选取任务做出调度决策,如果有最先到达的作业,判断作业是否存在未作出调度决策的任务,如果存在,选取任务做出调度决策;

S3、如果作业不存在未作出调度决策的任务,标记作业在当前时刻完成调度。

调度决策具体为:

调度器选取本次要调度的任务后,遍历集群中所有的服务器,对比服务器剩余资源和任务需求,判断服务器是否满足任务需求,即

如果满足需求就服务器特征和任务特征组成服务器-作业对machine_job_pair,具体如下:

将服务器-作业对加入服务器-作业对列表machine_job_pair_list中。

遍历结束后,将machine_job_pair_list作为一个batch输入到神经网络中,神经网络会输出一个Q_list;Q_list的长度与machine_job_pair_list相同。

由于一个batch的大小可变,由此调度器支持了服务器的弹性伸缩。在本方法下神经网络的输入特征数固定为machine_job_pair的维度,避免了信息爆炸。同时,通过遍历过程只有可供任务运行的服务器才会作为神经网络的输入,避免了冗余信息的输入。

接着,选择Q_list中最大值对应的machine_job_pair作为调度决策,即将任务调度到machine_job_pair中对应服务器上执行。

产生调度决策的伪代码如下:

训练调度器

调度器是基于深度强化学习的,因此采用基于episode的方式在模拟器中进行训练。在每个episode中,作业按照其到达时间提交到模拟器中。当每次有新作业到达时,调度器会在每个时间步都进行调度,直至不存在未完全调度的作业。

定义调度器的奖励函数为:

其中,T为一个Epsiode的结束时刻,t为当前时刻,M是集群中服务器数量,machine

因为调度器的目标是能耗最小化,因此奖励函数第一项是负的服务器平均功率。但是在真实数据中心中要保证服务质量,因此作业完成时间不能过长,因此当当前时间超出baseline算法(如First-Fit算法)的运行时间后,奖励函数会添加第二项,用于惩罚作业执行时间过长。

从奖励函数中看出,累计奖励越大,数据中心能耗越小;因此在训练中调度器的目标是最大化累积奖励,因此可以定义累计奖励函数R(t),累计奖励函数是从当前时刻t到未来的奖励之和,具体为:

在每个时间步,调度器根据状态做出动作,然后根据奖励函数获得奖励。因此为了最大化累计奖励函数,可以将状态-动作对(s

Q

由于希望最大化累计奖励函数,所以要求解最优的价值函数Q

由于调度器无法遍历所有的状态和动作,因此只能得到有限的样本用于更新价值函数,使用折扣方式更新价值函数Q(s

其中,γ是折扣系数,γ<1。

为了避免过高估计问题,在训练中使用两个结构相同的神经网络,分别叫做价值网络和目标网络。Q(s

因为本方法输入的是服务器-作业对,相当于状态中隐含了动作。因此Q(s

在训练过程中,在每次做出调度决策时都会将Q值最大的服务器-作业对作为状态s

每次更新价值网络时从记忆池中采样一个batch的样本。假设一个batch存在M个服务器,从记忆池中采样一个batch的样本,样本表示为(s

y

其中,M为集群中服务器数量,r

在一个episode中,调度器根据调度算法进行调度,在产生调度决策时∈-greedy算法进行探索和决策。每次做出决策后根据上述公式更新调度器。

整体训练算法伪代码如下

调度器训练多个episode,直至episode中累计奖励不再升高,算法收敛。

本发明再一个实施例中,提供一种数据中心作业调度系统,该系统能够用于实现上述数据中心作业调度方法,具体的,该数据中心作业调度系统包括对比模块、计算模块以及调度模块。

其中,对比模块,利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存;

计算模块,神经网络根据服务器-作业对列表计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,将任务调度到被选择的服务器-作业对中对应的服务器上执行;

调度模块,如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表,完成作业调度。。

本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于数据中心作业调度方法、系统、存储介质及计算设备的操作,包括:

利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存;对比完成后,将保存的服务器-作业对列表输入到神经网络中计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,将任务调度到被选择的服务器-作业对中对应的服务器上执行;如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表,完成作业调度。

本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。

可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关数据中心作业调度方法、系统、存储介质及计算设备的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:

利用模拟器对调度器进行训练至收敛;然后在每个调度时刻,调度器根据先到先服务原则依次遍历现存未完成作业中包含的未完成任务,将未完成任务的资源需求与集群中各服务器可提供的资源做对比,将可以接受这一任务执行的服务器的状态参数和任务的参数组成一个服务器-作业对保存;对比完成后,将保存的服务器-作业对列表输入到神经网络中计算对应的Q值,选择Q值最高的服务器-作业对作为调度决策,将任务调度到被选择的服务器-作业对中对应的服务器上执行;如果作业中所有未调度任务都已经完成调度决策,则标记该作业此次已完成,继续遍历未完成作业列表,完成作业调度。

综上所述,本发明一种数据中心作业调度方法、系统、存储介质及计算设备,通过使用服务器-作业对作为神经网络的输入,解决了现存算法存在的不支持弹性伸缩、维度爆炸,冗余信息过多这三个问题,加快了算法收敛,提高了算法性能。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

相关技术
  • 一种数据中心作业调度方法、系统、存储介质及计算设备
  • 一种计算设备性能测试方法、系统、计算设备及存储介质
技术分类

06120113047864