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

资源的调度方法及装置

文献发布时间:2023-06-19 18:37:28


资源的调度方法及装置

技术领域

本公开涉及信息技术领域,尤其是一种资源的调度方法及装置。

背景技术

为保证容器在高质量地提供服务的同时提高容器对资源的利用效率,负责管理容器的容器管理平台(例如Kubernetes)需要具有对资源进行管理和调度的能力。

相关技术中,在为虚拟机分配资源时,容器管理平台一般依据虚拟机上各个容器的负载极限值。该负载极限值通常是由工作人员基于应用场景,根据经验进行预测得到的静态值。容器管理平台依据该负载极限值为虚拟机分配定量的资源。

发明内容

发明人注意到,相关技术中对容器的预测完全依靠工作人员的经验,预测的负载极限值可能与实际情况存在较大偏差,从而导致在为虚拟机分配资源时出现问题。当预测的负载极限值过低时,为虚拟机分配的资源较少,容器负载较高会影响服务质量甚至造成服务故障;当预测的极限值过高时,为虚拟机分配的资源较多,但容器负载较低会造成资源浪费。并且,依据容器的负载极限值为虚拟机分配的资源是定量的,无法灵活进行调整。

为了解决上述问题,本公开实施例提出了如下解决方案。

根据本公开实施例的一方面,提供一种资源的调度方法,包括:获取虚拟机的具有预定类型的资源在当前时刻的剩余值;基于负载预测模型预测当前时刻之后的第一时段内所述虚拟机上每个容器的所述资源的负载峰值;根据每个容器的负载峰值和所述虚拟机的所述资源的剩余值,确定是否调度所述虚拟机的所述资源;在确定需要调度所述虚拟机的所述资源的情况下,调度所述虚拟机的所述资源。

在一些实施例中,所述根据每个容器的负载峰值和所述虚拟机的所述资源的剩余值,确定是否需要调度所述虚拟机的所述资源包括:在每个容器的负载峰值的和大于所述虚拟机的所述资源的剩余值的情况下,确定需要调度所述虚拟机的所述资源;在每个容器的负载峰值的和小于等于所述虚拟机的所述资源的剩余值的情况下,确定不需要调度所述虚拟机的所述资源。

在一些实施例中,所述在确定需要调度所述虚拟机的所述资源的情况下,调度所述虚拟机的所述资源包括:根据每个容器的负载峰值和所述虚拟机所处主机的所述资源在当前时刻的剩余值调度所述虚拟机的所述资源。

在一些实施例中,所述根据每个容器的负载峰值和所述虚拟机所处主机的所述资源在当前时刻的剩余值调度所述虚拟机的所述资源包括:在每个容器的负载峰值的和小于等于所述主机的所述资源的剩余值的情况下,利用所述主机的所述资源为所述虚拟机扩容以增加所述虚拟机的所述资源,其中,所述虚拟机所增加的所述资源大于或等于每个容器的负载峰值的和。

在一些实施例中,所述根据每个容器的负载峰值和所述虚拟机所处主机的所述资源在当前时刻的剩余值调度所述虚拟机的所述资源包括:在每个容器的负载峰值的和大于所述主机的所述资源的剩余值的情况下,执行第一迁移和第二迁移中的一个,其中:所述第一迁移为将所述虚拟机迁移至其他主机,其中,所述其他主机的所述资源在当前时刻的剩余值大于等于每个容器的负载峰值的和,所述第二迁移为将所述虚拟机上的至少一个容器迁移至其他虚拟机,其中,所述虚拟机的所述资源在所述至少一个容器迁移后的剩余值大于等于所述虚拟机上除所述至少一个容器外其他容器的负载峰值的和,所述其他虚拟机的所述资源在当前时刻的剩余值大于等于所述至少一个容器的负载峰值的和。

