用于云系统的方法和装置转让专利

申请号 : CN201511031818.0

文献号 : CN106936883B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陶隽曹逾郭小燕李三平赵军平

申请人 : 伊姆西IP控股有限责任公司

摘要 :

本公开的实施例提供了一种用于云系统的方法和装置。该方法可以包括:基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略;以及执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求。通过本公开的实施例,当单个或一批资源请求到达时,将动态地选取最适当的调度策略并且针对这些请求生成最优的资源分配方案,这导致了成本有效的操作,同时满足了资源请求的服务级别要求。

权利要求 :

1.一种用于云系统的方法,包括:

基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略;

执行所选择的调度策略来调度所述可用的基础设施资源中的至少一个基础设施资源,用以服务所述至少一个资源请求;

其中基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略包括:基于所述可用的基础设施资源中的所述至少一个基础设施资源的状态信息和所述至少一个资源请求,并且还基于指定的调度目标要求和所述至少一个资源请求的服务水平要求,动态地选择所述调度策略;

基于所述调度目标要求和所述服务水平要求,计算所述候选调度策略集合的相应的性能;

基于所计算的相应的性能来动态地选择所述调度策略;

根据多个预定的度量来评估所述候选调度策略集合的所述相应的性能;

选择在所述多个预定的度量上都优于其他的候选调度策略的最优的候选调度策略,作为所述调度策略;

如果不存在所述最优的候选调度策略,则将所述候选调度策略集合划分为多个子集;

在所述多个子集内确定相应的最优的候选调度策略;

从所确定的多个最优的候选调度策略中选择所述调度策略;

执行所述多个最优的候选调度策略以获得对应的资源分配结果;以及选择具有最优资源分配结果的调度策略作为所述调度策略。

2.根据权利要求1所述的方法,其中所述调度目标要求包括以下各项中的至少一项:最小化操作成本、最小化所使用的基础设施资源、最大化资源分配速度、以及最大化资源分配的可伸缩性。

3.根据权利要求1所述的方法,其中基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略进一步包括:基于所述基础设施资源的状态信息和所述至少一个资源请求,并且还基于预定规则,来动态地选择所述调度策略。

4.根据权利要求3所述的方法,其中所述预定规则包括所述至少一个资源请求的类型与所述候选调度策略集合之间的映射关系。

5.根据权利要求3所述的方法,进一步包括:基于与所述至少一个资源请求的类型相关的经验,或者利用基于学习的方式,来确定所述预定规则。

6.根据权利要求1所述的方法,进一步包括:收集与所述至少一个资源请求相关的历史数据;以及基于所述历史数据来预测资源需求;

其中基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略包括:基于所述可用的基础设施资源和所述至少一个资源请求,并且还基于所预测的资源需求,动态地选择所述调度策略。

7.根据权利要求1所述的方法,其中所述可用的基础设施资源中的所述至少一个基础设施资源包括以下各项中的至少一项:底层物理机器、存储池、以及物理网络设备。

8.根据权利要求7所述的方法,其中执行所选择的调度策略来调度所述可用的基础设施资源中的所述至少一个基础设施资源,用以服务所述至少一个资源请求包括以下各项中的至少一项:确定虚拟机向所述底层物理机器的映射;

从所述存储池中分配存储空间用于提供块存储;以及在所述物理网络设备上建立虚拟网络。

9.根据权利要求1所述的方法,其中所述方法由独立于所述云系统的装置或者集成在所述云系统中的装置来执行。

10.一种用于云系统的装置,包括:

选择单元,被配置为基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略;

执行单元,被配置为执行所选择的调度策略来调度所述可用的基础设施资源中的至少一个基础设置资源,用以服务所述至少一个资源请求;

其中所述选择单元进一步被配置为:

基于所述可用的基础设施资源中的所述至少一个基础设施资源的状态信息和所述至少一个资源请求,并且还基于指定的调度目标要求和所述至少一个资源请求的服务水平要求,动态地选择所述调度策略;

计算单元,被配置为基于所述调度目标要求和所述服务水平要求,计算所述候选调度策略集合的相应的性能;

其中所述选择单元进一步被配置为基于所计算的相应的性能来动态地选择所述调度策略;

评估单元,被配置为根据多个预定的度量来评估所述候选调度策略集合的所述相应的性能;

其中所述选择单元进一步被配置为选择在所述多个预定的度量上都优于其他的候选调度策略的最优的候选调度策略,作为所述调度策略;

划分单元,被配置为如果不存在所述最优的候选调度策略,则将所述候选调度策略集合划分为多个子集;

第一确定单元,被配置为在所述多个子集内确定相应的最优的候选调度策略;

其中所述选择单元进一步被配置为从所确定的多个最优的候选调度策略中选择所述调度策略;

