VMware中,vCPU的分配原则?

在应用使用多颗vCPU的时候,如何分配每颗插槽的CPU数量和插槽数,可以使CPU的性能得到最优化。

5回答

JerryJerry  系统架构师 , 不知名的小公司
wangyan_1wuwenpin郑金辉等赞同了此回答
在物理主机上,每个物理CPU均对应若干内存,CPU可读写所有内存的数据,但对本身对应的内存做读写操作时性能最佳。基于此,虚拟机在使用多个CPU时,可通过设置虚拟机CPU插槽,使虚拟机的CPU平均地由多个物理CPU提供,此时对单个物理CPU的压力较小,同时也能达到更佳的内存读写性能。虚拟...显示全部

在物理主机上,每个物理CPU均对应若干内存,CPU可读写所有内存的数据,但对本身对应的内存做读写操作时性能最佳。
基于此,虚拟机在使用多个CPU时,可通过设置虚拟机CPU插槽,使虚拟机的CPU平均地由多个物理CPU提供,此时对单个物理CPU的压力较小,同时也能达到更佳的内存读写性能。
虚拟机CPU插槽数量即指定了虚拟机的多个CPU可平均分布到多少个物理CPU上。因此,虚拟机CPU插槽的数量必须能整除虚拟机的CPU个数。
对于一台虚拟机来说,一般推荐CPU插槽数:每插槽的内核数=1:2,高计算力的虚拟机可能达到1:4甚至更高。

假设一个简单的场景:
环境中每台主机拥有4颗8核的物理CPU,总物理核数为32个。
一个未设置CPU插槽的虚拟机,CPU数量为8个,则可能由主机上一个物理CPU的8个内核组成虚拟机的8个虚拟CPU;或可能由一个物理CPU提供5个内核,另一个物理CPU提供3个内核,一同组成虚拟机的8个虚拟机CPU,等等。
另一个虚拟机设置了CPU插槽数量为4,此时虚拟机的8个CPU平均地由主机上的4颗物理CPU提供,每个物理CPU提供2个内核,达到了最佳的计算性能。

收起
 2018-05-17
浏览4329
  • 谢谢专家指点,基于这个问题,我还有个疑问,因为cpu热添加的时候,只能增加插槽数量,而不能改变每个槽内的cpu数量,当插槽数量增加至大于物理机的CPU插槽数的时候(物理机两个插槽,虚拟机分配了四个插槽),会影响CPU的表现吗? 同时热添加的时候,CPU增加的个数会受到物理每个插槽内CPU的数量的限制,比如虚拟机原始配置每个插槽4个CPU,热添加的时候,每添加一个插槽就会增加4个CPU,这样可能会造成一定量的CPU浪费。
    2018-05-17
  • Jerry  Jerry 回复 linjh
    针对第一个问题,这种情况还需要考虑CPU的超线程技术,并非虚拟机vcpu插槽数=物理机实际CPU插槽数。针对第二个问题,在虚拟机部署前期就需要考虑这个问题,一般而言非数据库虚拟机,CPU的需求都不会很高,所以设计VCPU分配时需要考虑后续的扩容需求。若确实需要避免CPU资源浪费,只能停机修改配置。
    2018-06-03
docdoc  项目经理 , 长春理想
郑金辉linjhaixchina等赞同了此回答
vCPU,顾名思义,是虚拟CPU。 创建虚拟机时,需要配置vCPU资源。 因此vCPU是虚拟机的部件。 因此脱离VM,谈论vCPU是没有意义的。 虚拟化管理系统如何调度vCPU,取决于系统内的虚拟机数目以及虚拟机配置的vCPU的情况。 大致的情况如下:1、当系统内VM所需的vCPU总数少于物理CPU的核...显示全部

vCPU,顾名思义,是虚拟CPU。 创建虚拟机时,需要配置vCPU资源。 因此vCPU是虚拟机的部件。 因此脱离VM,谈论vCPU是没有意义的。

虚拟化管理系统如何调度vCPU,取决于系统内的虚拟机数目以及虚拟机配置的vCPU的情况。

大致的情况如下:
1、当系统内VM所需的vCPU总数少于物理CPU的核数(包括超线程Core)时,虚拟化管理系统为vCPU分配的资源不超过一个物理CPU核。 vCPU与物理核的分配关系可以是绑定的,也可能是动态的。
比如服务器有20个核心,你创建了2个VM,每个VM 4个vCPU,那么这两个VM最多能够使用服务器的8个核心。

