面向微服务的纳秒级电力资源分配方法和系统与流程

文档序号:20009213发布日期:2020-02-22 03:54阅读:142来源:国知局
面向微服务的纳秒级电力资源分配方法和系统与流程

本发明涉及的是一种电力系统智能控制领域的技术,具体是一种数据中心中面向微服务的纳秒级的电力资源分配的方法和系统。



背景技术:

近些年,云应用正在从大型的、单一的软件架构转化成微服务架构。在微服务架构下,一个巨型的应用程序被拆分成数十个甚至数百个相互独立的、差异的微服务。每个微服务执行不同的命令,用于不同的服务和功能,通常能够在数百微秒时间内进行响应。最重要的是,通过将巨型的应用划分成许多轻量的、进程级的微服务,微服务架构能够更加充分地呈现应用内部的差异性,进而允许针对每个微服务实现更为细粒度地、差异化的电力资源管理。然而,数据中心现存电力资源分配方法存在宏观控制延迟和微观执行延迟。宏观控制延迟通常超过10秒,主要是由于基础设施层面上迭代的、重复的电力信息采集和资源控制过程造成的;微观执行延迟通常在10~31毫秒之间,主要是服务器端缓慢的系统级层功耗调节技术导致的。因此,现存的电力资源分配方法通常需要花费几毫秒甚至几秒,难以追踪微服务的微秒级变化的异构特性,进而释放微服务带来的节能潜力。



技术实现要素:

本发明针对现有技术存在的上述两重延迟,提出一种面向微服务的纳秒级电力资源分配方法和系统,能够实现针对异构微服务的纳秒级的功耗管理和分配,充分地挖掘异构微服务带来的节能潜力,从而进一步打破传统数据中心节能限制的目标。

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

本发明涉及一种面向微服务的纳秒级电力资源分配方法,采用灵活功耗预算方法根据每个微服务独特的功耗性能模型划分其对应的可分配的功率以消除宏观调控延迟;然后采用本地功耗调制设计绕过服务器系统层的功耗管理和控制程序,直接调用处理器片上的电压调制模块执行针对每个微服务的功耗分配过程以消除微观执行延迟;最后通过透明映射机制记录并更新灵活功耗预算方法以及本地功耗调制设计的调整结果,实现电力资源优化分配。

所述的灵活功耗预算方法包括:创建功耗性能模型来描述不同微服务在动态环境下的性能(即响应时间)和所分配的功耗之间的关系,从而可以量化不同微服务的功耗分配的差异性;然后根据微服务功耗与性能关系的异构性将电力资源划分给最有影响力的微服务,即优先为最有影响力的微服务进行电力资源预算,可以在不影响整个应用的性能下,最大化地提升电力资源利用率。

所述的创建,采用基于决策树的方法来为每个微服构建功耗性能模型,即每一个微服务的功耗性能模型是一棵独立的决策树,决策树的每一个叶子结点表示微服务在某一负载条件下功耗与性能之间的关系。

所述的基于决策树的方法,具体步骤包括:

①采集并且保存一个微服务在不同负载状态、不同功耗情况下的运行日志。

②解析运行日志得到决策树的输入数据集,将输入数据集分成训练数据集部分和测试数据集部分。

所述的输入数据集中每行数据包含该微服务的负载大小以及当前负载状态下功耗与性能之间的关系。

③利用训练数据集部分训练决策树,该训练过程动态迭代地扩展树的深度,即每一次迭代过程产生的子节点将父节点的负载区间平均地划分成全无遗漏又互斥的子区间,并且计算同一父节点下的兄弟子节点,即每个负载子区间下功耗与性能关系的平均误差值;当误差值小于等于5%,则该父节点下迭代停止,反之进行下一轮迭代;当所有兄弟子节点的功耗与性能之间的关系误差值都小于等于5%,整个训练过程结束,反之进行下一轮迭代。

④利用测试数据集部分对训练后的决策树进行测试,以检测测试数据集中某一负载下的功耗与性能之间的关系和决策树计算的功耗与性能之间的关系平均误差值是否小于5%;当误差小于等于5%,则判定决策树表示的功耗性能模型是准确有效;否则判定功耗性能模型不准确并更新模型。

所述的决策树的根节点表示最大的负载区间,所有叶子结点的负载区间是最大负载区间的划分,每一个叶子结点保存了当前子负载区间下微服务的功耗与性能之间的关系。

优选地,步骤①中所述的微服务的不同负载变化采用阿里巴巴开源的数据中心运行数据集中的负载变化情况。