在一些实施例中,所述方法还包括:在所述虚拟机的总负载小于第一阈值的情况下,执行所述第一迁移;在所述虚拟机的总负载大于第二阈值的情况下,执行所述第二迁移,其中,所述第一阈值小于所述第二阈值。

在一些实施例中,所述方法还包括:在所述虚拟机的总负载大于等于所述第一阈值且小于等于所述第二阈值的情况下,调整所述第一阈值和所述第二阈值中的至少一个,以使所述虚拟机的总负载小于调整后的第一阈值或者大于调整后的第二阈值。

在一些实施例中,所述负载预测模型通过以下步骤训练得到:获取训练数据,其中,所述训练数据包括初始训练数据,所述初始训练数据包括在第二时段内多个采集时刻采集所述虚拟机上每个容器的所述资源的负载,其中,所述第二时段为包含所述当前时刻和所述第一时段的历史时段;利用所述训练数据训练所述负载预测模型。

在一些实施例中,利用所述训练数据训练所述负载预测模型包括:对所述初始训练数据进行处理以得到清洗后训练数据;利用所述清洗后训练数据训练所述负载预测模型;其中,所述清洗后训练数据由所述初始训练数据经下述处理方式中的至少一项进行处理后得到:删除采集时刻不符合预设时间间隔的负载;删除大小不在预设负载区间中的负载;在任意一个采集时刻采集到多个负载的情况下,将所述多个负载的平均值作为所述任意一个采集时刻对应的负载;在任意一个采集时刻未采集到负载的情况下,利用与所述任意一个采集时刻相邻的采集时刻采集到的负载的平均值作为所述任意一个采集时刻对应的负载。

在一些实施例中,所述预定类型的资源包括CPU资源、内存资源和磁盘资源中的一种。

根据本公开实施例的另一方面,提供一种资源的调度装置,包括:获取模块,被配置为获取虚拟机的具有预定类型的资源在当前时刻的剩余值;预测模块,被配置为基于负载预测模型预测当前时刻之后的第一时段内所述虚拟机上每个容器的所述资源的负载峰值;确定模块,被配置为根据每个容器的负载峰值和所述虚拟机的所述资源的剩余值,确定是否调度所述虚拟机的所述资源;调度模块,被配置为在确定需要调度所述虚拟机的所述资源的情况下,调度所述虚拟机的所述资源。

根据本公开实施例的还一方面,提供一种资源的调度装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的方法。

根据本公开实施例的还一方面,提供一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述任意一个实施例所述的方法。

根据本公开实施例的还一方面,提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述任意一个实施例所述的方法。

本公开实施例中,根据预定类型的资源当前时刻在虚拟机中的剩余值和当前时刻之后的第一时段内虚拟机上每个容器的负载峰值决定是否调度虚拟机的资源。利用负载预测模型进行负载预测,提高了负载预测的准确性,进而提高资源调度的合理性。既可以避免负载极限值预测过低导致的服务质量的降低或者服务故障,又可以减少服务极限值预测过高导致的资源浪费。并且,由于预测是分时段的动态预测,根据各个时段内预测的负载逐步调度虚拟机的资源,可以减少资源的浪费,提高资源调度的灵活性。

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

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本公开一些实施例的资源的调度方法的流程示意图;

图2是根据本公开另一些实施例的资源的调度方法的流程示意图;

图3是根据本公开一些实施例的资源的调度装置的结构示意图;

图4是根据本公开又一些实施例的资源的调度装置的结构示意图。

具体实施方式

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

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

图1是根据本公开一些实施例的资源的调度方法的流程示意图。

如图1所示,资源的调度方法包括步骤102至步骤108。

在步骤102中,获取虚拟机的具有预定类型的资源在当前时刻的剩余值。

在一些实施例中,资源的类型包括CPU、内存、磁盘。例如,预定类型的资源为CPU资源,则在步骤102中,获取虚拟机的CPU资源在当前时刻的剩余值。

在本公开中,如无特殊说明,则后文中的资源均指步骤102中的具有预定类型的资源。