其中所述执行单元进一步被配置为执行所述多个最优的候选调度策略以获得对应的资源分配结果;并且其中所述选择单元进一步被配置为选择具有最优资源分配结果的调度策略作为所述调度策略。

11.根据权利要求10所述的装置,其中所述调度目标要求包括以下各项中的至少一项:最小化操作成本、最小化所使用的基础设施资源、最大化资源分配速度、以及最大化资源分配的可伸缩性。

12.根据权利要求10所述的装置,其中所述选择单元进一步被配置为:基于所述基础设施资源的状态信息和所述至少一个资源请求,并且还基于预定规则,来动态地选择所述调度策略。

13.根据权利要求12所述的装置,其中所述预定规则包括所述至少一个资源请求的类型与所述候选调度策略集合之间的映射关系。

14.根据权利要求12所述的装置,进一步包括:第二确定单元,被配置为基于与所述至少一个资源请求的类型相关的经验,或者利用基于学习的方式,来确定所述预定规则。

15.根据权利要求10所述的装置,进一步包括:收集单元,被配置为收集与所述至少一个资源请求相关的历史数据;

预测单元,被配置为基于所述历史数据来预测资源需求;并且其中所述选择单元进一步被配置为基于所述可用的基础设施资源和所述至少一个资源请求,并且还基于所预测的资源需求,动态地选择调度策略。

16.根据权利要求10所述的装置,其中所述基础设施资源包括以下各项中至少一项:底层物理机器、存储池、以及物理网络设备。

17.根据权利要求16所述的装置,其中所述执行单元进一步被配置为执行以下各项中的至少一项:确定虚拟机向所述底层物理机器的映射;

从所述存储池中分配存储空间用于提供块存储;以及在所述物理网络设备上建立虚拟网络。

18.根据权利要求10所述的装置,其中所述装置独立于所述云系统或者集成在所述云系统中。

19.一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,所述计算机可读程序指令在由机器执行时,使得所述机器执行根据权利要求1-9中任一项所述的方法。

20.一种计算机系统,包括根据权利要求10-18中任一项所述的装置。

说明书 :

用于云系统的方法和装置

技术领域

[0001] 本公开的实施例一般性地涉及与计算机相关的技术领域,并且更特别地涉及一种用于云系统的方法和装置。

背景技术

[0002] 云系统已经成为最流行的系统部署新典范。云系统的按需使用计算模式允许用户按需要构建他们自己的基础设施并且以现买现付的方式使用这些基础设施。在云系统中,对于计算、存储和网络化的资源请求是由服务提供商管理的数据中心中的底层物理基础设施来进行服务的。如何以最少数量的系统资源来有效地减少服务用户请求时的成本并且同时保持服务水平是一种长久的挑战。
[0003] 换句话说,调度计算资源、存储资源和网络资源对于大规模的基础设施(诸如云系统)而言是最基本的挑战之一。当前,现有的资源管理系统通常使用单一的调度策略来实施调度功能。归因于诸多原因,现有的管理系统倾向于得出次优的资源分配或者甚至是低质量的资源分配。

发明内容

