您的位置:首页 > 其它

vSphere中CPU的设置选择及运行流程

2016-02-05 19:48 375 查看
随着虚拟化的普及,越来越多的服务器通过hypervisor被整合到了一起,解决了传统服务器CPU利用率常年不到15%的痛点。VM官方的建议是将CPU按照1:10的比例进行整合,整合后每一个虚拟机的VCPU该如何选择,是单socket多core,还是多socket单core;性能怎么样,依据什么判断。本章就针对上述问题进行阐述。
1.CPU的设置选择,是单socket多core,还是多socket多core?
在设置CPU的前,需要说一下PCPU、VCPU和LCPU的概念:
Socket:物理机的CPU插槽数。
PCPU:物理机上实际的CPU,通常我们所说的core。
VCPU:分配给虚拟机的CPU。
LCPU:PCPU在实际执行时所需要用到的逻辑CPU。每一个VCPU最终都会反映到PCPU上,而每一个PCPU在执行时,都需要找到一个空闲的LCPU,在不开启超线程的情况下,每一个物理CPU(core)只有一个LCPU。
当我们在创建一个虚拟机的时候,会让我们选择如何设置该虚拟机的CPU,如图所示:



对上图中做提到的几个概念做下解释:

LLC:全称last-levelcache,他仅局限VCPU的概念里。以单socket多core为例,当下一次VCPU需要PCPU的资源时会直接去LLC里面调用,减少了调度的时间。
Muma:non-uniformmemory access多CPU的服务器,尤其是多核,会在CPU通过一个内存总线同时访问相同的内存空间面临瓶颈,虽然CPU可以使用缓存将内存中的指令存放到缓存中,但是由于缓存的价格昂贵,非常小,很容易被占满。启用Numa的服务器会将CPU分成多个可以访问本地化内存模块的节点。Esxi5.5支持16个节点的Numa,Esxi6.0支持32个节点的Numa。
vNuma:vsphere可以使用启用了Numa的系统,还有一个专门的Numa CPU调用程序来管理。每个虚拟机都有一个home节点,从Home节点获取内存。Numa调度程序根据每个VM的CPU和内存使用需求,每2S动态平衡一次home节点的分配。相对于没有启用Numa的系统,如果一个home节点内的内存满足需求,CPU不需要跨home节点获取内存,减少了跨节点带来的延时。


抛开业务类型导向,单针对LLC,vNuma和超线程来说,推荐单socket多core。考虑到承载业务种类的不同,依据经验分布式业务、数据库业务推荐多socket单core,而wbe类型的业务推荐单socket多core。
2.CPU在vSphere中的运行流程
在讲述前,我们需要知道CPU在vSphere中的几种存在形式。CPU在vSphere中共有4种存在形式,分别为run、wait、costop、ready,其运行过程如下图所示:


ready:虚拟CPU等待物理CPU的调度,在esxtop下表示为%rdy。
run:不用多说,CPU正常运行,在esxtop下表示为%run。
wait:当虚拟机不需要进行CPU调度的状态,最常见的表现形式为虚拟机的挂起,在esxtop下表示为%wait。
costop:虚拟机vcpu的彼此等待,比如我们给虚拟机分配了4个vcpu,此时空闲的vCPU数量小于4而进行的彼此等待,在esxtop下表示为%cstp。
由上图我们知道,当开启一个新的虚拟机时,如果它能够找道空闲的LCPU就会直接进入run的状态,否则会进入ready状态直至它找道空闲的LCPU。所有的状态都可以由ready状态进入到run状态,由此我们知道,ready状态的值,是衡量CPU性能的一个重要参考。在client端和esxtop下能够查看CPU的ready值,由于单位不同,所以得到的值也不同,以一台名为BDC的虚拟机为例,如图所示:


Client端ready值(以毫秒为单位)


Esxtop命令下的ready值(以百分比为单位)由上图得知,同一虚拟机在client端得到的ready值为119ms,在esxtop下是0.59%,细心的人会发现在client端是以每20s为周期显示,由此我们得出:119÷20000=0.00595≈0.59%。通常情况ready的值小于1000ms即5%的时候,我们会认为虚拟机的CPU处在一个正常的状态,当他的值大于1000ms时,我们就要适当做出调整了,所以说,虚拟机的VCPU并不是越多越好。

本文出自 “兔样兔森破” 博客,请务必保留此出处http://arkling.blog.51cto.com/2844506/1741269
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: