`
8366
  • 浏览: 810133 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

物理CPU与VCPU的关系梳理总结

 
阅读更多

http://support.huawei.com/ecommunity/bbs/10258020.html

 

背景说明:
在项目和培训中多次被问题FusionSphere物理CPU和vCPU的对应或分配关系,一个物理CPU能虚拟出多少个vCPU,一个vCPU的主频是多少等问题。设置了CPU预留、份额与限制之后又是什么情况。
看过之前的一些讨论,也没有定论,本着实践是检验整理的唯一标准,本文通过实验,并对照相关文档来梳理这些问题,希望能让大家有更清楚的理解。

1. 系统可用的VCPU总数计算

服务器CPU信息:
1台R2288H V3,2个CPU, 10 核,超线程为2。总共2x10x2= 40个thread,每个Thread 2.3GHz。
Haswell EP CPU 02311CDJ BC1M12CPU X86 series,2300**z,1.8V,64bit,105000mW,Haswell EP Xeon E5-2650 v3,10Core,with heatsink 2 2
服务器BMC管理界面上查看 CPU信息 

Intel官网看到E5-2650的信息


http://ark.intel.com/products/81705/Intel-Xeon-Processor-E5-2650-v3-25M-Cache-2_30-GHz
在主机上部署FusionCompute R5C00, 登录CNA主机运行xentop命令查看CPU信息
CPUs:40 @ 2294 **z,主频总容量为40 x 2.294 GHz = 91.76 GHz。
Domain 0默认配置2个VCPU,占用2 x 2.294 = 4.588 GHz
用户可用的主频总容量 = 91.76 - 4.588 = 87.172 GHz

FC portal上查看CPU信息,总容量87.17GHz正好等于系统总容量减去Domain 0占用的容量。


结论1: 系统可用的vCPU总数(逻辑处理器) = Socket数(CPU个数)x Core数(内核)x Thread数(超线程)
1个VCPU = 1个超线程Thread。如下图:



CPU QoS
如图所示,CPU预留容量为4.59GHz,可用容量为82.58GHz,说明除了VRM01的2个VCPU预留容量4588**z之外的VCPU主频均 是可用的,尽管该环境已创建了7台4 VCPU的VM,还可以创建更多VM,这些VM的VCPU总数可以远远超过当前系统显示可用的38个VCPU。

在不对VRM01的VCPU进行限制的情况下,将VCPU份额自定义为128000,显示可使用的CPU数为38,说明如果需要的话VRM01可以占用该主机上的除了Domain 0之外的所有VCPU(Domain 0占用了2个VCPU)。





2. 虚拟机VCPU的分配与调度
对虚拟机来说,不直接感知物理CPU,虚拟机的计算单元通过vCPU对象来 呈现。虚拟机只看到VMM呈现给它的vCPU。在VMM中,每个vCPU对应一个VMCS(Virtual-Machine Control Structure)结构,当VCPU被从物理CPU上切换下来的时候,其运行上下文会被保存在其对应的VMCS结构中;当VCPU被切换到PCPU上运 行时,其运行上下文会从对应的VMCS结构中导入到物理CPU上。通过这种方式,实现各vCPU之间的独立运行。
从虚拟机系统的结构与功能划分可以看出,客户操作系统与虚拟机监视器共同构成了虚拟机系统的两级调度框架,如图所示是一 个多核环境下虚拟机系统的两级调度框架。客户操作系统负责第2 级调度,即线程或进程在vCPU 上的调度(将核心线程映射到相应的VCPU上)。虚拟机监视器负责第1 级调度, 即vCPU在物理处理单元上的调度。两级调度的调度策略和机制不存在依赖关系。vCPU调度器负责物理处理器资源在各个虚拟机之间的分配与调度,本质上即 把各个虚拟机中的vCPU按照一定的策略和机制调度在物理处理单元上可以采用任意的策略来分配物理资源, 满足虚拟机的不同需求。vCPU可以调度在一个或多个物理处理单元执行(分时复用或空间复用物理处理单元), 也可以与物理处理单元建立一对一固定的映射关系(限制访问指定的物理处理单元)。



3. CPU QoS说明
Hypervisor 层根据分时复用的原理实现对VCPU的调度,CPU QoS的原理是定期给各VCPU分配运行时间片,并对各VCPU运行的时间进行记账,对于消耗完时间片的虚拟CPU将被限制运行,直到获得时间片。以此控 制虚拟机获得物理计算资源的比例。以上分配时间片和记账的时间周期很短,对虚拟机用户来说会感觉一直在运行。
CPU预留定义了分配给该VM的最少CPU资源。
CPU限制定义了分配虚拟机占用CPU资源的上限。
CPU份额定义多个虚拟机在竞争CPU资源的时候按比例分配。
CPU份额只在各虚拟机竞争计算资源时发挥作用,如果没有竞争,有需求的虚拟机可以独占主机的物理CPU资源。
如果虚拟机根据份额值计算出来的计算能力小于虚拟机预留值,调度算法会优先按照虚拟机预留值分配给虚拟机,对于预留值超出按份额分配的计算资源的部分,调度算法会从主机上其他虚拟机的CPU上按各自的份额比例扣除。
如果虚拟机根据份额值计算出来的计算能力大于虚拟机预留值,那么虚拟机的计算能力会以份额值计算为准。
以一台主频为2800**z的单核物理机为例,如果满负载运行3台单VCPU的虚拟机A、B、C,分配情况如下。


结论2:由于采用分时复用的方式,在不做VCPU预留的条件下,系统可分配 给VM的VCPU总数远远大于实际可提供的VCPU数目(具体能创建多少额外的VCPU依赖于物理CPU的性能和VCPU的使用情率),在出现资源争用的 时根据CPU QoS中的预留和份额来分配资源。

 

---------------------------------------------

 

云计算vCPU资源计算公式(**z)

http://support.huawei.com/ecommunity/bbs/10254390.html

 

vCPU 资源 = 物理CPU个数 * 物理CPU核数 * 单核线程数 * CPU频率

举例:1个CPU,双核,每核2个线程,3.0GHz,那么vCPU资源 = 1 * 2 * 2 * 3.0GHz = 12GHz = 12000**z。

FusionCompute发放虚拟机流程中可对CPU资源进行限制,有2个重要参数:
份额预留:分配的vCPU资源最小值
份额限制:分配的vCPU资源最大值

份额预留<=份额限制

只有将份额预留选最大值时,vCPU独占1个物理CPU线程

举例:创建1台2U2G的虚拟机,份额预留最大值为 2 * 3000**z = 6000**z。

虚拟化场景,重载,许多情况下1台虚拟机每vCPU独占1个物理CPU线程。因此,为了云计算工程师快速方便估算物理服务器可承载的虚拟机数量,可认为1个物理CPU线程 = 1个vCPU。

举例1:虚拟化场景,10台服务器,每台服务器2路8核2.8GHz的CPU,提供的vCPU个数 = 10 * 2 * 8 * 2 = 320个vCPU,可承载2U2G的虚拟机160个。

举例2:虚拟化场景,10台服务器,每台服务器2路8核2.8GHz的CPU,提供的vCPU资源 = 10 * 2 * 8 * 2 * 2.8GHz = 896GHz,可承载2个vCPU 2.8GHz的虚拟机160个。

桌面云场景,重载,许多情况下每个物理CPU核可承载5台虚拟机,因此,为了云计算工程师快速方便估算物理服务器的虚拟机密度,可认为 1个物理核 = 5个虚拟机。

举例:桌面云场景,10台服务器,每台服务器2路8核2.8GHz的CPU,虚拟机密度 = 10 * 2 * 8 * 5 = 800 个虚拟机。


总结:
虚拟化场景:1个物理CPU线程 = 1个vCPU
桌面云场景:1个物理核 = 5个虚拟机


说明:上述场景的计算方法仅供快速估算,准确vCPU个数、虚拟机密度与CPU型号、频率、domain0规格、虚拟机规格强相关,需要进行详细分析和计算。

 

 

分享到:
评论

相关推荐

    服务器虚拟化CPU与vCPU关系说明

    在华为FusionSphere虚拟化环境中,理解和掌握物理CPU与虚拟CPU(vCPU)的关系对于资源分配至关重要。尤其是在多核处理器广泛使用的今天,如何高效地利用硬件资源,确保虚拟机能够在不同负载下获得合适的计算资源成为了...

    CPU,Core,vCPU介绍

    vCPU的数量并非越多越好,它需要与物理CPU的核数、内存大小和I/O能力相匹配。过多的vCPU可能导致资源竞争,反而降低整体性能。此外,虚拟机的配置和管理也非常重要,合理的分配vCPU数量、内存和磁盘空间,以及优化...

    vcpu 分配规则定义1234

    首先,我们需要理解vCPU与物理CPU之间的关系。在物理服务器上,每个物理核心可以支持多个vCPU。虚拟化软件,如VMware ESXi、Microsoft Hyper-V或KVM,会将物理CPU的资源分割并分配给各个虚拟机。vCPU的数量决定了...

    vcpu.rar_Thing Thing

    vCPU与物理CPU之间的关系可以通过调度器来管理,调度器决定哪个vCPU应该在哪个物理CPU上执行,确保资源的公平分配和高效利用。 vCPU的工作原理涉及到上下文切换和指令级模拟。当一个vCPU需要执行指令时,它会通过...

    虚拟cpu

    虚拟CPU(vCPU)是虚拟机(VM)的一部分,每个虚拟机可以拥有一个或多个vCPU,它们在宿主机的物理CPU上共享资源。 虚拟CPU的工作原理主要是通过虚拟化软件,如QEMU(快速模拟器),来实现。QEMU是一个开源的系统...

    VMware Workstation 不可恢复错误 (vcpu-0)解决方法

    ### VMware Workstation 不可恢复错误 (vcpu-0) 解决方法详解 #### 一、问题概述 在使用VMware Workstation过程中,部分用户可能会遇到一个名为“不可恢复错误 (vcpu-0)”的问题。这一错误通常表现为虚拟机无法...

    Libvirt创建虚拟机的xml中部分参数解析--Domain vcpu numa

    "placement"属性可以设置为'static'或'auto',其中'static'允许你手动分配vCPU到物理CPU,而'auto'则让Libvirt自动决定最佳分配方式。 接着,我们讨论"numa"(Non-Uniform Memory Access),这是一个硬件特性,用于...

    VMWare ESX Server对CPU及内存资源的管理

    这个设置允许你控制虚拟机的vCPU与物理CPU之间的映射关系,以保持特定的性能要求或避免资源争用。 6. 是否启用超线程: 如果物理CPU支持超线程,开启此功能可以提高资源利用率,使每个物理内核能同时处理两个线程...

    虚拟机设计(模拟CPU 寄存器等)

    当vCPU执行指令时,虚拟寄存器的状态会被保存和更新,然后在适当的时候映射到物理寄存器上,使得操作系统的运行与在物理机上无异。 模拟CPU和寄存器的过程中,还涉及到内存虚拟化。虚拟机为每个操作系统分配了一段...

    虚拟机CPU平台体系结构与内存机制研究.pdf

    在传统的物理计算机中,CPU直接与硬件交互,执行指令和控制计算过程。而在虚拟环境中,这个过程有所不同。虚拟机监控器(VMM,Virtual Machine Monitor)或称作hypervisor,插入到硬件和客户操作系统之间,形成了一...

    LeoMoonCPU-Vcpu虚拟化检测工具

    LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测工具LeoMoonCPU-Vcpu虚拟化检测...

    基于VMware的服务器内存与CPU虚拟化技术研究.pdf

    【服务器内存与CPU虚拟化技术概述】 随着信息技术的飞速发展和创新,传统的IT基础设施环境面临巨大挑战。业务的快速发展导致服务器需求激增,而有限的机房空间和电力供应成为制约因素,使得服务器资源变得紧张,...

    qemu-kvm占用CPU高问题分析

    通过 mov 指令将物理 cpu 的对应寄存器状态信息导入到 vcpu_svm 结构的 vmcb 中保存。 4. kvm_exit 分析:kvm_exit 是从 Guest 模式退出到 KVM 模式的过程,handle_exit()-&gt;svm_exit_handlers 是异常退出的函数数组...

    基于任务分类的虚拟CPU调度模型.pdf

    基于任务分类的虚拟CPU调度模型(STC)对此进行了改进,将虚拟CPU(vCPU)分为两类:short vCPU和long vCPU,同时将物理CPU分为short CPU和long CPU。这种分类是根据任务的特性,特别是它们对I/O和计算的需求来划分...

    服务器TPMC值计算[参照].pdf

    在执行TPMC值计算时,需要考虑到服务器的配置、主机性能、数据库操作、内存大小、CPU数量、交换机结构等因素。 在计算TPMC值时,需要对服务器的性能进行评估,包括对服务器的配置、主机性能、数据库操作、内存大小...

    cpu虚拟化测试工具.zip

    CPU虚拟化是一种技术,它允许一个物理CPU在操作系统层面模拟多个独立的CPU,这些模拟的CPU被称为虚拟CPU或vCPU。这项技术使得在一个物理主机上可以运行多个操作系统实例,每个实例都感觉自己拥有独占的硬件资源。这...

    6-CPU 和内存虚拟化原理1

    KVM 允许 overcommit,即虚机的 vCPU 总数可以超过物理 CPU 数量,这个叫 CPU overcommit。但是,需要注意的是,使用 overcommit 的时候,需要对虚机的负载情况有所了解,需要测试。 内存虚拟化 KVM 通过内存虚拟...

Global site tag (gtag.js) - Google Analytics