在步骤104中,基于负载预测模型预测当前时刻之后的第一时段内虚拟机上每个容器的预定类型的资源的负载峰值。

在第一时段内的不同时刻,虚拟机上每个容器的预定类型的资源的负载可能会发生变化,步骤104获取的是虚拟机上每个容器的预定类型的资源在第一时段内的负载峰值,即,最大值。

步骤102和步骤104没有执行的先后顺序,图1所示仅为其中一种情况的示意图,不能作为步骤102和步骤104的执行顺序的限定。

在步骤106中,根据每个容器的负载峰值和虚拟机的资源的剩余值,确定是否需要调度虚拟机的资源。

在步骤108中,在确定需要调度虚拟机的资源的情况下,调度虚拟机的资源。

在上述实施例中,利用负载预测模型进行负载预测,提高了负载预测的准确性,进而提高资源调度的合理性。既可以避免负载极限值预测过低导致的服务质量的降低或者服务故障,又可以减少服务极限值预测过高导致的资源浪费。并且,由于预测是分时段的动态预测,根据各个时段内预测的负载逐步调度虚拟机的资源,可以减少资源的浪费,提高资源调度的灵活性。

在一些实施例中,步骤108包括根据每个容器的负载峰值和所述虚拟机所处主机的所述资源在当前时刻的剩余值调度所述虚拟机的所述资源。

需要说明的是,虚拟机的资源的剩余值和主机的资源的剩余值均是当前时刻的剩余值。

上述实施例中,在调度虚拟机的资源时,从虚拟机所处主机为虚拟机调取资源是最方便快捷的资源调用方式,根据虚拟机所处主机的资源在当前时刻的剩余值调度资源可以提高资源调度效率。

图2是根据本公开另一些实施例的资源的调度方法的流程示意图。

在一些实施例中,如图2中步骤201所示,在每个容器的负载峰值的和小于等于虚拟机的资源的剩余值的情况下,确定不需要调度虚拟机的资源。在该情况下,虚拟机的剩余资源足够每个容器在第一时段内的正常运行,不需要调度虚拟机的资源,即执行步骤202保持现状。

在另一些实施例中,在每个容器的负载峰值的和大于虚拟机的资源的剩余值的情况下,确定需要调度虚拟机的资源。在该情况下,虚拟机的剩余资源在第一时段内可能不足,需要对虚拟机的资源进行调度以保证虚拟机的正常运行,即执行步骤203及后续步骤。

在一些实施例中,如图2中步骤203所示,在每个容器的负载峰值的和大于虚拟机的资源的剩余值、且小于等于主机的资源的剩余值的情况下,利用主机的资源为虚拟机扩容以增加虚拟机的资源,即执行步骤204,其中,虚拟机所增加的资源大于或等于每个容器的负载峰值的和。

在上述方式中,由于虚拟机上每个容器的负载峰值的和大于虚拟机的资源的剩余值,需要根据每个容器的负载峰值的和对虚拟机的资源进行调度以使虚拟机的资源足以支持每个容器在第一时段内的正常运行。而每个容器的负载峰值的和小于等于主机的资源的剩余值,在该情况下,利用主机的资源为虚拟机扩容以增加虚拟机的资源,在提高资源调度的效率的同时,可以避免主机资源不足导致的资源调度失败影响容器的正常运行。

在另一些实施例中,在每个容器的负载峰值的和大于虚拟机的资源的剩余值、且大于主机的资源的剩余值的情况下,执行第一迁移和第二迁移中的一个。

第一迁移为将虚拟机迁移至其他主机。为保证迁移后虚拟机上的每个容器在第一时段内可以正常运行,其他主机的资源在当前时刻的剩余量需大于等于每个容器的负载峰值的和。

