network 发表于 2020-2-18 12:25:33

vSphere正确分配虚拟机CPU资源

在VMware vSphere环境下,如果虚拟机系统的硬件资源配置不当,会对系统性能造成很大影响。如图所示,这里说的硬件资源配置主要包括CPU、内存、硬盘、网络适配器等。本文结合笔者亲身体会,分析如何正确的分配CPU资源。https://www.iyunv.com/data/attachment/forum/201505/07/090922nir7smirgpd57mdp.jpg
一、CPU资源说明VMware vSphere为虚拟机分配的CPU数是指逻辑处理器数。每台主机(服务器)拥有的逻辑处理器总数是不一样的,为物理CPU数量×每CPU的核(Core)数×超线程因子,当硬件支持超线程且在BIOS中开启超线程时,超线程因子为2,否则为1。例如某服务器为4C 8核并且支持超线程时,其CPU内核只有4×8=32个,插槽数即CPU数=4,vSphere可分配的该主机逻辑处理器数为4×8×2=64。如图所示:https://www.iyunv.com/data/attachment/forum/201505/07/090922x4mct1mopoahmgpa.jpg主机4C4核不支持超线程的示例如下:
https://www.iyunv.com/data/attachment/forum/201505/07/090922bu2dddkjzghu6t6j.jpg主机2C 6核不支持超线程的示例如下:
https://www.iyunv.com/data/attachment/forum/201505/07/090923a5u50uuz3kklua0a.jpg
二、CPU资源分配vSphere给虚拟机分配的逻辑CPU数等于插槽数×每插槽的内核数,其中插槽数不能直接设置,可通过调整另两个数量来间接设置。如分配4个逻辑CPU给某虚拟机时,可以设置每个插槽的内核数为1,则插槽数自动设为4;如内核数为2,则插槽数为2;如内核数为4,则插槽数为1。https://www.iyunv.com/data/attachment/forum/201505/07/090923qqdy6i1qyvdqs7qa.jpg
分配原则1插槽数不能超过主机的CPU数,否则多余的插槽数是无效的。分配原则2每个插槽的内核数不能超过每CPU的内核数×超线程因子。
在vSphere中,一旦违反以上两个原则之一,为虚拟机分配的实际CPU数将少于显示的CPU数。同时,在进行虚拟机vMotion时,也要考虑目的主机的硬件资源配置情况。如上图,系统分配了4个CPU,1个插槽,实际上系统只能在一个物理CPU上运行,不利于系统运行大并发任务。曾经遇到过一个类似情况,分配的CPU数为8,但每个插槽的内核数为8,插槽数为1,系统启动都很正常,但跑数据库应用时查询响应非常慢,用户不可接受。后经过优化,CPU总数8保持不变,但调整每个插槽的内核数为2,插槽数为4,性能明显好转,查询响应很快。另:强烈建议选择“启用CPU热添加”,这样,当虚拟机因CPU计算资源不足时可以在线手动添加CPU数量而无需停机。如没选择该项,如欲增加CPU数,则只能先将虚拟机系统停机后手动添加。
结束语在vSphere环境下为虚拟机配置CPU资源时,要充分考虑主机硬件CPU资源配置情况,同时结合虚拟机系统应用需求,合理分配CPU资源,做到既保证计算需求,又不浪费计算资源。

network 发表于 2020-2-18 12:43:09

回复 1# network
VM虚拟机处理器设置https://upload.jianshu.io/users/upload_avatars/1465184/f94b03d1fb7f.jpeg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96/format/webpxuexj关注
0.1932018.02.01 18:39:41字数 357阅读 6,269




//upload-images.jianshu.io/upload_images/1465184-0e2bb432002ac766.png

设置界面.png

由于工作原因会经常用到虚拟机,而 确实是一款非常好用的虚拟机软件。与处理器有关的就两个参数:处理器数量、每个处理器的核心数量。找了网上好多资料关于处理器设置的都介绍的不太清楚,于是本人决定亲自试验一下,测试环境如下:
1、电脑ThinkPad E450,Win10专业版64位,i5-5200U(双核四线程);
2、对比工具CPUID CPU-Z Ver1.82.1;
3、虚拟机软件版本VM12.5.9;
4、虚拟机系统WIN7专业版64位。
//upload-images.jianshu.io/upload_images/1465184-d23b35cc5bcb1ef8.jpg

物理机.jpg


//upload-images.jianshu.io/upload_images/1465184-f18c2e598b5e0a59.jpg

虚拟机1处理器/4核心.jpg


//upload-images.jianshu.io/upload_images/1465184-7213ee241a3365b5.jpg

虚拟机2处理器/2核心.jpg

经测试结果对比如下:
1、如果配置与物理机相同的总核数,其性能可达到90%左右;
2、总核数相同的情况下,处理器数量分配越少,每个处理器的核心数越多,虚拟机的单处理器性能会显著提高,但是总性能会有所下降;
3、反之,处理器数量分配越多,每个处理器的核心数越少,虚拟机的单处理器性能会有所下降,但是总性能会有不少提升。

network 发表于 2020-2-18 12:47:59

当系统内的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的处理器。



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



曾经看过一篇文,老外写的,他做过几种情况的实验,插槽数、核心数的不同,对性能还真有点影响。
VMWARE 在分配处理器的时候是从第一个物理处理器的第一个核心开始的,如果有 HT,那么一个核心 还会被当成两个来用,譬如,如果给一个VM分配了 4 个核心,实际上是分配了 4 个线程给它,使用的是第一个插槽的第一、二个核心(因为一个核心有两个线程),除非你指定它(虚拟机->编辑设置->资源->高级CPU),
根据他的测试结果,性能相差最大有的40%还多(具体数据我忘记了)。他得出的结论是,如果可以的话,分配CPU给VM的时候尽量分配 M 个 插槽 配置1个 核心,如果操作系统不支持或软件授权不允许,那么就分配 1 个 插槽 配置 N 个 核心,最坏的情况是 M 个 插槽 配置 N 个 核心。
页: [1]
查看完整版本: vSphere正确分配虚拟机CPU资源