共计 2672 个字符,预计需要花费 7 分钟才能阅读完成。
随着云计算市场规模的快速增长,各云厂商基础设施投入也一直减少,但行业普遍存在资源利用率低的问题,在上述背景下,晋升资源利用率曾经成为了一个重要的技术课题。
将业务辨别优先级混合部署(下文简称混部)是典型无效的资源利用率晋升伎俩。业务可依据时延敏感性分为高优先级业务和低优先级业务。当高优先级业务和低优先级业务产生资源竞争时,需优先保障高优先级业务的资源供应。
业务混部的核心技术是资源隔离管制,次要波及内核态根底资源隔离技术及用户态 QoS 控制技术。Skylark 是一种虚拟机混部场景下的 QoS 感知的资源调度器,由 openEuler Skylark 组件承载,在 Skylark 视角下,优先级粒度为虚拟机级别,即给虚拟机新增高低优先级属性,以虚拟机为粒度进行资源的隔离和管制,在保障高优先级虚拟机 QoS 前提下晋升物理机资源利用率。内核层提供了一些根底资源烦扰隔离机制,比方 CPU 调度硬优先级机制以及 SMT(硬件超线程)烦扰隔离机制等。此外集群治理系统软件 OpenStack 也须要感知虚拟机优先级,设计实现一套混部资源模型。
虚拟机混部由 openEuler 社区 OpenStack SIG、Virt SIG 以及 Kernel SIG 联合开发。本文次要介绍 Skylark 组件的功耗治理技术。
为什么须要治理功耗
随着各种混部计划的提出,服务器利用率有了显著的晋升。然而均匀利用率的进步随同着的是刹时利用率冲到 100% 的概率大幅减少。服务器个别是以睿频频率运行,当 CPU 以满负荷运行一段时间后,功耗的继续减少会大幅超过 TDP 触发 CPU 降频。因为服务器是以整颗 CPU 供电,所以同一颗 CPU 上的所有 core 将会同时降频,将会影响该 CPU 上运行的所有虚拟机对应的客户业务 QoS。当利用率升高后,功耗也升高到肯定值时,频率将再次升高到睿频。因而,高的资源利用率会间接导致 CPU QoS 降落,在虚拟机混部后须要在进步资源利用率的同时保障 CPU QoS 或者说客户业务不受到影响。
本文具体介绍并分享了功耗相干的根底概念以及虚拟机混部技术中功耗治理的技术细节。
CPU 功耗起源
CPU 的功耗次要是由晶体管工作产生,其功耗次要分为开关功耗、短路功耗和漏电功耗三类。下图为 CMOS 反向示意图。
其中,开关功耗次要是电容的充放电。例如当输出低电平时,输入端负载电容会进行一次充电。当输出变成高电平时,电容中贮存的电能会以热量的模式被开释。当 CPU 中几十亿个晶体管同时开释时,将会产生大量的热能。短路功耗则是 P 管和 N 管短路时产生的功耗。漏电功耗是 CMOS 管不能严格敞开时产生漏电所产生的功耗,与制程和温度无关。
CPU 功耗关系公式:
公式中,C 代表电容率(Capacitance),是个常数,和 CPU 的工艺相干,在 CPU 出厂时确定。P 是功耗(Power),F 是 CPU 运行的频率(Frequency),V 是电压(Voltage)。能够看出 CPU 的功耗和 CPU 运行的电压以及运行的频率成正比。而其中,电压 V 和频率有肯定的对应关系,这是因为当 CPU 的场效应管进行一次充放电须要肯定工夫,只有充放电实现后采样能力保障信号的完整性。电压越高,充电的工夫越短,即翻转的频率就越大。
TDP 是什么
TDP(Thermal Design Power)即热设计功耗,简称热功耗。它是用来批示 CPU 或者 GPU 在满负荷运行时,散热器须要达到的散热热量。依据能量守恒原理,CPU 运行须要输出能量,即电源的功率。输出的电流通过电容产生热量,以热能以及其余模式的能量散发进去,这些热能如果没有耗散掉,那么 CPU 的温度则会越来越高,影响 CPU 的运行,TDP 代表了依照 CPU 设计运行的温度范畴内须要耗散的热能,是散热零碎的重要参考指标。TDP 越大,示意 CPU 在满负荷工作产生的热量就越大。
随着睿频 2.0 技术引入,TDP 曾经不是 CPU 可能排除的最大热量了。在睿频 2.0 中,引入了 PL1、PL2、PL3、PL4、和 Tau。
PL1 是 CPU 运行在默认主频不含睿频和 AVX 的功耗,大多数状况等于 TDP。PL2 是 CPU 能够达到超过 TDP 工作的最大功率限度。能够看出在 Tau 工夫内 CPU 是能够超过 TDP 阈值运行的。PL3/PL4 个别厂家不设置,这里略过。Tau 是 CPU 能在 PL2 运行的最长工夫。
在理论生产中,因为须要思考到各种冗余以及生产平安,服务器并不能始终在最高功率下运行,而且为了爱护 CPU,甚至会设置 ” 功耗墙 ”,当功耗大于肯定阈值时,CPU 会主动调用调频接口通过升高 CPU 的频率来降低功耗。当功耗升高,CPU 温度回复失常时,CPU 频率会逐步回复到原先频率。
混部功耗治理技术
在 Skylark 虚拟机混部计划中,咱们有数据采集,QoS 实时剖析,QoS 实时控制,三个外围模块。在这三个模块中,通过以下算法实现功耗治理:
- 「功耗相干数据采集」:依据 host 上的 topo 关系,通过 MSR 寄存器,精确采集计算 CPU 每个核的频率,以及每个 package 的功耗。
- 「功耗及利用率实时剖析」:在每个定时周期中,依据设定的 TDP 阈值,标记功耗热点 package,以及降频 CPU 核,对降频核上运行的虚拟机 CPU 利用率进行排序。因为咱们要尽量保障高优先级虚拟机的 QoS,所以利用率最高的若干个低优先级虚拟机将被放入 QoS 调整队列。
- 「QoS 实时控制」:在每个 QoS 调整周期,依据 CPU 核状态,功耗热点 package,限度或复原 QoS 调整队列中虚拟机 vCPU 的 CPU 带宽,通过升高 CPU 带宽,将减小降频核的 CPU 利用率,来达到降低功耗的目标。
总结
在应用了高低优先级虚拟机混部计划之后,均匀资源利用率的进步对应着 QoS 升高的危险也随之减少。在 CPU 突发满负载运行时,可能会因功耗升高触发降频而导致 CPU QoS 降落。咱们在 Skylark 中提出了功耗治理技术,通过调整热点低优先级虚拟机 vCPU 的 CPU 带宽来间接调整功耗,保障 CPU QoS。
系列文章回顾
[1] openEuler 资源利用率晋升之道 01:概论:https://mp.weixin.qq.com/s/x9…
[2] openEuler 资源利用率晋升之道 02:典型利用下的成果:https://mp.weixin.qq.com/s/an…
[3] openEuler 资源利用率晋升之道 03:rubik 混部引擎:https://mp.weixin.qq.com/s/jJ…
[4] openEuler 资源利用率晋升之道 04:CPU 抢占和 SMT 隔离管制:https://mp.weixin.qq.com/s/8O…