优选地,步骤②中,所述的输入数据集包含1000条数据,其中所述的训练数据集包含800条数据,所述的测试数据集包含200条数据。

所述的更新模型是指:采用更新决策树的叶子结点或重新构建决策树的方式提升模型的准确率。

所述的更新决策树的叶子结点是指:不断计算微服务实际响应时间和按照叶子结点存储的模型计算的响应时间之前的平均误差值,当误差小于等于5%,则不更新叶子结点;否则利用微服务在该叶子结点表示的负载区间下最近的运行日志,重新计算该叶子结点下的功耗性能模型。

所述的重新构建决策树是指:当一个微服务的性质发生巨大改变,即服务重构或者增加新的微服务时,则采用基于决策树的方法重新为该微服务或者新增微服务构建决策树。

所述的划分是指:根据功耗性能模型将微服务划分为三类优先级队列的不同级层中,从而将有限的电力资源按微服务的高优先级到低优先级队列的顺序逐次预算,具体步骤包括:

①确定功耗与性能关系的临界条件:一个微服务提供最大的功耗下降,即节能潜力刚好不会导致整个应用性能受到影响。

所述的临界条件通过以下方式确定:选择整个应用所有微服务最大的响应时间为基准时间,功耗从最大降低到最小时,响应时间从0增加到基准时间的变化直线为临界功耗与性能之间的关系线,即临界条件。

②当微服务的功耗与性能之间的关系斜率小于临界条件的斜率,但是随着可分配的功耗降低,最终导致响应时间大于基准时间,则这部分微服务被放进优先级为1,即最高优先级的队列中。

③当微服务的功耗与性能之间的关系斜率大于临界条件的斜率,但是随着可分配的功耗降低,最终导致响应时间大于基准时间,则这部分微服务被放进优先级为2的队列中。

④随着可分配的功耗降低,微服务的响应时间总是小于等于基准时间,则这部分微服务被放进优先级为3的队列中。

所述的本地功耗调制设计通过设置一组寄存器、一个用于实时监听该寄存器状态的后台进程以及一个用于将功耗预算分配给不同的微服务的系统调用过程。

所述的设置一组寄存器是指:为处理器的每个硬件处理核配置一个同构的用于接收功耗调制消息以及快速功耗预算数值传输的寄存器。

优选地,该寄存器采用一个4比特位的寄存器,其中比特位“0”是一个脏位,表示是否需要进行功耗调制,当脏位状态为0,则表示不用改变当前功耗设置;当脏位状态为1,则表示需要改变当前功耗设置。

所述的特制寄存器的[4:1]比特位保存当前的功耗调制需求,每个处理器频率/电压可调制的值是离散的、有限的组合,[4:1]比特位每一种数值可以表示不同的组合编号。

所述的监听是指:当一组寄存器中的任意一个寄存器的脏位从0状态变为1时,触发系统调用过程修改对应硬件处理核的执行功耗。

所述的系统调用过程直接通过调用片上电压调制模块的方式修改每个硬件处理核的执行功耗,具体方式是把特制寄存器[4:1]位表示的目标功耗值直接写入处理器提供的特定的功耗管理寄存器中,比如英特尔处理器提供的ia32_perf_status_msr寄存器。

所述的透明映射机制通过硬件标签和软件标签实现调整结果的记录和更新,其中:硬件标签用于区分不同微服务在处理器上的执行过程并唯一对应在片上处理器上执行的微服务,软件标签用于区分数据中心中不同的微服务以及追踪不同微服务的生存状态。

所述的硬件标签优选为所述的一组寄存器。

所述的软件标签包括静态软件标签和动态软件标签,其中:动态软件标签唯一对应一个微服务,可以通过容器配置文件,比如yaml文件写入到运行微服务的容器中,静态软件标签是当运行一个微服务的所有容器退出时,为了避免微服务重启导致功耗性能模型的重建,而长时间保存的动态软件标签。

所述的动态软件标签的生命周期,即当运行微服务的容器第一次被创建时,就被分配一个动态软件标签;可以通过该动态软件标签查询微服务的运行状态以及功耗性能模型;最终,该动态软件标签随着运行微服务的所有容器的生命周期结束而结束。

所述的记录和更新,具体步骤包括:

①开始创建每一个微服务的容器时,为每一个微服务分配一个动态软件标签,并且获取微服务的功耗与性能之间的决策树;通过查询微服务当前状态下的功耗性能模型将为服务划分到不同的优先队列中,计算一张优先级表格,表格中的每一行记录了微服务的软件标签以及微服务的优先级和节能潜力。