2、当系统内的VM所需要的vCPU核大于物理CPU核数时,虚拟化管理系统首先按照时间片轮流调度一遍,然后如果还有剩余的CPU资源,则给所需要的vCPU。 比如系统配置了40个vCPU,只有20个物理核。那么平均每个vCPU获取一个核心50%的资源。由于一些VM忙,一些VM空闲,虚拟化系统会在一个调度周期内,划分出若干时间片,轮流给每个vCPU使用。忙的vCPU可以使用完整个时间片,而闲的vCPU用不完整个时间片,会提前释放资源。这样在一个调度周期内,对每个vCPU都调度一遍后还有空闲的时间,调度器会把用这剩余的资源去调度忙的vCPU。 这样兼顾公平和效率。 这中调度算法具体下来,大致是如下效果:系统有1个CPU 2.0 Ghz,两个VM,分配1个vCPU。 如果VM1 和 VM2都忙,那么各自相当于拥有一个1.0 Ghz的CPU。 如果VM1很忙,VM1只需要 500Mhz的处理能力,那么在VM1看来,相当于暂时获得了 1.5Ghz的处理器。

3、通过对Xen的测试,系统所有虚拟机的vCPU的总数目小于和等于CPU核数时,VM的性能是比较稳定的。 VM的vCPU基本上绑定到了一个CPU核。 当vCPU数目大于物理核数时,VM的性能稳定性变差。

收起
 2018-05-17
浏览3814
chinesezzqiangchinesezzqiang  信息技术经理 , M
linjh王希瑞aixchina赞同了此回答
好问题!!CPU的数量并非越多越好,尤其在虚拟化环境内。虚拟CPU要配合内存共同指定比例。在cpu的扩展上,尽量是扩展插槽而不是扩展虚拟CPU。但是槽位多少,要看物理主机的配置。至于峰值,要看物理主机的资源而定。建议采用1:4的配比,1是槽位,4是core,初始化建议是1:2 ...显示全部

好问题!!
CPU的数量并非越多越好,尤其在虚拟化环境内。虚拟CPU要配合内存共同指定比例。在cpu的扩展上,尽量是扩展插槽而不是扩展虚拟CPU。但是槽位多少,要看物理主机的配置。至于峰值,要看物理主机的资源而定。
建议采用
1:4的配比,1是槽位,4是core,初始化建议是1:2

收起
 2018-05-17
浏览3654
xukangxukang  售前技术支持 , mugao
linjh王希瑞aixchina赞同了此回答
根据你虚机的对CPU的使用率来划分,一般情况下建议一个物理线程对应2-3个vCPU,你主机上32个物理线程 一般在这台主机上虚拟机总的开机状态的vCPU建议是64-96个 如果虚机的对CPU要求不那么高可以提高比率。我记得vmware最高限制1:25 。单个虚机的vCPU数量不能超过本机物理线程...显示全部

根据你虚机的对CPU的使用率来划分,一般情况下建议一个物理线程对应2-3个vCPU,你主机上32个物理线程 一般在这台主机上虚拟机总的开机状态的vCPU建议是64-96个 如果虚机的对CPU要求不那么高可以提高比率。我记得vmware最高限制1:25 。单个虚机的vCPU数量不能超过本机物理线程数,有特殊性能要求可以手动指定vCPU对应的物理线程。

收起
 2018-05-17
浏览3614
匿名用户匿名用户
aixchina赞同了此回答
分配vcpu时,不仅仅要考虑cpu的调度,还有考虑非一致性内存访问即numa。每个物理cpu访问内存的速率是不一致。numa对应的内存大小在访问时速率会大于跨numa节点访问内存,cpu的分配要根据实际业务之间的亲和力和实际使用率进行调配。 ...显示全部

分配vcpu时,不仅仅要考虑cpu的调度,还有考虑非一致性内存访问即numa。每个物理cpu访问内存的速率是不一致。numa对应的内存大小在访问时速率会大于跨numa节点访问内存,cpu的分配要根据实际业务之间的亲和力和实际使用率进行调配。

收起
 2018-05-19
浏览3355

提问者

linjh系统工程师, 兴业证券

问题状态

  • 发布时间:2018-05-17
  • 关注会员:7 人
  • 问题浏览:7027
  • 最近回答:2018-05-19
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30