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

一种微服务资源调度系统和方法

文献发布时间:2023-06-19 10:58:46


一种微服务资源调度系统和方法

技术领域

本发明涉及服务器资源调度领域,具体来说涉及面向微服务的由服务质量(QoS)驱动的资源调度技术领域,更具体地说,涉及一种微服务资源调度系统和方法。

背景技术

随着云计算进入新时代,云服务正在从单一设计转向大量的松散耦合的微服务,共同为终端用户服务。自2018年以来,微服务一直在快速增长,目前已经在现代云环境中占据主导地位。大多数云提供商,包括阿里巴巴、亚马逊、脸书(Facebook)和谷歌,都部署了微服务来提高其云系统的可扩展性、功能性和可靠性。

为了提高成本效率,通常将多个微服务运行在一台服务器上。因此,运行时资源调度成为保证微服务的服务质量(QoS)的关键。然而,随着内核、缓存、带宽等服务器资源的增加,以及微服务越来越多样化,使得调度探索空间迅速扩大,现有的调度器已经越来越无法满足服务需求的快速变化。另外,虽然现代服务器的内核和内存资源比以往任何时候都多,但这些资源并没有在当前的云环境中得到充分利用。例如,谷歌的数据中心在25天内的CPU利用率约45%~53%,内存利用率在25%~77%之间,而阿里巴巴的集群在12小时内的CPU利用率在18%~40%,内存利用率在42%~60%,这说明有大量的资源没有被充分挖掘利用。

以前的一些研究设计了在单线程应用程序之间分配末级缓存或内存带宽(MemoryBandwidth)的聚类方法。然而,它们不适用于通常具有许多并发线程和严格的服务质量(QoS)约束的微服务。此外,这些研究依赖于性能模型,这可能会在运行时带来高调度开销,并且移植困难,设计一个精确的模型也是一项具有挑战性的工作。当前,最先进的研究要么使用启发式算法,其每次增加或者减少一个资源并观察性能变化,有代表性的工作是Shuang Chen提出的PARTIS,对缓存、主内存、I/O、网络、磁盘带宽等资源进行划分;要么以相对简单的方式使用基于学习的算法,例如贝叶斯优化,其中的代表工作是Tirthak Patel提出的CLITE,把运行时参数、微服务的QoS输入贝叶斯优化器预测调度策略。这些现有方法无法在具有越来越多并行计算单元和复杂的内存层次结构的现代设备上及时处理用户的各种需求。以调度5个微服务程序为例,在满足某种QoS约束下,PARTIS和CLITE的平均调度开销在20秒钟以上,对于一些对延迟敏感的特定的任务而言延迟过高,并对相应的用户来说可能导致一些损失。例如,对于与财务有关的微服务,延迟过高可能造成重大的财务损失。因此,目前在微服务方面的资源调度技术还不够理想,有必要对现有技术进行改进。

发明内容

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种微服务资源调度系统和方法。

本发明的目的是通过以下技术方案实现的:

根据本发明的第一方面,提供一种微服务资源调度系统,包括:控制逻辑,用于为需要部署的新增微服务分配空闲资源以对新增微服务进行试运行;参数获取模块,用于获取新增微服务试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到新增微服务试运行时的第一状态输入数据;预先训练的第一神经网络模型,用于处理所述新增微服务试运行时的第一状态输入数据以预测新增微服务的资源悬崖和最优资源分配区,其中所述第一神经网络模型是利用一种或者多种微服务在不同资源分配方案下的运行状态参数以及所对应微服务的资源悬崖和最优资源分配区作为样本数据进行训练得到的。

在本发明的一些实施例中,按照以下方式预先训练第一神经网络模型:获取一种或者多种微服务在不同资源分配方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第一状态输入数据;获取为训练用的每条第一状态输入数据标记的其对应微服务的资源悬崖和最优资源分配区作为训练标签;用所述训练用的多条第一状态输入数据及对应的训练标签对第一神经网络模型进行多轮训练至收敛,得到所述预先训练的第一神经网络模型。

在本发明的一些实施例中,用于经预处理得到新增微服务试运行时的第一状态输入数据的多个参数或者用于经预处理得到训练用的多条第一状态输入数据中的每条第一状态输入数据包括系统状态参数和第一组微服务状态参数。

在本发明的一些实施例中,所述系统状态参数是当前被调度的服务器系统的状态参数,包括:CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、内存带宽参数和内存利用率参数中的一个或者多个参数。

在本发明的一些实施例中,所述第一组微服务状态参数是新增微服务自身在试运行时的状态参数,包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数。

在本发明的一些实施例中,所述新增微服务的资源悬崖包括CPU核悬崖和LLC悬崖。

在本发明的一些实施例中,所述最优资源分配区包括CPU核优先条件下的CPU核资源分配、CPU核优先条件下的LLC分配、缓存优先条件下的CPU核资源分配、缓存优先条件下的LLC分配。

在本发明的一些实施例中,所述参数获取模块,还用于获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到试运行时的第二状态输入数据,所述微服务资源调度系统还包括预先训练的第二神经网络模型,用于响应于控制逻辑的调用,在当前系统资源不能满足新增微服务的资源需求时处理试运行时的第二状态输入数据以预测位于同一服务器上的一个或者多个邻居微服务在满足其自身服务质量需求下的资源剥夺方案,其中所述第二神经网络模型是以一种或者多种微服务在不同资源分配方案下的运行状态参数及其对应微服务在满足其自身服务质量需求下的可剥夺资源作为训练样本进行训练获得的;所述控制逻辑,还用于在新增微服务的已分配资源和根据资源剥夺方案确定的一个或者多个邻居微服务的可剥夺资源能满足新增微服务的资源需求时,剥夺所述一个或者多个邻居微服务的资源并分配给新增微服务。

在本发明的一些实施例中,按照以下方式预先训练第二神经网络模型:获取一种或者多种微服务在不同资源分配方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第二状态输入数据;获取为训练用的每条第二状态输入数据标记的其对应微服务在满足其自身服务质量需求下的资源剥夺方案作为训练标签;用所述训练用的多条第二状态输入数据及对应的训练标签对第二神经网络模型进行多轮训练至收敛,得到所述预先训练的第二神经网络模型。

在本发明的一些实施例中,用于经预处理得到第二状态输入数据的多个参数或者用于经预处理得到训练用的多条第二状态输入数据中的每条第二状态输入数据包括系统状态参数和第二组微服务状态参数。

在本发明的一些实施例中,所述第二组微服务状态参数包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数、预期QoS下降百分比、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽。

在本发明的一些实施例中,资源剥夺方案包括:目标CPU核数、目标LLC路数、CPU核优先条件下的目标CPU核数、CPU核优先条件下的目标LLC路数、缓存优先条件下的目标CPU核数和缓存优先条件下的目标LLC路数。