第二迁移为将虚拟机上的至少一个容器迁移至其他虚拟机。在第二迁移中,既要保证迁移至其他虚拟机的至少一个容器在第一时段内可以正常运行,又要保证除了迁移至其他虚拟机的容器外,剩余容器在第一时段内可以正常运行,因此,虚拟机的资源在至少一个容器迁移后的剩余量大于等于虚拟机上除至少一个容器外其他容器的负载峰值的和,其他虚拟机的资源的剩余值大于等于迁移的至少一个容器的负载峰值的和。

在上述实施例中,由于每个容器的负载峰值的和大于虚拟机的资源的剩余值、且大于主机的资源的剩余值,即主机的资源不足以为虚拟机扩容。这种情况下,通过将虚拟机或者容器迁移以解决主机的资源不足的问题,保证虚拟机上每个容器在第一时段内的正常运行。

在一些实施例中,如图2中步骤205所示,在虚拟机的总负载小于第一阈值的情况下,执行第一迁移,即执行步骤206。

在另一些实施例中,如图2中步骤207所示,在虚拟机的总负载大于第二阈值的情况下,执行第二迁移,即执行步骤208,其中,第一阈值小于第二阈值。

在上述两种迁移方案中,虚拟机上各个容器之间可能存在关联性,在虚拟机的总负载较小时,将虚拟机整体迁移至其他主机可以避免对虚拟机上各个容器的关联性造成破坏。例如,在虚拟机上各个容器之间存在频繁通信的情况下,执行第一迁移可以方便各个容器之间的通信。而在虚拟机的总负载较大时,迁移整个虚拟机的过程耗时较长,在该情况下,执行第二迁移可以提高资源调度的效率。在进行虚拟机的迁移时候,设定两套不同的迁移方案,并根据虚拟机的总负载的情况决定执行哪一套迁移方案可以使资源的调度更灵活。

在一些实施例中,如图2中的步骤209所示,在虚拟机的总负载大于等于第一阈值且小于等于第二阈值的情况下,调整第一阈值和第二阈值中的至少一个,以使虚拟机的总负载小于调整后的第一阈值或者大于调整后的第二阈值。在虚拟机总负载没有落入任何一个迁移方案对应的迁移条件的阈值的范围时,证明阈值设定不合理。通过调整第一阈值和第二阈值中的至少一个,使得虚拟机的总负载可以满足至少一个迁移方案的迁移条件,并依照满足迁移条件的迁移方案进行迁移。上述方式可以根据虚拟机的总负载逐步调整第一阈值和第二阈值,以使第一阈值与第二阈值的设定更为合理。

在一些实现方式中,对第一阈值和第二阈值进行步进式调整,例如,在资源的预设类型为磁盘资源的情况下,若第一阈值为100MB,第二阈值为200MB,虚拟机的总负载为121MB。在一些实现方式中,每次对第一阈值和第二阈值步进式调整10MB。在第一次调整中,将第一阈值调整为110MB,第二阈值调整为190MB,虚拟机的总负载不满足第一迁移或者第二迁移的迁移条件,则继续进行调整;在第二次调整中,将第一阈值调整为120MB,第二阈值调整为180MB,虚拟机的总负载仍然不满足第一迁移或者第二迁移的迁移条件,继续进行调整;在第三次调整中,将第一阈值调整为130MB,第二阈值调整为170MB,此时虚拟机的总负载小于第一阈值,则执行第一迁移。在上述方式中,通过步进式调整第一阈值和第二阈值,可以提高第一阈值和第二阈值的调整的精确度。

在一些实施例中,负载预测模型通过以下步骤训练得到:

步骤1,获取训练数据,其中,训练数据包括初始训练数据。初始训练数据包括在第二时段内多个采集时刻采集虚拟机上每个容器的资源的负载,其中,第二时段为包含当前时刻和第一时段的历史时段。

例如,负载预测模型需要预测当天8至9点某个容器的负载峰值,训练该负载预测模型的训练数据至少包括该容器在过去某一天的8至9点内多个采集时刻采集的负载。