②优先级表格被发送给操作系统,操作系统根据优先级表格中的软件标签和优先级分配和管理微服务执行时分配的功耗。在调度时,操作系统把一个微服务的软件标签绑定到一个硬件标签,并且将目标功耗值写入到特制寄存器的[4:1]比特位中。

③当微服务在处理器上执行时,所述的系统调用过程执行微服务分配的功耗。

本发明涉及一种实现上述方法的系统,包括:功率预算单元以及与之通过透明映射机制相连的本地功耗调制单元,其中:功率预算单元与微服务管理层面相连并采集和保存每个微服务的运行日志,并将功率预算结果输出至本地功耗调制单元;本地功耗调制单元与服务器片上电压调制系统相连,并通过特制的4比特位寄存器直接改写片上电压调制系统相关寄存器实现直接执行功耗分配过程。

所述的运行日志包括:每个微服务的运行时间和消耗功率,功率预算单元据此生成其对应的功耗-性能模型和可分配的功率。

技术效果

与现有技术相比,本发明利用决策树自动地、准确地构建微服务的功耗性能模型来主动地量化每个微服务的节能潜力,通过一个三级优先级队列挖掘和区分不同微服务的功耗与性能之间的差异性,从而实现针对每个微服务的快速地功耗预算;另一方面,本发明采用一种特制寄存器支持的片上功耗管理技术,通过一个后台进程和系统调用函数直接控制片上电压调制模块快速地执行功耗运算的分配过程;同时,本发明采用软件标签机制追踪和区分不同的微服务在云环境中的状态,采用硬件标签区分不同微服务的实际执行和功耗分配过程,实现了微服务功率预算和功耗管理的有机结合;最终,本实施例和现存数据中心功耗管理技术在功耗与性能之间的上的优势,通过能耗延迟产出(edp:energydelayproduct)进行衡量。

附图说明

图1为本发明用于划分微服务优先级等级指导规则示意图;

图2为本发明进行本地功耗调制示意图;

图3为本发明整个控制流程示意图;

图4为本发明定制的寄存器架构以及系统调用关键代码

图5为本发明的系统的模块图。

图6、图7为实施例示意图。

具体实施方式

如图5所示,本实施例涉及一种数据中心面向微服务的电力资源分配的系统,包括功率预算单元以及通过透明映射机制与之相连的本地功耗调制单元。

所述的功率预算单元包括:微服务状态采集模块、功耗性能模型生成模块、功耗性能模型更新模块、功耗决策模块和功耗计算模块,其中:微服务状态采集模块提供与微服务层面管理系统的交互的接口,用于向微服务分配软件标签,实时监控微服务的负载状态以及存储微服务运行日志;功耗性能模型生成模块和更新模块用于利用微服务的运行日志生成其独有的表示功耗性能模型的决策树以及决定如何更新或者重建决策树;功耗决策和计算模块用于区分最有影响力的微服务,将微服务划分到不同优先级队列中,将有限的电力资源根据不同微服务的优先级进行分配。

所述的功耗性能模型生成模块处理微服务运行日志并且生成功耗性能模型的决策树,具体操作包括:

i)处理所述微服务状态采集模块采集的微服务运行日志得到决策树的输入数据集,输入数据集一共包括1000行输入数据,每一行数据包括该微服务的负载大小以及当前负载状态下功耗与性能之间的关系。输入数据集被分成训练数据集和测试数据集两个部分,其中训练数据集包括800条输入数据,测试数据集包括200条输入数据。

ii)利用步骤i)中所获得的训练数据集训练决策树,从而动态地、迭代地扩展树的深度。每一次迭代过程产生的子节点将父节点的负载区间平均地划分成全无遗漏又互斥的子区间,并且计算同一父节点下的兄弟子节点,即每个负载子区间下功耗与性能关系的平均误差值,当误差值小于等于5%,则该父节点下迭代停止,反之进行下一轮迭代。当所有兄弟子节点的功耗与性能之间的关系误差值都小于等于5%,整个训练过程结束,反之进行下一轮迭代。

iii)利用步骤ii)中所获得的测试数据集对过程ii)生成的决策树进行测试,测试过程是检测测试数据集中某一负载下的功耗与性能之间的关系和决策树计算的功耗与性能之间的关系平均误差值是否小于5%;当误差小于等于5%,则决策树表示的功耗性能模型是准确有效的;当误差大于5%,则功耗性能模型是不准确的,需要更新模型。

iv)按照步骤i)~iii)生成表示微服务功耗性能模型的决策树,决策树的根节点表示最大的负载区间,所有叶子结点的负载区间是最大负载区间的划分,每一个叶子结点保存了当前子负载区间下微服务的功耗与性能之间的关系。