[0004] 鉴于现有技术中存在的上述问题,本公开的实施例的目的之一在于提供一种用于云系统的方法和装置,以解决现有技术中的上述以及其他的问题。
[0005] 根据本公开的第一方面,提供了一种用于云系统的方法。该方法可以包括:基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略;以及执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求。
[0006] 在一些实施例中,基于基础设施资源的状态信息和至少一个资源请求,动态地从候选调度策略集合中选择调度策略可以包括:基于基础设施资源的状态信息和至少一个资源请求,并且还基于指定的调度目标要求和至少一个资源请求的服务水平要求,动态地选择调度策略。
[0007] 在一些实施例中,该方法可以进一步包括:基于调度目标要求和服务水平要求,分别计算多个候选调度策略的性能;以及基于所计算的性能来动态地选择调度策略。
[0008] 在一些实施例中,该方法可以进一步包括:根据多个预定的度量来评估多个候选调度策略的性能;以及选择在多个度量上都优于其他的候选调度策略的最优的候选调度策略,作为所述调度策略。
[0009] 在一些实施例中,该方法可以进一步包括:如果不存在最优的候选调度策略,则将候选调度策略集合划分为多个子集;在多个子集内分别确定最优的候选调度策略;以及从所确定的多个最优的候选调度策略中选择调度策略。在这些实施例中,该方法可以进一步包括:执行多个最优的候选调度策略以生成相应的资源分配结果;以及选择具有最优资源分配结果的调度策略作为调度策略。
[0010] 在一些实施例中,调度目标要求可以包括以下各项中的一项或多项:最小化操作成本、最小化所使用的基础设施资源、最大化资源分配速度、以及最大化资源分配的可伸缩性。
[0011] 在一些实施例中,基于基础设施资源的状态信息和至少一个资源请求,动态地从候选调度策略集合中选择调度策略可以包括:基于基础设施资源的状态信息和至少一个资源请求,并且还基于预定规则,来动态地选择调度策略。在一些实施例中,预定规则可以包括资源请求的类型与候选调度策略之间的映射关系。在一些实施例中,该方法可以进一步包括:基于与资源请求的类型相关的经验,或者利用基于学习的方式,来确定预定规则。
[0012] 在一些实施例中,该方法可以进一步包括:收集与资源请求相关的历史数据;基于历史数据来预测资源需求;并且基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略可以包括:基于可用的基础设施资源和至少一个资源请求,并且还基于所预测的资源需求,动态地选择调度策略。
[0013] 在一些实施例中,基础设施资源可以包括以下各项中的一项或多项:底层物理机器、存储池、以及物理网络设备。在这些实施例中,执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求可以包括执行以下各项中的一项或多项:确定虚拟机向底层物理机器的映射;从存储池中分配存储空间用于提供块存储;以及在物理网络设备上建立虚拟网络。
[0014] 在一些实施例中,该方法由独立于云系统的装置或者集成在云系统中的装置来执行。
[0015] 根据本公开的第二方面,提供了一种用于云系统的装置。该装置可以包括:选择单元,被配置为基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略;以及执行单元,被配置为执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求。
[0016] 根据本公开的第三方面,提供了一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,这些计算机可读程序指令用于执行根据第一方面的方法。
[0017] 根据本公开的第三方面,提供了一种计算机系统,包括根据第三方面的装置。
[0018] 替代单一的资源调度策略,本公开的实施例提出向云系统的管理系统装备多种调度策略,这些调度策略中的每种策略可以适合用于某种类别的资源请求和某种基础设施资源状态。因此,在运行时,当单个或一批资源请求到达时,管理系统可以动态地选取最适当的调度策略加以应用,并且针对这些资源请求生成最优的资源分配方案,这导致了成本有效的操作,同时满足了资源请求的服务级别要求。

附图说明

[0019] 通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:
[0020] 图1示意性地示出了根据本公开的实施例的一种用于云系统的方法的流程图。
[0021] 图2示意性地示出了根据本公开的实施例的一种用于云系统的装置的框图。
[0022] 图3示意性地示出了根据本公开的实施例的一种用于云系统的示例性架构的示意图。
[0023] 图4示意性地示出了一种可以用来实现本公开的实施例的示例性计算机系统/服务器的框图。

具体实施方式

