虚拟化对VMcpu分配的理解

简介:

我这里以vSphere 5.5来举例说明

在我们虚拟化的环境中,VM的cpu数量如何分配,影响着VM的计算性能,更影响着ESXi主机的性能。

如果虚拟机少,能做到cpu不超分,那肯定是没问题,但是这种情况实在是太少了。

随着虚拟化的应用,我们的VM数量总是在增加,那这就涉及到VM的cpu分配问题。

首先,我们先理解几个和VMcpu相关的概念

Socket--------插槽数,物理cpu个数

Core----------核心数

Lcpu----------每个核心上同时可以执行的线程数,一台VM至少对应一个Lcpu

vCPU/vSMP----------虚拟机的CPU

以5.5为例,官方给出的数据是单台ESXi主机做多能分配出4096个vcpu。

这里的4096指的是单台主机上所有VM分配的vcpu总数,而不是一台VM就能分配这么多的vcpu。

单台VM最多可分配64个vcpu。这里的64,是5.5的最大值,但还需要主机上的物理cpu内核数决定,单台VM cpu的数量不能超过单台主机的物理内核数。比如,主机是4路8核cpu,共有32核物理cpu,那么主机中的任一一台VM都不会分配出超过32个vcpu。(不开启HT的情况下)

上面提到了HT的情况,我们来聊下HT和Lcpu的事情。

Lcpu--------Logical Processor 也叫作逻辑cpu,指的是每个物理内核同时可以执行的线程数。

Vsphere5.5每个物理内核上在不开启HT的情况下能虚拟出32个Lcpu。

但同一时间,一个内核只能运行一个Lcpu。开启超线程,可以有两个Lcpu。

不开HT的情况下,每个物理内核同一时间可执行一个线程。

开启了HT,可以让VMs有两个vcpu同时在这个核心上调度,可同时执行两个任务,调度优先级是均等的。根据计算负载的状态进行调度,原则上,同一台VM的两个vcpu,不会在开了超线程的同一个core上调度。默认情况下,一台VM调度某个Lcpu时,可以100%占用其资源。其他的VM想要使用则需要排队等待。

但是这并不意味着,所有的应用程序都适合开启HT。

超线程对性能的改进与应用程序有关系,有些应用程序使用HT可能会出现性能下降的情况。因为个Lcpu会共享同一个内核的资源(如内存缓存和功能单元)。

虚拟化环境里,如非必要,不要开启HT,因为会对VMkernel产生更多的cpu调度请求,反而不利于性能的发挥。

接下来谈谈关于VMcpu分配时的数值选择

给VM分配cpu的时候,有两个数值,一个是vcpu的socket数,一个是vcpu的core数。

这两者不同的组合,呈现给VM的计算性能是不一样的。

vsphere client

Numberof virtual sockets ----- 虚拟插槽数

Numberof cores per virtual socket ----- 每个虚拟插槽上的虚拟核心数

这里是4路8核的物理cpu,不开HT,每台VM最多能分配32个vcpu。这32个可以是1个socket、32核。

虚拟化小白对VMcpu分配的理解

也可以是32个socket、每个socket里面有1个虚拟内核。但不管怎么分配,都不会超过物理内核数量。

虚拟化小白对VMcpu分配的理解

虚拟化小白对VMcpu分配的理解

虚拟化小白对VMcpu分配的理解Web client也是如此,只不过是显示的方式不同而已。

虚拟化小白对VMcpu分配的理解

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/73/81/wKiom1X_uAHT01BZAABugJVYgLA522.jpg" title="20150921_3.png" alt="wKiom1X_uAHT01BZAABugJVYgLA522.jpg" />

根据经验,这两个参数的实际应用如下

业务类型:

分布式业务--------多socket、单core

数据库---------多socket、单core

页面类型的网站--------单socket、多core

这里的虚拟socket数量如果超过了实际物理插槽数,我个人觉得,可能会对性能有影响。

关于VMcpu的事情,就先聊这么多吧!希望对大家有帮助!





     本文转自yzy121403725 51CTO博客,原文链接:http://blog.51cto.com/lookingdream/1794243,如需转载请自行联系原作者




相关文章
|
机器学习/深度学习 Linux 数据库
【虚拟机】如何判断CPU是否支持硬件虚拟化
如何判断CPU是否支持硬件虚拟化 linux系统 输入   cat  /proc/cpuinfo | grep vmx --color  有结果显示,表明支持intel-vt 虚拟化 ...
7108 0
|
8月前
|
存储 虚拟化
存储与虚拟机管理2
存储与虚拟机管理
46 0
|
8月前
|
存储 虚拟化 数据中心
存储与虚拟机管理 1
存储与虚拟机管理
60 0
|
8月前
|
存储 虚拟化
存储与虚拟机管理 2
存储与虚拟机管理
63 0
|
10月前
|
存储 KVM 文件存储
【KVM虚拟化】· 存储池、存储卷
【KVM虚拟化】· 存储池、存储卷
376 0
|
10月前
|
存储
操作系统分配存储时网络无法正常连接
操作系统分配存储时网络无法正常连接
45 0
|
Linux 虚拟化 开发者
内存虚拟化技术 | 学习笔记
快速学习内存虚拟化技术 。
126 0
内存虚拟化技术 | 学习笔记
|
Linux 虚拟化
内存虚拟化技术
大型操作系统(比如Linux)的内存管理的内容是很丰富的,而内存的虚拟化技术在OS内存管理的基础上又叠加了一层复杂性,比如我们常说的虚拟内存(virtual memory),如果使用虚拟内存的OS是运行在虚拟机中的,那么需要对虚拟内存再进行虚拟化,也就是vitualizing virtualized memory。
内存虚拟化技术
|
存储 KVM 虚拟化