在本发明的一些实施例中,所述参数获取模块,还用于获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到试运行时的第二影子状态输入数据;所述微服务资源调度系统还包括预先训练的第二影子神经网络模型,用于响应于控制逻辑的调用,在任意目标微服务需要获取更多的资源而空闲资源和一个或者多个邻居微服务的可剥夺资源均无法满足该目标微服务的资源需求时,处理第二影子状态输入数据预测特定的邻居微服务和目标微服务以多种资源共享方案共享资源后的QoS下降百分比,其中所述第二影子神经网络模型是以一种或者多种微服务在多种资源共享方案下的运行状态参数及其对应Qos下降百分比作为训练样本进行训练获得的;控制逻辑,还用于从多种资源共享方案中依次以涉及更少微服务、QoS下降百分比更少为优先选择条件选择可接受的资源共享方案,并依据可接受的资源共享方案为特定的邻居微服务和目标微服务配置共享资源。

在本发明的一些实施例中,按照以下方式预先训练第二影子神经网络模型:获取一种或者多种微服务在多种资源共享方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第二影子状态输入数据;获取为训练用的每条第二影子状态输入数据标记的其对应QoS下降百分比作为训练标签;用所述训练用的多条第二状态输入数据及对应的训练标签对第二影子神经网络模型进行多轮训练至收敛,得到所述预先训练的第二神经网络模型。

在本发明的一些实施例中,用于经预处理得到第二影子状态输入数据的多个参数或者用于经预处理得到训练用的多条第二影子状态输入数据中的每条第二影子状态输入数据包括系统状态参数和第二组微服务影子状态参数。

在本发明的一些实施例中,第二组微服务影子状态参数包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数、被共享CPU核数、被共享LLC路数、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽。

在本发明的一些实施例中,所述微服务资源调度系统还包括预先训练的第三神经网络模型,其中,所述控制逻辑,还用于在控制逻辑检测到特定微服务发生QoS违规时调用参数获取模块;所述参数获取模块,还用于响应于控制逻辑的调用以获取该特定微服务在发生QoS违规时的运行状态参数并将其中的多个参数按照预定规则进行预处理得到发生QoS违规时的第三状态数据;所述预先训练的第三神经网络模型,用于处理所述发生QoS违规时的第三状态数据以预测需要给该特定微服务追加的资源;并且,所述控制逻辑,还用于在当前可用资源满足需要给该特定微服务追加的资源的情况下,为该特定微服务追加资源。

在本发明的一些实施例中,所述控制逻辑,还用于在检测到特定微服务存在资源过度分配的情况时,调用所述参数获取模块,所述参数获取模块,还用于响应于控制逻辑的调用以获取该特定微服务在被检测到资源过度分配时的运行状态参数并将其中的多个参数按照预定规则进行预处理得到资源过度分配时的第三状态数据,所述预先训练的第三神经网络模型,还用于处理所述资源过度分配时的第三状态数据以预测该特定微服务的过剩资源;所述控制逻辑,还用于根据预测的该特定微服务的过剩资源调整该特定微服务的资源配置以从该特定微服务回收过剩资源。

在本发明的一些实施例中,用于经预处理得到第三状态数据的多个参数包括系统状态参数和第三组微服务状态参数,其中,第三组微服务状态参数包括已分配CPU核数、已分配LLC路数、当前已占用LLC大小参数和微服务响应延迟。

在本发明的一些实施例中,所述第三神经网络模型可以采用强化学习模型,按照以下方式预先训练第三神经网络模型:获取预先采集的训练集,所述预先采集的训练集内的每条样本包括初始第三状态数据、动作、下一第三状态数据、奖励值;用所述预先采集的训练集对第三神经网络模型进行多轮训练至收敛,得到预先训练的第三神经网络模型,其中,初始第三状态数据是根据微服务发生Qos违规或资源过度分配时的运行状态参数,所述动作是资源追加的动作或者资源回收的动作,下一第三状态数据是基于初始第三状态数据应用资源追加的动作或者资源回收的动作后的采集的运行状态参数得到的,所述奖励值是对该动作优劣的评分。

根据本发明的第二方面,提供一种基于第一方面所述的微服务资源调度系统实现的微服务资源调度方法,包括:为需要部署的新增微服务分配空闲资源以对新增微服务进行试运行;获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到新增微服务试运行时的第一状态输入数据;通过预先训练的第一神经网络模型处理所述新增微服务试运行时的第一状态输入数据以预测新增微服务的资源悬崖和最优资源分配区。

在本发明的一些实施例中,所述微服务资源调度方法还包括:在当前系统资源不能满足新增微服务的资源需求时通过预先训练的第二神经网络模型处理新增微服务试运行时的第二状态输入数据以预测位于同一服务器上的一个或者多个邻居微服务在满足其自身服务质量需求下的资源剥夺方案;在试运行时新增微服务已被分配的资源和根据资源剥夺方案确定的一个或者多个邻居微服务的可剥夺资源能满足新增微服务的资源需求时,通过控制逻辑剥夺所述一个或者多个邻居微服务的资源并分配给新增微服务。

在本发明的一些实施例中,所述微服务资源调度方法还包括:在任意目标微服务需要获取更多的资源而空闲资源和一个或者多个邻居微服务的可剥夺资源均无法满足该目标微服务的资源需求时,通过预先训练的第二影子神经网络模型处理第二影子状态输入数据预测特定的邻居微服务和目标微服务以多种资源共享方案共享资源后的QoS下降百分比,通过控制逻辑从多种资源共享方案中依次以涉及更少微服务、QoS下降百分比更少为优先选择条件选择可接受的资源共享方案,并依据可接受的资源共享方案为特定的邻居微服务和目标微服务配置共享资源。

在本发明的一些实施例中,所述微服务资源调度方法还包括:在控制逻辑检测到特定微服务发生QoS违规时,通过预先训练的第三神经网络模型处理发生QoS违规时的第三状态数据以预测需要给该特定微服务追加的资源;在当前可用资源满足需要给该特定微服务追加的资源的情况下,通过控制逻辑为该特定微服务追加资源。

在本发明的一些实施例中,所述微服务资源调度方法还包括:在控制逻辑检测到特定微服务存在资源过度分配的情况时,通过预先训练的第三神经网络模型处理被检测到资源过度分配时的第三状态数据以预测该特定微服务的过剩资源;通过控制逻辑根据预测的该特定微服务的过剩资源调整该特定微服务的资源配置以从该特定微服务回收过剩资源。

根据本发明的第三方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储一个或多个可执行指令;所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现第二方面所述方法的步骤。

与现有技术相比,本发明的优点在于:

本发明预先训练第一神经网络模型学习运行状态参数(如每个时钟周期指令数(IPC)、缓存未命中(Cache Miss)、内存占用等)与微服务的QoS需求相关的微服务的资源悬崖和最优资源分配区之间的关系,从而在新增微服务需要部署时,通过预先训练的第一神经网络模型预测新增微服务的资源悬崖和最优资源分配区,从而通过最优资源分配区为该新增微服务的资源分配提供更准确地参考;本发明进行资源调度的调度速度是现有技术的3.2~5.5倍,更快速地实现资源调度,提高用户体验;与最新的研究相比,本发明支持更高的负载(高达60%);本发明根据预测的微服务的资源悬崖避免在后续的资源分配过程中让该微服务掉下资源悬崖,更好地避免微服务的QoS波动,提高用户体验;