所述的功耗性能模型更新模块在模型不准确时更新叶子结点或者当新增微服务时重新生成决策树,具体操作包括:

i)不断计算微服务实际响应时间和按照叶子结点存储的模型计算的响应时间之前的平均误差值,当误差小于等于5%,则不更新叶子结点;

ii)当误差大于5%,则利用微服务在该叶子结点表示的负载区间下最近的运行日志,重新计算该叶子结点下的功耗性能模型。

iii)当一个微服务的性质发生巨大改变,即服务重构或者增加新的微服务时,则重新为该微服务或者新增微服务构建决策树。

所述的功耗决策模块通过和(如图1所示的)临界条件的对比,将微服务划分到三级优先级队列中,具体的操作包括:

i)当微服务的功耗与性能之间的关系斜率小于临界条件的斜率,但是随着可分配的功耗降低,最终导致响应时间大于基准时间,则这部分微服务被放进优先级为1的队列中。

ii)当微服务的功耗与性能之间的关系斜率大于临界条件的斜率,但是随着可分配的功耗降低,最终导致响应时间大于基准时间,则这部分微服务被放进优先级为2的队列中。

iii)随着可分配的功耗降低,微服务的响应时间总是小于等于基准时间,则这部分微服务被放进优先级为3的队列中。

所述的功耗分配模块根据不同微服务的优先级,将有限的电力资源优先分配给优先级为1队列中的微服务来满足他们更加严格的性能要求,最后分配给优先级为3队列中的微服务以提供最大节能空间。

所述的本地功耗调制单元包括:片上电压调制器控制模块、功耗调制请求监听模块以及数据/状态传输模块,其中:片上电压调制器控制模块通过系统调用直接将目标功耗设置写入到服务器片上电压调制系统相关的寄存器中,从而实现绕过系统层对功耗调制的控制而实现直接执行功耗分配过程;功耗调制请求监听模块通过检查数据/状态传输模块的状态实时查询是否需要对当前执行的微服务进行功耗调制。

所述的数据/状态传输模块通过基于如图4所示的特制的寄存器实现的,用于传递功耗调制目标以及通知是否需要进行功耗调制,结构包括:利用比特位“0”表示一个脏位,用于通知是否需要进行功耗调制。当脏位状态为0,则表示不用改变当前功耗设置;当脏位状态为1,则表示需要改变当前功耗设置。利用比特位[4:1]保存当前的功耗调制需求,[4:1]比特位每一种数值可以表示不同的功耗设置编号。

所述的透明的映射机制单元采用硬件标签和软件标签协调所述的灵活的功耗预算单元和本地功耗调制单元之间的工作,具体操作包括:

i)当运行微服务的容器第一次被创建时,通过容器配置文件,比如yaml文件给微服务分配一个动态软件标签。该软件标签是一个唯一的数值,用于标识一个微服务,通过该标签可以查询微服务的运行状态以及功耗性能模型;

ii)当运行一个微服务的所有容器退出时,为了避免微服务重启导致功耗性能模型的重建,长时间保存动态软件标签,也称为静态软件标签。

iii)当微服务在片上处理器上执行时被分配唯一的硬件标签,硬件标签用于区分和管理不同微服务在处理器上的执行过程,硬件标签即所述的一组寄存器。

如图6、图7所示,分别分析了工业界的微服务测试应用trainticket以及学术界的微服务测试集socialnetwork在不同情况下的结果,其中:图6分析了本方法在不同电情况下消耗的电能以及节约的能源:pb,hpb,mpb和lpb分别表示按照铭牌功率的100%,90%,85%和80%提供市电功率。如图可见,本实施例在trainticket测试集下能够节约超过20%的能源,在socialnetwork测试机下能够节约超多10%的能源;图7比较了本实施例和现存数据中心功耗管理技术在功耗与性能之间的上的优势,通过能耗延迟产出(edp:energydelayproduct)进行衡量。

图7中的5种技术方案分别表示为:(a)ant是本实施例提出向微服务的纳秒级的电力资源分配的方法和系统;(b)pc优先限制高功率微服务运行功耗来进行电源管理的策略;(c)tc优先限制运行时间短的微服务的功耗来进行功耗管理的策略;(d)cap表示现有的利用动态电压和频率扩展来限制功率;(e)cfp是只考虑静态的功耗与性能之间的关系而进行功耗管理的方法。

如上述数据可见,在相同供电功率条件下,相比其他方案,本实施例提供更低的edp,即能够保证更好的功耗与性能之间的优势。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

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