步骤2,利用训练数据训练负载预测模型。

在上述方式中,利用历史时段中虚拟机上每个容器的资源的负载,训练负载预测模型,可以提高负载预测模型的预测结果的准确性。

在一些实施例中,利用所述训练数据训练所述负载预测模型包括:对初始训练数据进行处理以得到清洗后训练数据;利用清洗后训练数据训练负载预测模型。

清洗后训练数据由初始训练数据经下述处理方式1至处理方式4中的至少一项进行处理后得到:

处理方式1,删除采集时刻不符合预设时间间隔的负载。例如,预设时间间隔为1毫秒,若某个采集时刻与其他采集时刻的差值不是预设时间间隔的整数倍,则删除该采集时刻对应的负载。

处理方式2,删除大小不在预设负载区间中的负载。例如,预设负载区间为[μ-2σ,u+2σ],μ为负载指标,σ为标准差,若负载超出该预设负载区间,则删除该负载。在一些实现方式中,负载指标μ根据当前时刻的某个历史时段的负载均值确定。

处理方式3,在任意一个采集时刻采集到多个负载的情况下,将多个负载的平均值作为该采集时刻对应的负载。例如,同一个采集时刻t

处理方式4,在任意一个采集时刻未采集到负载的情况下,利用与该采集时刻相邻的采集时刻对应的负载的平均值作为该采集时刻对应的负载。例如,连续的三个采集时刻为t

在上述方式中,利用清洗后数据训练负载预测模型可以进一步提高负载预测模型的预测结果的准确性,从而提高资源的调度的合理性。

在一些实施例中,负载预测模型为时间序列预测模型,例如Prophet时间序列预测模型。

在一些实现方式中,负载预测模型可以由式1表示。

y(t)=g(t)+s(t)+∈

式1中,负载预测值为y(t),g(t)表示趋势项,s(t)表示季节项,∈

在一些实现方式中,趋势项g(t)=[k+a(t)δ]t+[m+a(t)

在一些实现方式中,季节项s(t)按照傅里叶级数进行拟合。季节项

剩余项又称噪音项,由负载预测模型自动拟合。

将第二时段采集到的负载通过式1进行拟合,得到负载预测模型,将第一时段输入负载预测模型即可输出第一时段的预测负载,对预测负载求最大值,即可得到负载峰值。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

图3是根据本公开一些实施例的资源的调度装置的结构示意图。

如图3所示,资源的调度装置包括获取模块301、预测模块302、确定模块303和调度模块304。

获取模块301被配置为获取虚拟机的具有预定类型的资源在当前时刻的剩余值。

预测模块302被配置为基于负载预测模型预测当前时刻之后的第一时段内虚拟机上每个容器的资源的负载峰值。

确定模块303被配置为根据每个容器的负载峰值和虚拟机的资源的剩余值,确定是否需要调度虚拟机的资源。

调度模块304被配置为在确定需要调度虚拟机的资源的情况下,调度虚拟机的资源。

在一些实施例中,资源的调度装置还可以包括其他模块以执行上述其他实施例的资源的调度方法。

图4是根据本公开又一些实施例的资源的调度装置的结构示意图。

如图4所示,资源的调度装置400包括存储器401以及耦接至该存储器401的处理器402,处理器402被配置为基于存储在存储器401中的指令,执行前述任意一个实施例的方法。

存储器401例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如可以存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。

资源的调度装置400还可以包括输入输出接口403、网络接口404、存储接口405等。这些接口403、404、405之间、以及存储器401与处理器402之间例如可以通过总线406连接。输入输出接口403为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口404为各种联网设备提供连接接口。存储接口405为SD卡、U盘等外置存储设备提供连接接口。

本公开实施例还提供了一种计算机可读存储介质,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一个实施例的方法。

本公开实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例的方法。

至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

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

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

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

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

虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。

技术分类

06120115630868