以下内容基于华为 FusionCompute 关于计算虚拟化相关文档整理。
由于各家厂商技术实现有区别,本文内容适用于华为 FusionCompute 虚拟化,其他厂商如 SmartX、深信服、Nutanix、VMware 等,请阅读其相关技术文档确认。
什么是CPU QoS
虚拟机的CPU QoS用于保证虚拟机的计算资源分配,隔离虚拟机间由于业务不同而导致的计算能力相互影响,满足不同业务对虚拟机计算性能的要求,最大程度复用资源,降低成本。
创建虚拟机时,可根据虚拟机预期部署业务对CPU的性能要求而指定相应的CPU QoS。不同的CPU QoS代表了虚拟机不同的计算能力。指定CPU QoS的虚拟机,系统对其CPU的QoS保障,主要体现在计算能力的最低保障和资源分配的优先级。
CPU QoS包含如下三个参数:
- CPU 资源份额
- CPU 资源预留
- CPU 资源限额、
CPU资源份额
解释
CPU份额(Shares)定义多个虚拟机在竞争物理CPU资源的时候按比例分配计算资源。
举例
以一个主频为2.8GHz的单核物理主机为例,如果上面运行有三台单CPU的虚拟机。
三个虚拟机A,B,C,份额分别为1000,2000,4000。注意:举例仅为说明CPU份额的概念,实际应用过程中情况会更复杂
竞争场景行为
物理主机主频2.8GHz,三台虚拟机满负载运行:
- 份额比例
- A:B:C = 1000:2000:4000 = 1:2:4
- 资源分配:
- 虚拟机A:2.8GHz / 7 * 1 = 400MHz
- 虚拟机B:2.8GHz / 7 * 2 = 800MHz
- 虚拟机C:2.8GHz / 7 * 4 = 1600MHz
非竞争场景行为
CPU份额只在各虚拟机竞争计算资源时发挥作用,如果没有竞争情况发生,有需求的虚拟机可以独占物理CPU资源。
如果虚拟机B和C均处于空闲状态,虚拟机A可以获得整个物理核即2.8GHz的计算能力。
CPU资源预留
解释
CPU资源预留定义了多个虚拟机竞争物理CPU资源的时候分配的最低计算资源。
如果虚拟机根据份额值计算出来的计算能力小于虚拟机预留值,调度算法会优先按照虚拟机预留值的能力把计算资源分配给虚拟机,对于预留值超出按份额分配的计算资源的部分,调度算法会从主机上其他虚拟机的CPU上按各自的份额比例扣除,因此虚拟机的计算能力会以预留值为准。
如果虚拟机根据份额值计算出来的计算能力大于虚拟机预留值,那么虚拟机的计算能力会以份额值计算为准。
举例
以一个主频为2.8GHz的单核物理主机为例,如果上面运行有三台单CPU的虚拟机。
三个虚拟机 A,B,C,份额分别为1000,2000,4000。
三个虚拟机 A,B,C,预留值分别为 700MHz,0MHz,0MHZ。
竞争场景行为
物理主机主频2.8GHz,三台虚拟机满负载运行:
-
虚拟机A
- 如果按照份额分配,本应得400MHz,但由于其预留值大于400MHz,因此最终计算能力按照预留值700MHz算。
- 多出的(700-400)MHz按照B和C各自的
份额比例从B和C处扣除。
-
虚拟机B:
- 获得的计算能力约为(800-100)MHz
-
虚拟机C:
- 获得的计算能力约为(1600-200)MHz。
非竞争场景行为
CPU预留只在各虚拟机竞争计算资源时发挥作用,如果没有竞争情况发生,有需求的虚拟机可以独占物理CPU资源。
如果虚拟机B和C均处于空闲状态,虚拟机A可以获得整个物理核即2.8GHz的计算能力。
CPU资源限额
解释
CPU资源限额控制虚拟机占用物理CPU资源的上限。
举例
以一个2 vCPU的虚拟机为例,如果设置该虚拟机CPU上限为3GHz,则该虚拟机的两个vCPU计算能力被限制为1.5GHz。

1894

被折叠的 条评论
为什么被折叠?



