我这里以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核。

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

Web client也是如此,只不过是显示的方式不同而已。

650) this.width=650;" src="https://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的事情,就先聊这么多吧!希望对大家有帮助!

转载于:https://blog.51cto.com/lookingdream/1794243

虚拟化对VMcpu分配的理解相关推荐

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

    转载: https://blog.51cto.com/makkapakka/1696788 虚拟化小白对VMcpu分配的理解 首先说下:小弟才疏学浅,还请各路大神指教. 我这里以vSphere 5.5 ...

  2. 虚拟化、虚拟机等概念理解

    虚拟化 定义:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而不受影响,从而显著 ...

  3. day17 - 动态内存的分配初步理解

    为什么需要动态内存分配? 1.动态内存很好的解决了传统数组的缺陷 2.传统数组也叫做静态的数组 动态构造一维数组的方法一: #include <stdio.h> #include < ...

  4. 深入理解java虚拟机gc_jvm GC收集器与内存分配(深入理解java虚拟机第三章)

    jvm GC收集器与内存分配(深入理解java虚拟机第三章) 本篇是<深入理解java虚拟机第三章>的笔记记录. 一 为什么要关注GC和内存分配? 需要排查各种内存溢出.内存泄漏问题时,或 ...

  5. 服务器虚拟化如何分配cpu,Hyper-V虚拟化CPU分配探讨

    开始之前,先看看物理机的CPU如何调度 我该为我的物理服务器分配多少虚拟CPU给虚机才合理,分配比1:1,2:1,听说还可以到8:1? 我的虚拟化CPU分配比达到4:1,会不会引起CPU资源过载? 我 ...

  6. KVM 虚拟化原理探究--启动过程及各部分虚拟化原理

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  7. KVM 虚拟化原理探究(5)— 网络IO虚拟化

    2019独角兽企业重金招聘Python工程师标准>>> IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输入 ...

  8. 浅谈GPU虚拟化技术(四)- GPU分片虚拟化

    让各位久等了,阿里小二这就开始上新菜:"GPU分片虚拟化". 对于"分片"的理解,相信大家已经不陌生了.此处的分片从两个维度上来定义:其一,是对GPU在时间片段 ...

  9. 什么是报文系统服务器,【必懂】服务器虚拟化 - 从感性上认识VXLAN(一)

    服务器虚拟化 - 从感性上认识VXLAN(一) 任何技术的产生,都有其特定的时代背景与实际需求.自从云计算这个概念提出来以后,云计算凭借其系统利用率高,人力.管理成本低,灵活性和可扩展性强的方面已经表 ...

最新文章

  1. 电子学会青少年编程等级考试Python一级题目解析03
  2. centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)
  3. 前端每周清单半年盘点之 WebAssembly 篇
  4. 设置UTL_FILE_DIR参数 使得数据库使用OS文件
  5. 关于equals和hashcode方法
  6. linux终端配备时钟oh-my-zsh主题
  7. CDOJ--1668
  8. 质性研究工具_质性研究【001】
  9. 中国的第一座基站,你知道在哪吗?
  10. 几张图说明男女之间的秘密(ZT)
  11. 怎样查看本机到一个网站经过多少路由节点?
  12. Map集合之LinkedHashmap
  13. ASP.NET页面间的传值方法(2)
  14. 仿京东首页点击轮播图进入唱片页面
  15. 解决Quartus.18.0版本 usb bluster插上蓝屏问题
  16. Python0基础(中)——期末不挂科
  17. python做数据挖掘_python 数据挖掘
  18. 计算机学硕专硕数学,考研常识:五类数学的区别
  19. 进程、线程与协程傻傻分不清?一文带你吃透!
  20. 一次真实的入侵-------记对一足球推荐站点的渗透

热门文章

  1. scp 将数据从一台linux服务器复制到另一台linux服务器
  2. Silverlight 2 Beta 1, IE 8 Beta 1, ASP.NET MVC 预览版2 可以下载了 - 思归呓语 - 博客堂
  3. Flex开发实战(一)--Flex的详细介绍
  4. 【java下午茶系列】java三重奏之封装
  5. 致那个我爱着且没在一起的人[转上官婉儿]
  6. 博客园与啊里云的故障假设:高需与低配(补充了降频论)
  7. python中add函数_如何使用python中的add函数?
  8. android density 和款高度,Android Density(密度)
  9. android auto 字体大小,Android中给TextView字体大小用dp还是sp?dp和sp有什么区别?
  10. java不会自动提示_eclispe中打点不会提示的解决方法,以及自动补全