[0024] 下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
[0025] 如上文所描述的,调度计算资源、存储资源和网络资源对于大规模的基础设施(诸如云系统)而言是最基本的挑战之一。当前,现有的资源管理系统通常使用单个调度策略来实施调度功能。归因于以下的原因,现有的管理系统倾向于得出次优的资源分配或者甚至是低质量的资源分配。
[0026] 第一,不存在单一的最优调度策略。资源调度问题本质上是受约束的优化问题:调度算法需要导出关于特定目标函数的最优解,并且同时满足所有的服务水平要求。对于这个调度问题存在许多解决方案,例如,启发式、整数线性规划、或者它们的某种形式的混合。也就是说,可能不存在单个压倒性的策略总是优于其他策略。因此,在不同的环境下(在应用工作负载和资源需求方面),不同的资源调度策略可能变为要应用的最佳策略。
[0027] 第二,采用了单一且静态的调度策略。现有的云管理系统通常选择并实施单一的调度策略,其将被应用到所有的到来的资源请求。在不清楚系统将服务于哪些主要的目标工作负载时,所采用的调度策略经常在多个能力维度方面趋向于不平衡,并且没有具体地优化用于特定的工作负载类型。在这种情况中,有可能所选择的调度策略对于一些或主要的应用工作负载,将导致平均或者甚至坏的资源分配方案。另一方面,如果所采取的调度策略具体地被优化用于主要的目标工作负载,则在工作负载发生变化时,它的有效性可能快速地降低。
[0028] 第三,采用了紧密耦合的资源调度策略实施方式。在现有的云管理系统中,资源调度实施方式紧密地与系统的其他部分集成,并且不可能或者难以替换已有的调度策略。换句话说,系统设计缺少容纳多种调度策略的考虑。
[0029] 第四,无法得到最佳的多种调度策略。理想地,不同的资源请求应当由不同的调度策略有差别地进行处理,以便导出最优的资源分配方案。遗憾的是,由于上面的三个原因,尽管可能存在各种资源调度策略,但是现有的云系统不能完全利用来自每种策略的优越性。
[0030] 除了基于预定义的规则/策略集合的传统调度策略之外,最近出现了新颖的调度策略,其利用高级的基于成本的和/或基于学习的技术并且目标是导出最优的或者接近于最优的资源分配方案。但是,这些资源调度策略具有它们各自的优点和缺点,并且经常不能在任何环境中都优于其他方案。通常,现有的云管理系统将选择并且实施单一的调度策略。然而,在实践中,面对具有多样化的特性和服务级别要求的不同应用的资源请求,以及不同的基础设施资源状态,所选择的策略可能不能总是保证最优的或者接近于最优的或者甚至稳定的良好资源分配方案。
[0031] 在本公开的实施例中,提出了一种高效且可伸缩的方法,其通过优化用户请求向底层物理基础设施的调度和映射,而针对云系统优化了对系统资源的使用。作为目标的调度问题的具体示例可能来自各种资源分配任务,诸如,确定虚拟机向底层物理机器的映射、从存储池中分配一批以逻辑单元号LUN表示的存储空间用于提供块存储、以及在物理网络设备(诸如交换机)上建立虚拟网络。
[0032] 为了提供向这个针对云系统的资源调度问题提供解决方案,需要一种快速、有效和可伸缩的方法。在本公开的实施例中,提出了一种具有对应框架的新方法,该框架容纳多种资源调度策略并且在运行时确定最适当的调度策略用于服务云资源请求。该方法的特征在于它是自适应的,基于不同的供应场景,经由静态特性分析、推测性执行或者它们的两者来确定最优的调度策略。
[0033] 本公开的实施例可以利用两种方法用于动态分配策略选择。在第一种方法中,可以根据多个能力维度(例如,效率和有效性)来定量性地或者定性地测量可用的分配策略。为了满足用户的请求,服务水平要求和它们的特性被分析以算出合意的分配策略能力并且然后识别最适合的一个。当在不同类型的资源请求与它们对应的最佳适配策略之间存在容易识别的映射时,这种方法工作良好。
[0034] 然而,对于一些分配请求,可能难以经由静态分析来找到最佳适配分配策略。因此,在另一种方法中,提出了推测性执行的思想,其中将选择分配策略的集合(子集)并且执行以针对相同的资源分配请求生成不同的分配方案。所生成的方案将根据请求的服务水平要求和所指定的目标函数而被评估和比较,并且最终将选取最佳的分配方案。基于上述两种方法,还提出了一种用于多策略驱动资源调度的框架并且描述它如何能够被集成到云环境中。
[0035] 为了使得本公开的实施例高度可应用于云系统环境,本公开的实施例的方法在实现满足于用户的服务水平协议的最优调度时具有三个关键性质。
[0036] 第一,低成本。调度方法需要允许减少云环境的操作成本。例如,高效的虚拟机调度器应当使用最小数量的物理机同时服务尽可能多的请求数量来分配虚拟机。第二,快速。该调度方法必须是快速的。否则,丢失了云提供按需资源访问的敏捷性。第三,可伸缩。该调度方法应当具有扩展和收缩的能力,而不论可用的云系统资源量和所请求的资源量。
[0037] 下文从数学理论的角度来分析本公开的实施例所要解决的云系统中的资源调度问题。
[0038] 所提出的调度方法的最基本的能力是,以所指定的目标将所请求的资源映射到基础设施资源,例如,将虚拟机映射到物理机,或者以最小的基础设施资源将LUN映射到存储池。映射过程在数学上可以被考虑为是一种装箱过程。物理机可以被考虑为是箱体,而将被放置的虚拟机可以被考虑为是将被装进箱体内的对象。
[0039] 映射过程还必须满足服务水平协议(SLA),服务水平协议通常覆盖了在多个维度上的具体要求,并且这些要求共同地成为对该映射的约束。例如,资源调度器要求确保以所期望的CPU能力、存储器容量等来分配所提供的虚拟机。对于块存储的情况,LUN卷(volume)应当被提供具有所要求的容量、每秒输入/输出操作次数(IOPS)、带宽、数据保护方案,等等。也就是说,能够通过选择不同的目标和约束,在各种资源调度场景下来应用装箱模型。
[0040] 装箱问题可以进而被形式化为一种约束规划问题,其目标是最大化/最小化全局目标函数(例如,最小化的操作成本),并且同时考虑满足服务水平。
[0041] 下文结合图1-3来具体地描述根据本公开的实施例的用于云系统的方法和装置。
[0042] 图1示意性地示出了根据本公开的实施例的一种用于云系统的方法100的流程图。在一些实施例中,方法100的执行主体可以是与云系统有关的实体。在一些特定的实施例中,方法100的执行主体可以是稍后结合图2所描述的装置200。
[0043] 如图1中所示出的,方法100在开始之后可以进入步骤101。在步骤101中,方法100的执行主体可以基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略。
[0044] 如上面所提到的,云系统的资源调度问题的核心抽象是从用户的资源请求向可用基础设施资源的映射。然而,随着底层基础设施变得更大规模和更动态,并且用户服务请求的服务水平要求以丰富的多样性以及变化的速率来到系统中,高效的资源调度变得非常有挑战性。
[0045] 为了解决高度动态的按规模的云资源调度问题以满足具有多维度的服务水平要求,本公开的实施例提出了向云调度系统装备多种分配策略,并且动态地在实现调度目标的同时实现服务水平的条件下选取最优的调度策略。在下文中,将具体地阐述本公开的实施例的方法如何能够通过容纳多种调度策略而自适应地处理资源调度中的多样性和动态性。在该方法中,提出了用于动态调度策略选择的两种方式,即静态特性分析和推测性执行。
[0046] 在一些实施例中,步骤101可以包括:基于基础设施资源的状态信息和至少一个资源请求,并且还基于指定的调度目标要求和所述至少一个资源请求的服务水平要求,动态地选择所述调度策略。本领域的技术人员可以理解,在进行基础设施资源的调度中,可能需要满足预先指定的调度目标,例如使调度成本最小化等等。此外,用户所提出的资源请求也可能具有对服务水平的要求,在调度资源的过程中,也需要满足用户的服务水平要求。特别地,调度目标要求可以包括以下各项中的一项或多项:最小化操作成本、最小化所使用的基础设施资源、最大化资源分配速度、以及最大化资源分配的可伸缩性。
[0047] 在一些实施例中,方法100可以进一步包括:基于调度目标要求和服务水平要求,分别计算多个候选调度策略的性能;以及基于所计算的性能来动态地选择调度策略。在这些实施例中,可以定义多个度量来评估多个候选调度策略的性能;以及选择在多个度量上都优于其他的候选调度策略的最优的候选调度策略,作为所述调度策略。
[0048] 具体而言,对于单个资源请求或者一批资源请求,可以基于调度形势的分析,从包括多个不同的调度策略的整个搜索空间中选择一个调度策略或者调度策略的子集。在分析模型可用于基于对调度形势特性的分析来预测每个候选的调度策略的性能时,可以使用这种方式。
[0049] 例如,对于块存储分配的特定场景,实例(instance)的特性可能影响每个调度算法将会表现出的性能。该实例可能包括如下的信息:在一个请求中将被分配的具有多维度服务水平要求的LUN卷的集合、以及在多个维度中具有对应容量的存储池的集合。
[0050] 在这种情况中,用于选择候选策略的可行方法之一是以对应的示例特性定量地评估每个策略,并且识别出最优的策略。为了完成这一点,可以定义一些度量,诸如有效性和时间复杂性,并且分离地针对每个策略进行评估。
[0051] 在本公开的上下文中,可以定义一种被称为“压倒(dominate)”的关系,其含义为在特定情形中“在每个度量中占优”。例如,如果调度策略A“压倒”调度策略B,则调度策略A在每个度量中都优于调度策略B,并且反之亦然。关于这种“压倒”关系,最具有“压倒性”的策略(该调度策略“压倒”所有其他调度策略)将被选择为最终的调度策略。
[0052] 在一些实施例中,方法100可以进一步包括:如果不存在最优的候选调度策略,则将候选调度策略集合划分为多个子集;在多个子集内分别确定最优的候选调度策略;以及从所确定的多个最优的候选调度策略中选择调度策略。
[0053] 在一些实施例中,方法100可以进一步包括:执行多个最优的候选调度策略以生成相应的资源分配结果;以及选择具有最优资源分配结果的调度策略作为调度策略。
[0054] 在实践中,上文的静态分析方式可能无法辨别出相比其他调度策略而言最优的调度策略。这是因为上文定义的“压倒”关系是偏序的。也就是说,可能存在2个调度策略A和B使得以下表达式都不成立,A“压倒”B、以及B“压倒”A。
[0055] 换句话说,它们在优势性方面不是可比较的。在这种情况中,整个调度策略空间可以通过根据所选择的度量评估的“压倒”偏序而被划分为多个子空间,使得对于相同分区内的任何2个调度策略A和B,A“压倒”B、或者B“压倒”A成立。此外,对于来自2个不同分区的任何2个调度策略A和B,A“压倒”B、或者B“压倒”A都不成立。
[0056] 在每个子空间内,仍然能够使用基于静态分析的选择方式来导出最优调度策略。以这种方式,最后得到一组候选调度策略(每个策略来自一个子空间),并且它们中的任何一个调度策略并不压倒其他调度策略。为了进一步从这些调度策略中确定最终的调度策略,能够通过开始执行每个调度策略并且让它生成资源分配方案。然后,收集并且评估从这些调度策略得到的资源分配方案并且挑选优于其他资源分配方案的调度策略。
[0057] 在一些实施例中,步骤101可以包括:基于基础设施资源的状态信息和至少一个资源请求,并且还基于预定规则,来动态地选择调度策略。在这些实施例中,预定规则可以包括资源请求的类型与候选调度策略之间的映射关系。在一些实施例中,可以基于与资源请求的类型相关的经验,或者利用基于学习的方式,来确定预定规则。
[0058] 除了上文描述的基于调度形式的分析之外,对于单个资源请求或者一批资源请求,还可以基于规则,从包括多个不同的调度策略的整个搜索空间中选择一个调度策略或者调度策略的子集。
[0059] 应当理解,有时候可能不存在对于经验和最佳实践的良好替代方式。在这样的情况中,基于预定规则的方法可以通过将“工作存储”与一组预定规则进行匹配,来作出有效的决定。该组预定规则采集不同类型的资源请求与它们对应的最佳适配资源分配策略之间的映射。如上文所提到的,这些预定规则可以从人的专门知识或经验来导出,或者可以利用基于学习的方式自动地进行挖掘。
[0060] 在一些实施例中,方法100可以进一步包括:收集与资源请求相关的历史数据;基于历史数据来预测资源需求;并且步骤101可以包括:基于可用的基础设施资源和至少一个资源请求,并且还基于所预测的资源需求,动态地选择调度策略。
[0061] 如上文所解释的,装箱模型对于面向批处理的资源调度问题工作得很好。在本公开的实施例中,还认识到装箱模型也可以用于在线场景,其中小型成批的资源请求间歇地来到调度系统中。对于这种在线场景,本文提出了基于预测的调度模型。在特定的实施方式中,基于预测的调度模型可以进行以下步骤:收集资源请求的历史数据并且将过去的需求模式公式化;通过某种回归模型针对下次调度间隔预测资源使用;以及将恰当的云资源分配给所预测的资源需求。如所看到的,装箱模型仍然可以应用于所提出的这种方法的最后步骤。
[0062] 接着,方法100可以进入步骤102。在步骤102中,方法100的执行主体可以执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求。
[0063] 在一些实施例中,基础设施资源包括以下各项中的一项或多项:底层物理机器、存储池、以及物理网络设备。在这些实施例中,步骤102可以包括执行以下各项中的一项或多项:确定虚拟机向底层物理机器的映射;从存储池中分配存储空间用于提供块存储;以及在物理网络设备上建立虚拟网络。
[0064] 在一些实施例中,方法100可以由独立于云系统的装置或者集成在云系统中的装置来执行。
[0065] 在完成步骤102之后,方法100可以结束。
[0066] 图2示意性地示出了根据本公开的实施例的一种用于云系统的装置200的框图。本领域的技术人员可以理解,图2中仅示出了装置200中的与本公开的实施例紧密相关的单元或组件,在具体的实现中,装置200可以包括使其能够正常操作的其他功能单元或组件。此外,本领域的技术人员还可以理解,装置200的各个单元之间可以存在必要的连接。在图2中,使用虚线框表示可选的单元。
[0067] 如图2中所示出的,装置200可以包括选择单元201和执行单元202。在一些实施例中,选择单元201可以被配置为基于可用的基础设施资源和至少一个资源请求,动态地从候选调度策略集合中选择调度策略。执行单元202可以被配置为执行所选择的调度策略来调度基础设施资源,用以服务至少一个资源请求。
[0068] 在一些实施例中,选择单元201可以进一步被配置为:基于基础设施资源的状态信息和至少一个资源请求,并且还基于所指定的调度目标要求和至少一个资源请求的服务水平要求,动态地选择调度策略。
[0069] 在一些实施例中,装置200可以进一步包括计算单元203。计算单元203可以被配置为基于调度目标要求和服务水平要求,分别计算多个候选调度策略的性能。在这些实施例中,选择单元201可以进一步被配置为基于所计算的性能来动态地选择调度策略。
[0070] 在一些实施例中,装置200可以进一步包括评估单元204。评估单元204可以被配置为定义多个度量来评估多个候选调度策略的性能。在这些实施例中,选择单元201可以进一步被配置为选择在多个度量上都优于其他的候选调度策略的最优的候选调度策略作为所述调度策略。
[0071] 在一些实施例中,装置200可以进一步包括划分单元205。划分单元205可以被配置为如果不存在最优的候选调度策略,则将候选调度策略集合划分为多个子集。在这些实施例中,装置200可以进一步包括第一确定单元206。第一确定单元206可以被配置为在多个子集内分别确定最优的候选调度策略。选择单元201可以进一步被配置为从所确定的多个最优的候选调度策略中选择调度策略。
[0072] 在这些实施例中,执行单元202可以进一步被配置为执行多个最优的候选调度策略以生成相应的资源分配结果。选择单元201可以进一步被配置为选择具有最优资源分配结果的调度策略作为调度策略。
[0073] 在一些实施例中,调度目标要求可以包括以下各项中的一项或多项:最小化操作成本、最小化所使用的基础设施资源、最大化资源分配速度、以及最大化资源分配的可伸缩性。
[0074] 在一些实施例中,选择单元201可以进一步被配置为:基于基础设施资源的状态信息和至少一个资源请求,并且还基于预定规则,来动态地选择调度策略。在一些实施例中,预定规则可以包括资源请求的类型与候选调度策略之间的映射关系。
[0075] 在一些实施例中,装置200可以进一步包括第二确定单元207。第二确定单元207可以被配置为基于与资源请求的类型相关的经验,或者利用基于学习的方式,来确定预定规则。
[0076] 在一些实施例中,装置200可以进一步包括收集单元208和预测单元209。收集单元208可以被配置为收集与资源请求相关的历史数据。预测单元209可以被配置为基于所述历史数据来预测资源需求。在这些实施例中,选择单元201可以进一步被配置为基于可用的基础设施资源和至少一个资源请求,并且还基于所预测的资源需求,动态地选择调度策略。
[0077] 在一些实施例中,基础设施资源可以包括以下各项中的一项或多项:底层物理机器、存储池、以及物理网络设备。在这些实施例中,执行单元202可以进一步被配置为执行以下各项中的一项或多项:确定虚拟机向底层物理机器的映射;从存储池中分配存储空间用于提供块存储;以及在物理网络设备上建立虚拟网络。
[0078] 在一些实施例中,装置202可以独立于云系统,或者可以集成在云系统中。
[0079] 图3示意性地示出了根据本公开的实施例的一种用于云系统的示例性架构300的示意图。应当理解,图3中所示出的资源调度器301以及其中的功能模块的划分仅是示例性的并且不是限制性的,目的在于进一步阐述本公开的实施例。
[0080] 图3中的架构图示出了可以用于根据本公开的实施例的多策略资源调度框架的各种组件,以及它们之间的交互。如图3中所示出的,示例性架构300可以包括资源调度器301、资源发现器312和资源控制器313。资源发现器312和资源控制器313可以对基础设施资源314进行监测或操作。
[0081] 在一些实施例中,资源调度器301可以通过调度恰当的基础设施资源来满足用户资源请求。如图3中所示出的,资源调度器301可以进一步包括资源预测器302和调度策略决定引擎303。
[0082] 具体地,调度策略决定引擎303可以从多个不同调度策略的搜索空间中选择最适当的调度策略。资源预测器302可以收集历史资源请求并且针对资源需求作出预测,以针对在线资源调度的场景馈送到调度策略决定引擎303中。
[0083] 在一些实施例中,资源发现器312可以提供基础设施状态信息,基础设施状态信息是用于调度形势分析的输入之一。此外,资源控制器313可以将调度策略决定引擎303生成的优化分配方案部署到底层基础设施。
[0084] 进一步地,资源调度器301将从云用户311提交的用户请求和资源发现器312所发现的基础设施资源能力309这两者作为输入。这些输入被转发给资源调度器301的内部组件,调度策略决定引擎303。
[0085] 调度策略决定引擎303具有多个嵌入的调度策略307,并且应用上文所描述的两种策略选择方法(即,推测性执行304或者静态分析305)之一或者它们的组合来导出将被用来生成作为输出的最终资源分配方案的最优调度策略308。这个输出将进而作为输入被递送给资源控制器313,资源控制器313进行实际的资源分配部署。
[0086] 在线资源调度的场景是资源预测器302加入的场合。资源预测器302保持监测历史资源请求,并且基于历史资源请求作出对用于下次调度间隔的资源需求的预测。所预测的资源需求306被馈送到调度策略决定引擎303中作为输入,就像批处理模式调度过程那样。
[0087] 在实践中,资源调度器301可以被实现为独立的组件,或者可以被嵌入到已有的云管理堆栈中来增强调度效率。例如,它可以被嵌入到云系统平台OpenStack的Cinder调度器中用于增强块存储调度。
[0088] 下文以云存储作为一种特定的示例,来阐述对资源调度策略的优化选择如何能够被应用到实际的存储资源分配问题。
[0089] 该特定示例涉及块存储分配问题。在该示例中,示出了在块存储分配的场景中如何选择调度算法。本质上,对于块存储的一般资源分配挑战可以被视为多维装箱问题。应用可见的LUN从其被分配的个体存储池被考虑为是箱体,其具有不同的维度。类似地,由应用所请求的LUN被考虑为是将被装进这些箱体的对象。所要找到的是一种在这些对象与箱体之间产生映射的可伸缩的方法,使得操作成本在具体的场景下被最小化。
[0090] 通过进一步的概括,装箱模型可以容易地扩展为覆盖多维的大小可变的矢量装箱问题。这一扩展能够被用来模型化具有异种存储单元的、具有多维中的服务水平约束的存储资源分配问题。对于这个特定示例,可以将目标定义为最大化存储合并,也就是说,使用尽可能少的存储池。
[0091] 关于可用的资源分配方法,在传统上,可以利用通用MIP(混合整数规划)解算器,诸如Gurobi,来获得装箱问题的确切答案。然而,即使对于单维度装箱问题,找到整数线性规划的最优可行解决方案是组合的NP-hard问题。这意味着针对优化解决方案设计的算法对于非常大数目的实例的问题通常并不能良好地伸缩。
[0092] 为了实现快速的解决方案,设计了许多其他的替换方式。这些方法之一是使用启发式算法。一些示例是首次适合算法(First Fit)、降序首次适合、最佳适合降序和适配最佳适合降序(A-BFD)算法。这些算法允许快速但是接近最优的解。对于这些算法的计算复杂度通常是二次的,这就是它们比基于整数线性规划解算器的复杂算法更快的原因。经验上,这些启发式方法能够产生接近于最优的解。
[0093] 但是,即使对于启发式算法,也存在多种策略。例如,以对象为中心和以箱体为中心。随着不同的实例特性的变化,比如对象大小和箱体大小的分布,来自一个策略的算法可能优于来自其他策略的算法,并且没有一种大小适合于所有实例。
[0094] 接下来讨论对优化方法的选择。基于上面的观察,对调度策略的最优选择能够应用如下的策略。
[0095] 首先,评估实例的数量,其包括箱体、对象的数目的信息,以及进行匹配的维数信息。
[0096] 其次,在静态分析中,如果存储基础设施没有过载,这可能意味着仍然存在许多箱体具有空闲空间,并且资源分配请求具有一定的规模,即相当多的对象将以多维的服务水平约束而被装箱,则将排除求解确切的解决方案,因为计算开支过高。否则,可以利用确切的方法来导出最优解。
[0097] 第三,为了在非确切解之中进一步选择解,可以继续评估实例特性。在这个过程中,可以针对每个维度细查所请求的资源大小的分布。基于所评估的特性,作出使用以箱体为中心还是以对象为中心的启发式算法的决定。
[0098] 最后,可以根据所确定的分配策略子集来计算多个启发式算法并且根据它们的结果来获得最优解。
[0099] 图4示意性地示出了可以用来实现本公开的实施例的示例性计算机系统/服务器412的框图。应当注意,图4中所示出的计算机系统/服务器412仅是一种示例,不对本公开的实施方式的功能和使用范围进行任何限制。
[0100] 如图4中所示出的,计算机系统/服务器412以通用计算设备的形式表现。计算机系统/服务器412的组件可以包括但不限于:一个或者多个处理器或者处理单元416,系统存储器428,连接不同系统组件(包括系统存储器428和处理单元416)的总线418。
[0101] 总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0102] 计算机系统/服务器412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器412访问的可用介质,包括易失性和非易失性介质,可移除的和不可移除的介质。
[0103] 系统存储器428可以包括易失性存储器形式的计算机系统可读介质,例如,存储器430和/或缓存器432。计算机系统/服务器412可以进一步包括其他可移除/不可移除的、易失性/非易失性计算机系统存储介质。尽管图4中未示出,但是可以提供用于对可移除非易失性磁盘(例如“软盘”)读写的磁盘,以及对可移除非易失性光盘(例如CD-ROM、DVD-ROM或者其他光介质)读写的光盘。在这些情况下,每个磁盘可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开的各实施方式的功能。
[0104] 具有至少一个程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于:操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本公开所描述的实施方式中的功能和/或方法。
[0105] 根据需要,计算机系统/服务器412也可以与一个或多个外部设备(例如显示设备424、存储设备414等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器412交互的设备通信,和/或与使得该计算机系统/服务器412能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口422进行。并且,计算机系统/服务器412还可以通过网络适配器420与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器
420通过总线418与计算机系统/服务器412的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器412使用其他硬件和/或软件模块,包括但不限于:微代码、设备磁盘、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带磁盘以及数据备份存储系统等。
[0106] 本公开的实施例紧密地与例如EMC公司的存储部门有关。具有多种分配策略的优化的资源调度的方法对于任何大规模部署(诸如云和软件定义的数据中心(SDDC))中的存储分配是有益的。这种方法可以被实施为单独的组件,或者可以被实施为用于已有产品(诸如 来自EMC公司的软件定义存储控制器)的插件。
[0107] 在对本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。
[0108] 应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
[0109] 此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
[0110] 虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。