本发明可以通过第二神经网络模型可以从已分配资源的邻居微服务为新增微服务进一步获取其所需资源,使本发明支持更高的负载,而且考虑了QoS下降百分比,可以更好避免剥夺资源可能对邻居微服务造成的QoS波动,提高用户体验;

本发明可以通过第二影子神经网络模型高效地处理复杂的资源共享情况,而不会产生大量的调度开销;

本发明可以通过第三神经网络模型纠正资源过少或者过度分配的情况,更好地利用服务器的资源,以及保障服务质量。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1为根据本发明实施例的微服务资源调度系统的模块示意图;

图2为根据本发明实施例的微服务资源调度系统的工作架构示意图;

图3为根据本发明实施例的微服务资源调度系统的一个示意性工作流程示意图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如在背景技术部分提到的,现有研究依赖于性能模型,这可能会在运行时带来高调度开销,并且移植困难,设计一个精确的模型也是一项具有挑战性的工作。而且,现有技术无法探测资源悬崖,导致资源分配过程无法避免资源悬崖导致服务质量波动,现有技术也难以准确、快速找到最优资源分配区。本发明为解决上述现有的技术缺陷,为了避免资源悬崖的问题,快速响应当前运行状态参数的变化,本发明通过预先训练的第一神经网络模型来预测资源悬崖和最优资源分配区,以便本发明的微服务资源调度系统能够自动探测并避免资源悬崖,并根据最优资源分配区为微服务分配满足其服务质量需求(QoS需求)的所需资源。

在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:

微服务,是指将传统的单体应用进行服务拆分,按照业务和功能需求从横向或者纵向分解成为相互独立的微型服务。每个微服务都能够单独的运行多个实例,微服务之间尽可能逻辑独立。

LLC路数,是指末级缓存(Last Level Cache)的路数。

CPU核数,是指中央处理器(Central Processing Unit)的核(Core)数。

参见图1,根据本发明的一个实施例,本发明提供一种微服务资源调度系统,包括:控制逻辑、参数获取模块和预先训练的第一神经网络模型。优选的,该微服务资源调度系统还包括预先训练的第二神经网络模型、预先训练的第二影子神经网络模型、预先训练的第三神经网络模型中的至少一个模型。

根据本发明的一个实施例,控制逻辑连接于参数获取模块、预先训练的第一神经网络模型、预先训练的第二神经网络模型、预先训练的第二影子神经网络模型、预先训练的第三神经网络模型。控制逻辑用于为需要部署的新增微服务分配空闲资源以对新增微服务进行试运行;以及调用预先训练的第一神经网络模型、预先训练的第二神经网络模型、预先训练的第二影子神经网络模型、预先训练的第三神经网络模型完成对应的预测任务,并根据预测任务的结果来执行资源调度以满足对应微服务的资源需求。目前的服务器操作系统主要包括Windows Server、Netware、Unix、Linux。本发明可以布置于这些服务器操作系统上,为需要部署或者已经部署在其上的一个或者多个微服务进行资源调度。以Linux为例,目前的Linux操作系统的内核空间缺乏对机器学习库的支持,所以可以将控制逻辑设置于操作系统的用户空间,基于Python和C语言实现。对于分配LLC资源,控制逻辑可采用Intel高速缓存分配技术(Cache Allocation Technology,CAT)控制缓存分配方式,并支持动态调整。对于分配CPU核资源,控制逻辑可使用Linux的taskset技术为微服务分配特定的内核。

根据本发明的一个实施例,参数获取模块,用于获取各微服务运行时的运行状态参数和/或将运行状态参数按照预定规则进行预处理。参数获取模块可通过PQoS工具和性能监控单元(Performance Monitoring Unit,PMU)捕获微服务在线性能参数。其中,参数获取模块,用于获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到新增微服务试运行时的第一状态输入数据。

根据本发明的一个实施例,预先训练的第一神经网络模型,用于处理所述新增微服务试运行时的第一状态输入数据以预测新增微服务的资源悬崖和最优资源分配区。第一神经网络模型可以是利用一种或者多种微服务在不同资源分配方案下的运行状态参数以及所对应微服务的资源悬崖和最优资源分配区作为样本数据进行训练得到的。根据本发明的一个实施例,按照以下方式预先训练第一神经网络模型:获取一种或者多种微服务在不同资源分配方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第一状态输入数据;获取为训练用的每条第一状态输入数据标记的其对应微服务的资源悬崖和最优资源分配区作为训练标签;用所述训练用的多条第一状态输入数据及对应的训练标签对第一神经网络模型进行多轮训练至收敛,得到所述预先训练的第一神经网络模型。优选的,第一神经网络模型可以采用多层感知机,优选三层的多层感知机。多层感知机的每层都是一组非线性函数。本发明使用收集一种或者多种微服务在不同资源分配方案下运行时的运行状态参数组成的离线数据库来训练第一神经网络模型,直至第一神经网络模型收敛。训练时,可以通过贝叶斯优化算法调整超参数的值。设置学习率探索范围为0.0001-0.1,以交叉验证损失作为贝叶斯优化方法的目标函数。经过贝叶斯优化方法多次探索,选取能使交叉验证损失最低的学习率作为最终结果。第一神经网络模型的损失函数设置为MSE。假设预测结果为s={s

根据本发明的一个实施例,一种或者多种微服务,例如是Img-dnn、Masstree、Memcached、MongoDB、Moses、Nginx、Specjbb、Sphinx、Xapian、Login、Advertising中一种或者多种微服务。发明人在实验以及制作训练数据时是依据这些微服务中的一个或者多个微服务完成的,但是,应当理解,随着技术的发展,或者不同用户的需要,实际上,用户可以按照本发明的思想用预先收集的任何类型的微服务对应的运行状态参数来训练模型,因此,本发明对微服务的类型不作任何限制。发明人经过实验发现,在资源调度空间中存在着“资源悬崖”现象(Resource Cliff,简称RCliff现象),不仅影响着探索效率,使其难以收敛到最优调度,而且导致严重的QoS波动。RCliff现象是指在某种资源分配情况下,即使只剥夺一个核或者一个末级缓存资源,也会造成应用程序的性能断崖式下降。这种情况下,仅减少少量资源就会导致显著(大幅)的QoS下降。例如,对于微服务程序Moses而言,在已经分配了6个CPU核资源和10个末级缓存的情况下,仅剥夺1个末级缓存,响应延迟也会从34毫秒急剧增加到4644毫秒。资源悬崖包括缓存悬崖(Cache Cliff)和核心悬崖(Core Cliff)。其中,造成缓存悬崖的根本原因是局部性;而引起核心悬崖的根本原因是排队理论,当请求到达率超过可用核心时,服务请求发生堆积,延迟将急剧增加。资源悬崖可以是根据微服务的响应延迟实验获得的该微服务的资源分配情况对响应延迟的影响情况标记的。资源悬崖是在当前的运行条件下该微服务的最低资源要求,低于该最低资源要求将导致QoS大幅下降。由于不同的微服务的特性不同,因此QoS大幅下降的指标无法明确统一,需要用户根据实际情况自定义设置。通常的,减少少量资源导致响应延迟大幅增加则视为QoS大幅下降。实际情况下,微服务的最优资源分配区是根据测量不同资源分配方案下的响应延迟标记的满足其QoS需求的最优资源分配方案。根据本发明的一个实施例,用于经预处理得到新增微服务试运行时的第一状态输入数据的多个参数或者用于经预处理得到训练用的多条第一状态输入数据中的每条第一状态输入数据包括系统状态参数和第一组微服务状态参数。优选的,本发明中,此处以及其他地方提及的系统状态参数是指当前被调度的服务器系统的状态参数,包括:CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、内存带宽参数和内存利用率参数中的一个或者多个参数。优选的,第一组微服务状态参数是新增微服务自身在试运行时的状态参数,包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数。所述新增微服务的资源悬崖包括CPU核悬崖和LLC悬崖。控制逻辑在调整微服务的资源时避免因调整导致陷入或者掉下资源悬崖导致微服务的Qos波动。陷入资源悬崖表示分配给微服务的某项资源数量刚好等于资源悬崖中限定的资源数量。比如,CPU核数量或者LLC路数刚好等于资源悬崖中限定的资源数量。掉下资源悬崖表示配给微服务的某项资源数量小于资源悬崖中限定的资源数量。所述最优资源分配区包括CPU核优先条件下的CPU核资源分配、CPU核优先条件下的LLC分配、缓存优先条件下的CPU核资源分配、缓存优先条件下的LLC分配。根据本发明的一个实施例,缓存缺失参数可以采用缓存缺失率或者缓存缺失的大小作为参数。CPU核悬崖是指分配给该新增微服务的最少CPU核资源。LLC悬崖是指分配给该新增微服务的最少LLC资源。低于CPU核悬崖或者LLC悬崖中的数值将导致该新增微服务的性能出现断崖式下降。最优资源分配区中,包括两种资源分配方案,即CPU核优先条件下的第一资源分配方案(CPU核优先条件下的CPU核资源分配、CPU核优先条件下的LLC分配)和缓存优先条件下的第二资源分配方案(缓存优先条件下的CPU核资源分配、缓存优先条件下的LLC分配)。控制逻辑根据当前CPU核和LLC的可用资源情况来从中选择最终的资源分配方案。例如,控制逻辑在当前CPU核资源和LLC资源均充足时从最优资源分配区中随机选择一种资源分配方案为控制逻辑在当前CPU核资源相对于LLC资源更充足时采用第一资源分配方案,否则采用第二资源分配方案。应当说明的是,本发明的资源分配主要是以CPU核和LLC路数为资源分配对象来说明的,但并不代表本发明仅适用于这两种资源作为分配对象。例如,基于本发明的思想,还可以根据CPU核和内存带宽、LLC路数和内存带宽作为分配对象,本发明对此不作任何限制。根据本发明的一个实施例,在本发明中,有多处提及预处理,为了简便,此处统一说明。预处理是将对应的多个参数按照特定的顺序进行组织和归一化处理的过程。归一化处理可以采用最大值最小值归一化方法进行标准化处理。优选的,控制逻辑还用于保存每个微服务的资源悬崖,并在对微服务的资源调整的过程中避免资源调整导致该微服务的资源靠近或者低于资源悬崖。优选的,控制逻辑还用于接收用户对某个微服务的资源分配参数的配置,允许对微服务的资源调整的过程中让该微服务的资源等于或者靠近资源悬崖中的预测值。由此,可以让用户根据需要配置一些处于资源悬崖也可满足QoS需求的微服务对应的资源分配参数,从而更充分的利用服务器的资源。该实施例的技术方案至少能够实现以下有益技术效果:本发明预先训练第一神经网络模型学习运行状态参数(如每个时钟周期指令数(IPC)、缓存未命中(Cache Miss)、内存占用等)与微服务的QoS需求相关的微服务的资源悬崖和最优资源分配区之间的关系,从而在新增微服务需要部署时,通过预先训练的第一神经网络模型预测新增微服务的资源悬崖和最优资源分配区,从而通过最优资源分配区为该新增微服务的资源分配提供更准确地参考;本发明进行资源调度的调度速度是现有技术的3.2~5.5倍,更快速地实现资源调度,提高用户体验;与最新的研究相比,本发明支持更高的负载(高达60%);本发明根据预测的微服务的资源悬崖避免在后续的资源分配过程中让该微服务掉下资源悬崖,更好地避免微服务的QoS波动,提高用户体验。

根据本发明的一个示例,为了进一步说明第一神经网络模型的输入和输出的形式,此处通过一个按照特定的顺序进行组织但还未经归一化的样本来直观展示。例如,输入为x=(CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、内存带宽参数、内存利用率、虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数、当前已占用LLC大小参数)。应当理解,这些参数的组织顺序可以在训练第一神经网络模型前由用户根据需要定义。比如,也可以定义为:x=(CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、当前已占用LLC大小参数、内存带宽参数、内存利用率、虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数);例如,假设某个x=(152.9,1853.6,0.55,10179,4550,11711.9,1.1,1602012,1363149,3,2),表示当前试运行该新增微服务得到的运行状态参数为:CPU利用率参数:152,9%,CPU核频率参数:1853.6MHz,每个时钟周期指令数:0.55,缓存缺失参数:10179KB,当前已占用LLC大小参数:4550KB,内存带宽参数:11711.9MB/s,内存利用率:1.1%,虚拟内存占用参数:1602012KB,物理内存占用参数:1363149KB,已分配CPU核数:3,已分配LLC路数:2。对应的,第一神经网络模型的示意性的输出为y=(CPU核悬崖、LLC悬崖、CPU核优先条件下的CPU核资源分配、CPU核优先条件下的LLC分配、缓存优先条件下的CPU核资源分配、缓存优先条件下的LLC分配)。例如,假设某个y=(2,4.5,5,6.75,4,9),其表示CPU核悬崖:2,LLC悬崖:4.5MB,CPU核优先条件下的CPU核资源分配:5,CPU核优先条件下的LLC分配:6.75MB,缓存优先条件下的CPU核资源分配:4,缓存优先条件下的LLC分配:9MB。y的值可以不用经归一化处理,以便预测时直接得到所需的预测结果。在实验中,本发明使用过亿条涵盖了常用微服务的各种资源分配样本的数据采样作为训练数据。

根据本发明的一个实施例,所述参数获取模块,还用于获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到试运行时的第二状态输入数据,所述微服务资源调度系统还包括预先训练的第二神经网络模型,用于响应于控制逻辑的调用,在当前系统资源不能满足新增微服务的资源需求时处理试运行时的第二状态输入数据以预测位于同一服务器上的一个或者多个邻居微服务在满足其自身服务质量需求下的资源剥夺方案;所述控制逻辑,还用于在新增微服务的已分配资源和根据资源剥夺方案确定的一个或者多个邻居微服务的可剥夺资源能满足新增微服务的资源需求时,剥夺所述一个或者多个邻居微服务的资源并分配给新增微服务。

根据本发明的一个实施例,第二神经网络模型可以是以一种或者多种微服务在不同资源分配方案下的运行状态参数及其对应微服务在满足其自身服务质量需求下的可剥夺资源作为训练样本进行训练获得的。按照以下方式预先训练第二神经网络模型:获取一种或者多种微服务在不同资源分配方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第二状态输入数据;获取为训练用的每条第二状态输入数据标记的其对应微服务在满足其自身服务质量需求下的资源剥夺方案作为训练标签;用所述训练用的多条第二状态输入数据及对应的训练标签对第二神经网络模型进行多轮训练至收敛,得到所述预先训练的第二神经网络模型。优选的,第二神经网络模型可以采用多层感知机,优选三层的多层感知机。多层感知机的每层都是一组非线性函数。本发明使用收集一种或者多种微服务在不同资源分配方案下运行时的运行状态参数组成的离线数据库来训练第二神经网络模型,直至第二神经网络模型收敛。训练时,可以通过贝叶斯优化算法调整超参数的值。设置学习率探索范围为0.0001-0.1,以交叉验证损失作为贝叶斯优化方法的目标函数。经过贝叶斯优化方法多次探索,选取能使交叉验证损失最低的学习率作为最终结果。第二神经网络模型的损失函数可以设置为经修改的MSE损失函数。假设预测结果为s={s

根据本发明的一个实施例,用于经预处理得到第二状态输入数据的多个参数或者用于经预处理得到训练用的多条第二状态输入数据中的每条第二状态输入数据包括系统状态参数和第二组微服务状态参数。

根据本发明的一个实施例,所述第二组微服务状态参数包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数、预期QoS下降百分比、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽。

根据本发明的一个实施例,资源剥夺方案包括:目标CPU核数、目标LLC路数、CPU核优先条件下的目标CPU核数、CPU核优先条件下的目标LLC路数、缓存优先条件下的目标CPU核数和缓存优先条件下的目标LLC路数。这种情况下,资源剥夺方案内是直接给出剥夺资源后的剩余资源。其中,目标CPU核数、目标LLC路数对应于默认状态下剥夺CPU核和LLC的子方案;CPU核优先条件下的目标CPU核数、CPU核优先条件下的目标LLC路数对应于倾向于剥夺更多的CPU核的子方案;缓存优先条件下的目标CPU核数和缓存优先条件下的目标LLC路数是倾向于剥夺更多的LLC路数的子方案。由于存在一个或者多个资源剥夺方案,控制逻辑可以从一个或者多个资源剥夺方案中根据用户自定义的规则选择所需的资源剥夺方案。例如,控制逻辑从一个或者多个资源剥夺方案中选择剥夺资源最少且可补足新增微服务的所需资源的子方案。

该实施例的技术方案至少能够实现以下有益技术效果:本发明通过第二神经网络模型可以从已分配资源的邻居微服务为新增微服务进一步获取其所需资源,使本发明支持更高的负载,而且考虑了QoS下降百分比,可以更好避免剥夺资源可能对邻居微服务造成的QoS波动,提高用户体验。

根据本发明的一个示例,为了进一步说明第二神经网络模型的输入和输出的形式,此处通过一个按照特定的顺序进行组织但还未经归一化的样本来直观展示。例如,输入为x=(CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、当前已占用LLC大小参数、内存带宽参数、内存利用率、虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数、预期QoS下降百分比、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽)。假设某个x=(246.6,2540.5,0.38,11859,6912,23475.5,0.03,13421772.8,1258291.2,10,3,0.2,18,10,11286.2)。x中前11个参数所代表的含义可参考第一神经网络模型,从第12个参数往后的其余元素代表:预期QoS下降百分比:20%,位于同一服务器的邻居微服务占用的CPU核数:18,位于同一服务器的邻居微服务占用的LLC路数:10,位于同一服务器的邻居微服务占用的内存带宽:11286.2MB/s。对应的,第二神经网络模型的示意性的输出为y=(目标CPU核数、目标LLC路数、CPU核优先条件下的目标CPU核数、CPU核优先条件下的目标LLC路数、缓存优先条件下的目标CPU核数和缓存优先条件下的目标LLC路数)。例如,假设某个y=(8,2,7,2,0,0),其表示目标CPU核数:8,目标LLC路数:2,CPU核优先条件下的目标CPU核数:7,CPU核优先条件下的目标LLC路数:2,缓存优先条件下的目标CPU核数:0,缓存优先条件下的目标LLC路数:0。因为缓存优先条件下的目标CPU核数或者目标LLC路数未搜索到合适的资源剥夺策略,因此置0。

根据本发明的一个可选实施例,资源剥夺方案包括:剥夺CPU核数、剥夺LLC路数、CPU核优先条件下的剥夺CPU核数、CPU核优先条件下的剥夺LLC路数、缓存优先条件下的剥夺CPU核数和缓存优先条件下的剥夺LLC路数。其中,剥夺CPU核数、剥夺LLC路数对应于默认状态下剥夺CPU核和LLC的子方案;CPU核优先条件下的剥夺CPU核数、CPU核优先条件下的剥夺LLC路数对应于倾向于剥夺更多的CPU核的子方案;缓存优先条件下的剥夺CPU核数和缓存优先条件下的剥夺LLC路数是倾向于剥夺更多的LLC路数的子方案。前一个实施例的资源剥夺方案是直接预测剥夺后剩余的资源,此实施例是预测要剥夺多少资源。两种方案均可实现预测资源剥夺方案,用户可以根据需要选择具体的实现方式,并对应的配置训练数据即可。应当理解的是,如果是前一种方式,则可剥夺资源等于已分配资源减去资源波动方案中预测的目标资源;如果是本实施例的方式,则资源剥夺方案中的值即为预测的可剥夺资源。

根据本发明的一个实施例,所述参数获取模块,还用于获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到试运行时的第二影子状态输入数据,所述微服务资源调度系统还包括预先训练的第二影子神经网络模型,用于响应于控制逻辑的调用,在任意目标微服务需要获取更多的资源而空闲资源和一个或者多个邻居微服务的可剥夺资源均无法满足该目标微服务的资源需求时,处理第二影子状态输入数据预测特定的邻居微服务和目标微服务以多种资源共享方案共享资源后的QoS下降百分比,控制逻辑,还用于从多种资源共享方案中依次以涉及更少微服务、QoS下降百分比更少为优先选择条件选择可接受的资源共享方案,并依据可接受的资源共享方案为特定的邻居微服务和目标微服务配置共享资源。第二影子神经网络模型可以是以一种或者多种微服务在多种资源共享方案下的运行状态参数及其对应Qos下降百分比作为训练样本进行训练获得的。优选的,按照以下方式预先训练第二影子神经网络模型:获取一种或者多种微服务在多种资源共享方案下的运行状态参数并将其中的多个参数按照预定规则进行预处理得到训练用的多条第二影子状态输入数据;获取为训练用的每条第二影子状态输入数据标记的其对应QoS下降百分比作为训练标签;用所述训练用的多条第二状态输入数据及对应的训练标签对第二影子神经网络模型进行多轮训练至收敛,得到所述预先训练的第二神经网络模型。第二影子神经网络的超参数、损失函数设置可以参照第一神经网络模型进行,此处不作赘述。优选的,用于经预处理得到第二影子状态输入数据的多个参数或者用于经预处理得到训练用的多条第二影子状态输入数据中的每条第二影子状态输入数据包括系统状态参数和第二组微服务影子状态参数。优选的,第二组微服务影子状态参数包括:虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数和当前已占用LLC大小参数、被共享CPU核数、被共享LLC路数、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽。如果同一服务器的可用资源过少,并且上层调度程序仍希望增加此服务器上的负载(部署新增微服务),而且通过剥夺邻居微服务的资源也难以满足新增微服务的资源需求时(比如:所有部署在同一服务器的邻居微服务都靠近它们的资源悬崖),则本发明将启用资源共享。控制逻辑将基于第一神经网络模型和第二影子神经网络模型的协同工作来实现资源共享。控制逻辑基于第一神经网络模型预测的最优资源分配区估计新增微服务除当前分配的资源外还需要多少资源;然后,控制逻辑调用第二影子神经网络模型预测进行了资源共享的一个或者多个邻居微服务的QoS下降百分比,并根据一个或者多个邻居微服务的QoS下降百分比择优选择资源共享方案,依据资源共享方案进行资源分配。在实践中,为了最大程度地减少不利影响,可以配置共享限制参数,以最多允许三个微服务之间共享其资源。该实施例的技术方案至少能够实现以下有益技术效果:本发明可以通过第二影子神经网络模型高效地处理复杂的资源共享情况,而不会产生大量的调度开销。

根据本发明的一个示例,为了进一步说明第二影子神经网络模型的输入和输出的形式,此处通过一个按照特定的顺序进行组织但还未经归一化的样本来直观展示。例如,输入为x=(CPU利用率参数、CPU核频率参数、每个时钟周期指令数、缓存缺失参数、当前已占用LLC大小参数、内存带宽参数、内存利用率、虚拟内存占用参数、物理内存占用参数、已分配CPU核数、已分配LLC路数、被共享CPU核数、被共享LLC路数、位于同一服务器的邻居微服务占用的CPU核数、位于同一服务器的邻居微服务占用的LLC路数、位于同一服务器的邻居微服务占用的内存带宽)。假设某个x=(320,2643.1,0.76,104018,6912,16391.5,2.099,3809748.0,2726297.6,10,8,9,7,12,8,29913.2)。x中前11个参数和后3个参数所代表的含义可参考第二神经网络模型,第12~13个参数分别表示:被共享CPU核数:9,被共享LLC路数:7。对应的,第二影子神经网络模型的示意性的输出为y=(QoS下降百分比)。例如,假设某个y=(0.128),表示预期的QoS下降百分比为12.8%。

根据本发明的一个实施例,所述微服务资源调度系统还包括预先训练的第三神经网络模型,其中,所述控制逻辑,还用于在控制逻辑检测到特定微服务发生QoS违规时调用参数获取模块;所述参数获取模块,还用于响应于控制逻辑的调用以获取该特定微服务在发生QoS违规时的运行状态参数并将其中的多个参数按照预定规则进行预处理得到发生QoS违规时的第三状态数据;所述预先训练的第三神经网络模型,用于处理所述发生QoS违规时的第三状态数据以预测需要给该特定微服务追加的资源;并且,所述控制逻辑,还用于在当前可用资源满足需要给该特定微服务追加的资源的情况下,为该特定微服务追加资源。优选的,所述控制逻辑,还用于在检测到特定微服务存在资源过度分配的情况时,调用所述参数获取模块,所述参数获取模块,还用于响应于控制逻辑的调用以获取该特定微服务在被检测到资源过度分配时的运行状态参数并将其中的多个参数按照预定规则进行预处理得到资源过度分配时的第三状态数据,所述预先训练的第三神经网络模型,还用于处理所述资源过度分配时的第三状态数据以预测该特定微服务的过剩资源;所述控制逻辑,还用于根据预测的该特定微服务的过剩资源调整该特定微服务的资源配置以从该特定微服务回收过剩资源。优选的,用于经预处理得到第三状态数据的多个参数包括系统状态参数和第三组微服务状态参数,其中,第三组微服务状态参数包括已分配CPU核数、已分配LLC路数、当前已占用LLC大小参数和微服务响应延迟。根据本发明的一个实施例,第三神经网络模型可以采用强化学习模型,按照以下方式预先训练第三神经网络模型:获取预先采集的训练集,所述预先采集的训练集内的每条样本包括初始第三状态数据、动作、下一第三状态数据、奖励值;用所述预先采集的训练集对第三神经网络模型进行多轮训练至收敛,得到预先训练的第三神经网络模型。其中,初始第三状态数据是根据微服务发生Qos违规或资源过度分配时的运行状态参数,所述动作是资源追加的动作或者资源回收的动作,下一第三状态数据是基于初始第三状态数据应用资源追加的动作或者资源回收的动作后的采集的运行状态参数得到的,所述奖励值是对该动作优劣的评分。第三神经网络模型的损失函数可以设置为MSE损失函数。在本发明中,以上的所有神经网络模型均可采用误差阈值方法判断收敛;预先设定较小的误差阈值,当模型误差小于该阈值时,判断模型已收敛。除此之外,还可设置最大迭代步数,当模型训练超过100000次后,停止训练。在运行时,控制逻辑可被配置为每秒监视每个微服务的QoS状态。如果检测到某个微服务出现QoS违规,则调用第三神经网络模型预测需要分配多少资源以实现理想的QoS需求,以为该微服务追加资源;如果发现某个微服务预留资源空间过大(即浪费资源),则将调用第三神经网络模型,预测有多少过剩资源,然后进行资源回收。强化学习模型是一种在线学习模型,用于动态处理第一神经网络模型发生的错误预测、环境变化和不可预测情况。相当于第一神经网络模型给出初步的预测结果,并按照该预测结果分配后,用第三神经网络模型来进行后续对各微服务的资源的动态调整。强化学习模型的关键组件是强化深度神经网络,由两个结构相同的神经网络组成,分别是策略网络和目标网络。策略网络或者目标网络可以采用三层的多层感知机。强化学习模型通过收集历史记录和运行时信息进行离线学习和在线学习,它的动作基于第一神经网络模型或第二神经网络模型的输出,从预测的最优资源分配区开始,从而极大节省了探索调度空间的时间开销。强化学习模型针对第一神经网络模型和第二神经网络模型中发生的错误预测、环境变化和不可预测情况,对微服务进行动态资源调整。离线学习是前期收集的离线数据进行训练的过程。在线学习是把预测过程中收集的历史数据放入经验池进行实时训练的过程。在运行中,本发明每秒监视每个微服务的QoS状态,如果检测到QoS违规,则调用第三神经网络模型分配更多资源以实现理想的QoS需求;如果发现微服务预留资源过大,则调用第三神经网络模型回收多余资源。其中,微服务资源调度系统中可以设置用微服务的QoS违规延迟阈值来判断是否发生QoS违规;例如,将某个微服务的QoS违规延迟阈值设置为50ms,则在该微服务的响应延迟高于50ms时则视为发生QoS违规。微服务资源调度系统中可以设置用延迟比阈值来判断是否发生资源过度分配,响应延迟比低于该延迟比阈值则视为资源过度分配;响应延迟比定义为当前响应延迟与QoS违规延迟阈值之比;假设设置为80%,当响应延迟比低于该数值则视为该微服务存在资源过度分配。应当理解,本领域还有其他判断是否QoS违规或者资源过度分配的方式,此处仅为示意,本发明对此不作任何限制。该实施例的技术方案至少能够实现以下有益技术效果:本发明可以通过第三神经网络模型纠正资源过少或者过度分配的情况,更好地利用服务器的资源,以及保障服务质量。本发明基于第三神经网络模型可以高效纠正第一神经网络模型或者第二神经网络模型中发生的错误预测、环境变化和不可预测情况,在实践中,只需要第三神经网络通过一些小的校准即可获得理想结果,性能优于基于启发式的方法。

优选的,微服务资源调度系统被配置为:对第三神经网络模型预先设置动作幅度范围。例如,将动作幅度范围设置为[-3,3],表示每个调整动作对资源的调整的幅度限制在[-3,3]的范围,以CPU核或者LLC路数的调整为例,表示每个动作最多对CPU核或者LLC路数减少或者增加3个。这样共有7x7=49种动作策略。在实际操作时,可以预先定义,用0-48分别表示各个动作策略,每个数值分别代表动作函数(Action_Function):{|m属于[-3,3],n属于[-3,3]}的一种取值,m为CPU核的变化量,n为LLC路数的变化量。例如,0代表着<-3,-3>即,减少3个CPU核和3个LLC路数的分配,1代表着<-3,-2>即减少3个CPU核和2个LLC路数,……,48代表着<3,3>即增加3个CPU核和3个LLC路数,这种对应关系不唯一,使用时预先根据需要设置即可,本发明对此不作任何限制。该实施例的技术方案至少能够实现以下有益技术效果:本发明具有处理以下情况的能力:环境或者用户需求发生变化,导致第一神经网络模型或者第二神经网络模型预测不准确,发生错误预测,导致一些微服务的资源过剩或者资源不足,从而通过第三神经网络模型来执行预测需要回收或者追加的资源,实现微服务的资源动态调整,从而更好地为各个微服务分配适宜的资源;不同于现有技术不断地调整微服务的资源来尝试微服务的最优分配方案,本发明能够在检测到发生QoS违规或者资源过度分配时重新分配资源,可以避免不必要的调度动作,减少微服务的QoS波动。

根据本发明的一个实施例,参见图2,为了简便,用以下简写或者标记代替如下术语:OSML:控制逻辑;模型A:第一神经网络模型;模型B:第二神经网络模型;模型B’:第二影子神经网络模型;模型C:第三神经网络模型;OAA:最优资源分配区;RCliff:资源悬崖。OSML在线采样运行状态参数,并调用模型A、模型B、模型B’或者模型C来完成对服务器的硬件资源的资源调度工作。模型C包括策略网络和目标网络,模型C可通过经验池进行训练在线训练。本发明的机器学习模型(模型A、模型B、模型B’、模型C可以基于TensorFlow(版本为1.13.0-rc0),并可以在CPU或者GPU上运行。

根据本发明的一个实施例,参见图3,本发明系统的一个示意性的工作流程可以采用以下4个算法来说明:

对于部署新增微服务:

K1:控制逻辑判断是否有新增微服务到达,若是,控制逻辑调用算法1,若否,重复本步骤;

算法1:

A1:模型A预测OAA,进入步骤A2:

A2:判断可用资源是否满足分配要求,若是,转至步骤A3,若否转至步骤A4;

A3:根据OAA给微服务分配资源;

A4:调用模型B预测在允许的QoS下降下微服务被剥夺的最小资源,转至步骤A5;

A5:判断可用资源与可剥夺资源是否满足分配需求,若是,则转至步骤A3,若否,则转至步骤A6;

A6:如果必须运行该微服务则调用算法4;

对于检测到QoS违规:

K2:控制逻辑判断是否检测到微服务QoS违规,若是,调用算法2,若否,重复本步骤;

算法2(用于让微服务资源分配达到OAA):

C1:模型C预测资源追加动作;

C2:判断可用资源是否满足资源追加动作,若是,转至步骤C3,若否,调用算法4尝试资源共享;

C3:给发生QoS违规的微服务追加资源;

对于检测到资源过度分配:

K3:控制逻辑判断是否检测到微服务资源过度分配,若是,则调用算法3,若否,则重复本步骤;

算法3(用于回收过剩资源):

C4:模型C预测资源回收动作,转至步骤C5;

C5:判断回收过剩资源后是否仍满足QoS,若是,则转至步骤C6,若否,则转至步骤C7;

C6:执行资源回收动作;

C7:撤销资源回收动作。

下面进一步通过示意性的算法示例来说明这4个算法:

算法1:使用机器学习进行资源分配,仅选择OAA中的一个策略

第1行:对于即将到来的微服务,将其映射到空闲资源上,捕获其2秒(默认)内的运行时参数;

第2行:将这些参数作为模型A的输入;

第3行:模型A输出:(1)满足目标服务质量的OAA;(2)当前环境下的RCliff;

第4行:如果空闲资源满足OAA,则:

第5行:使用OAA中的一个资源分配方案分配资源;

第6行:结束当前选择语句;

第7行:如果空闲资源不足,则:

第8行:计算空闲资源与它的OAA之间的差值,即<+cores,+LLC ways>(为了满足QoS仍然短缺的资源数目);

第9行:计算空闲资源与RCliff的差值,即<+cores’,+LLC ways’>(需要谨慎使用,避免进入RCliff);

第10行:对于每个运行中的微服务程序,执行:

第11行:如果该程序能接受一个确定的Qos下降,则:

第12、13行:使用模型B推断在允许的Qos下降下该程序可被剥夺的最小资源情况(B-Points);

第14行:结束当前选择语句;

第15行:结束当前循环语句;

第16行:记录每个微服务的QoS下降对应的B-Point;

第17行:根据B-Points找到最适合满足OAA/RCliff的解决方案,最多只涉及3个微服务;

第18行:如果解决方案可以满足OAA或RCliff的要求,则:

第19行:根据OAA调整资源分配;

第20行:否则:

第21行:如果不共享资源,则无法在此服务器上运行该微服务程序;

第22行:结束当前选择语句;

第23行:模型B调用结束;

第24行:将结果上报给上级调度器,如果需要,则调用算法4进行共享。

算法1第17行是根据微服务的B-Points为即将到来的微服务分配资源,一个示意性工作流程如下:

将所有微服务按其B-Points中可提供的资源(CPU核数、LLC路数)数目总和由大到小排序;

对于即将到来的微服务所需核数、LLC路数,在两次循环中分别设置为:<+cores,+LLC ways>或<+cores’,+LLC ways’>,执行:

对于前三个微服务,当即将到来的微服务所需核数或LLC路数大于0时,执行:

从该微服务B-Points中所有的方案中选取一种,使得在将资源分配给即将到来的微服务后,所需核数、LLC路数之和最小;

结束当前循环语句(从前三个微服务中选择分配方案);

如果即将到来的微服务资源需求已被满足,则:

成功,返回资源调度方案;

结束当前选择语句;

结束当前循环语句(所需资源数目分别根据OAA和RCliff设置);

调度失败返回。

算法2,处理资源不足情况

第1行:对于每个已分配资源的微服务,执行:

第2行:如果其QoS未得到满足(延迟更高),则:

第3行:将当前运行状态参数转发至模型C;

第4行:模型C通过Action_Fun函数输出一个资源追加动作;

第5行:将模型C的输出()返回给OSML的中央控制器;

第6行:如果当前空闲资源满足,则:

第7行:OSML分配资源,跳转到第2行;

第8行:否则:

第9行:调用算法4与其他程序共享资源;

第10行:结束当前选择语句(分配资源或者调用算法4);

第11行:结束当前选择语句(给发生了QoS违规的程序增加资源);

第12行:结束当前循环语句。

算法3:处理资源过度分配的情况

第1行:对于每个已分配资源的微服务程序,执行:

第2、3行:如果资源分配过度,则:

第4行:将当前运行状态参数转发至模型C;

第5行:模型C输出一个资源回收动作;

第6行:将模型C的输出()返回给OSML的中央控制器;

第7行:OSML回收资源;

第8行:如果该程序多余资源被回收后发生QoS违规,则:

第9行:OSML撤销资源回收动作;

第10行:结束当前选择语句(发生QoS违规的处理语句);

第11行:结束当前选择语句(资源回收操作);

第12行:结束当前循环语句。

算法4,处理微服务程序之间的资源共享

第1行:注释,OSML尝试跨RCiff进行分配资源。

第2行:模型A推断新的微服务程序在其当前分配的资源之外还需要多少资源,与邻居微服务程序进行资源共享;

第3行:对每一个潜在的可共享资源的邻居微服务程序,执行:

第4行:对该邻居微服务程序执行资源共享策略;

第5行:使用模型B’预测该邻居微服务程序在共享资源后产生的Qos下降;

第6行:结束当前循环语句;

第7行:如果OSML可以接受邻居微服务程序的Qos下降,则:

第8行:OSML进行资源共享操作;

第9行:否则:

第10行:OSML将微服务程序迁移到另一个节点;

第11行:结束当前选择语句。

算法4中,+core,+LLC ways指的是这个微服务要达到它的QoS需求,还需要多少资源。比如预测得到微服务的OAA是10核10路,但是系统只有8核8路的空余资源,那么+core+LLCway分别为2和2。例如,对于正在运行的其他待剥夺资源的微服务,分析[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]这九种剥夺情况,在这里指剥夺策略中的核数和way数)会引起他们多大的QoS下降百分比,如果能接受,就能提供多少可供剥夺的资源。先基于涉及微服务的数量来选择涉及更少微服务的资源共享方案,如果多个方案涉及的微服务的数量相同,再基于QoS下降来选择其中QoS下降更少的资源共享方案。

根据本发明的一个方面,还提供一种基于前述微服务资源调度系统实现的微服务资源调度方法,包括:为需要部署的新增微服务分配空闲资源以对新增微服务进行试运行;获取试运行期间的运行状态参数并将其中的多个参数按照预定规则进行预处理得到新增微服务试运行时的第一状态输入数据;通过预先训练的第一神经网络模型处理所述新增微服务试运行时的第一状态输入数据以预测新增微服务的资源悬崖和最优资源分配区。根据本发明的一个实施例,所述微服务资源调度方法还包括:在当前系统资源不能满足新增微服务的资源需求时通过预先训练的第二神经网络模型处理试运行时的第二状态输入数据以预测位于同一服务器上的一个或者多个邻居微服务在满足其自身服务质量需求下的可剥夺资源;在新增微服务的已分配资源和一个或者多个邻居微服务的可剥夺资源能满足新增微服务的资源需求时,通过控制逻辑剥夺所述一个或者多个邻居微服务的资源并分配给新增微服务。根据本发明的一个实施例,所述微服务资源调度方法还包括:在任意目标微服务需要获取更多的资源而空闲资源和一个或者多个邻居微服务的可剥夺资源均无法满足该目标微服务的资源需求时,通过预先训练的第二影子神经网络模型处理第二影子状态输入数据预测特定的邻居微服务和目标微服务以多种资源共享方案共享资源后的QoS下降百分比,通过控制逻辑从多种资源共享方案中依次以涉及更少微服务、QoS下降百分比更少为优先选择条件选择可接受的资源共享方案,并依据可接受的资源共享方案为特定的邻居微服务和目标微服务配置共享资源。根据本发明的一个实施例,微服务资源调度方法还包括:在控制逻辑检测到特定微服务发生QoS违规时,通过预先训练的第三神经网络模型处理发生QoS违规时的第三状态数据以预测需要给该特定微服务追加的资源;在当前可用资源满足需要给该特定微服务追加的资源的情况下,通过控制逻辑为该特定微服务追加资源。根据本发明的一个实施例,所述微服务资源调度方法还包括:在控制逻辑检测到特定微服务存在资源过度分配的情况时,通过预先训练的第三神经网络模型处理被检测到资源过度分配时的第三状态数据以预测该特定微服务的过剩资源;通过控制逻辑根据预测的该特定微服务的过剩资源调整该特定微服务的资源配置以从该特定微服务回收过剩资源。该微服务资源调度方法的一些技术细节已在前面的微服务资源调度系统中描述,可参考前面的实施例,此处不作赘述。

总体来说,本发明采用多机器学习模型(第一神经网络模型、第二神经网络模型、第二影子神经网络模型、第三神经网络模型)协作的技术,通过第一神经网络模型、第二神经网络模型、第二影子神经网络模型来避免资源悬崖并快速提供资源分配、调整的最佳解决方案。本发明还利用DQN模型(第三神经网络模型)来动态管理分配资源,并在发生QoS违规和资源超额配置(资源过度分配)的情况下执行重新分配(动态调整)。本发明避免了在先前的调度程序中经常由资源悬崖问题引起的QoS下降,并避免了不必要的调度动作。此外,由于每个模型都是轻量级的,并且其功能已明确定义,因此很容易定位问题并在出现问题时进行调试。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

相关技术
  • 一种微服务资源调度系统和方法
  • 一种微服务资源调度系统及方法
技术分类

06120112758862