1.关于CPU负载。extop显示的结果

如果CPU load average>=1,说明主机过载了。

如果PCPU used%在80%左右说明良好,90%以上就临近过载了。

VM赋予过多的vCPU可能消耗更多资源,尤其是在负载很重的主机上。

例如,单线程负载运行在多个vCPU的VM上或者多线程负载运行在一个超过其需要的vCPU数量的VM上。

Most guest operating systems execute an idle loop during periods of inactivity. Within this loop,
most of these guest operating systems halt by executing the HLT or MWAIT instructions. Some older
guest operating systems (including Windows 2000 (with certain HALs), Solaris 8 and 9, and
MS-DOS), however, use busy-waiting within their idle loops. This results in the consumption of
resources that might otherwise be available for other uses (other virtual machines, the VMkernel, and
so on).
ESXi automatically detects these loops and de-schedules the idle vCPU. Though this reduces the CPU
overhead, it can also reduce the performance of some I/O-heavy workloads. For additional
information see VMware KB articles 1077 and 2231.

The guest operating system’s scheduler might migrate a single-threaded workload amongst multiple
vCPUs, thereby losing cache locality

2.建议启用多线程

cpu0和cpu1标识第一个core,cpu2和cpu3标示第二个core,依次类推。

多线程和cpu关联性:将vCPU分配到同一物理CPU上的2个逻辑处理器会引起性能问题。

3.NUMA

ESXi会只能管理。NUMA调度器和内存安排策略。可以手工覆盖系统自动设置,但是一般最好不动,改用Memoriy affinity来设置内存管理或者cpu资源管理来设置cpu资源。

By default, ESXi NUMA scheduling and related optimizations are enabled only on systems with a total of at
least four CPU cores and with at least two CPU cores per NUMA node

缺省情况下ESXi NUMA调度器和优化会在系统具备至少4个core,每个NUMA node至少2个core的情况下启用。

两种情况:A.VM上的vCPU少于或者等于NUMA Node的core。

全部分配到一个node上,用本地内存

B.VM上的vCPU多于NUMA Node的core

称作wide  VM.  vCPU会分配到2个或以上的Node上。会有访问远程内存的延迟。可使用vNUMA缓和-让vm guest参与到本地内存管理任务

因此B比A具有性能优势,但是相反的,对于内存带宽瓶颈的负载来说B可以充分利用内存带宽。对于A上无法分配到多个Node的情形。

可以修改numa.vcpu.maxPerMachineNode来达到增加带宽的好处。

虚拟化的主要优势之一是能够动态地添加CPU和RAM来运行虚拟机。这是处理某些计算问题的很好的办法,并且还不需要停机时间和重新启动。

然而,在某些情况下,通过鼠标点击(动态地或者其他方式)分配CPU和RAM会对你的服务器产生有害影响,所以你需要非常了解你的工作负载以及操作系统。

这涉及你正在运行的工作负载类型、操作系统调度以及虚拟机的虚拟CPU布局。虚拟CPU分配本来是很简单的,你只需要指定你想要分配的虚拟CPU数量即可。然而,随着物理CPU内核数量的增加,NUMA成为常态,这使选择变得很棘手,因为现在,几乎每个主要管理程序都代表着一种虚拟CPU类型选择。

例如,如果你想分配四个虚拟CPU到你的虚拟机,你可以在4个单核CPU、2个双核CPU和1个四核CPU间选择。虽然所有这些选择都能够增加四个虚拟CPU,但它们是以不同的方式实现的,而这种差异性可能会影响运行虚拟服务器的操作系统调度做出的决定。

虚拟机炼金术

对于这些选择,并没有必须遵守的规则。正确的选择完全取决于工作负载配置文件、使用的调度程序、操作系统版本或内河版本。较老版本的内河不太善于处理多核CPU,最好选择单核CPU。而较新的内核和操作系统版本更青睐于多核CPU。

除此之外,工作负载本身的性质也有很大的影响。单线程和多线程工作负载将以不同的方式处理这些实例。在一些工作负载中可能只有细微的差别,但可能与其他工作负载存在巨大差异。

NUMA的优势在于更快的内存存取,并能显著地加快处理器和RAM密集型流程。如果CPU核心只与CPU控制的内存交互,它将会更快地执行,因为它不需要跨越到另一个CPU来分配和使用内存。

这很好理解,有点类似于:你去对面街道的商店买东西要比去另一个镇上的商店买东西要快。然而,当你在操作系统下插入一个管理程序时,CPU内核和RAM分配之间的关系会有点“暧昧”。

根据管理程序向虚拟服务器呈现CPU的方式,操作系统可能会认为每个CPU都具有自己的内存控制器或者四个内核间存在一个共享内存控制器。此外,管理程序不断轮询虚拟机服务器内存分配状态以及评估是否让活跃内存更接近目前为虚拟机处理负载的CPU。这些因素都可能影响性能。

点石成金

幸运的是,有一个办法可以帮助你选出最适合你的工作负载的方法—测试。建立几个虚拟服务器,每个具有不同的虚拟CPU布局,并运行样本工作负载。调查你可以在管理程序水平对NUMA分配做出的调整,并通过调整这些参数来测试不同的情况。

例如,VMware的vSphere具有深度调整参数,例如numa.vcpu.maxPerMachineNode和numa.vcpu.maxPerClient,这些允许你调整可以驻留在单个NUMA节点的最大虚拟CPU数量,以及被管理程序重新平衡作为单个单元的最大虚拟CPU数量。还有几个其他参数可能会影响你的选择,但事实是,你可能需要通过一些微小的调整和测试来提高你的工作负载性能。

这并不是一个新概念,但在很大程度上被大家忽视了。所以当你在建立和调整你的虚拟机时,请记住,当你在谈论虚拟CPU时,四个并不总是等于四个。花一点时间来测试可以帮助你节省很多处理时间。(邹铮编译)

vNUMA在至少8个core的情况下启用,且至少硬件版本为8.

vsphere 5.1 性能最佳实践。的更多相关文章

  1. [Java Performance] 数据库性能最佳实践 - JPA和读写优化

    数据库性能最佳实践 当应用须要连接数据库时.那么应用的性能就可能收到数据库性能的影响. 比方当数据库的I/O能力存在限制,或者因缺失了索引而导致运行的SQL语句须要对整张表进行遍历.对于这些问题.只相 ...

  2. http网页性能最佳实践

    你愿意为打开一个网页等待多长时间?我一秒也不愿意等.但是事实上大多数网站在响应速度方面都让人失望.现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性 ...

  3. (转)Android开发:性能最佳实践-管理应用内存

    翻自:http://developer.android.com/training/articles/memory.html 在任何软件开发环境中,RAM都是宝贵的资源,但在移动操作系统中更加珍贵.尽管 ...

  4. [转]15年双11手淘前端技术巡演 - H5性能最佳实践

    [原文地址]:https://github.com/amfe/article/issues/21 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 ...

  5. [Java Performance] 数据库性能最佳实践 - JPA缓存

    JPA缓存(JPA Caching) JPA有两种类型的缓存: EntityManager自身就是一种缓存.事务中从数据库获取的和写入到数据库的数据会被缓存(什么样的数据会被缓存.在后面有介绍).在一 ...

  6. Google的网站性能优化最佳实践

    网站性能最佳实践   当描述一个web页面的页面速度,评价的一致性遵循许多不同的规则.这些规则是任何阶段的web开发可以应用的前端最佳实践.这个文档的每个规则都陈述于此,无论你是否运行页面测速工具-- ...

  7. ASP.NET Core 性能优化最佳实践

    本文提供了 ASP.NET Core 的性能最佳实践指南. 译文原文地址:https://docs.microsoft.com/en-us/aspnet/core/performance/perfor ...

  8. JQuery高性能最佳实践

    [使用最佳选择器] 使用JQuery时,你可以使用多种选择器,选择同一个元素,各种方法之间的性能是不一样的,有时候差异会特别大. 通常比较常用的选择器有以下几个: ID选择器 $("#id& ...

  9. Canvas 最佳实践(性能篇)

    Canvas 想必前端同学们都不陌生,它是 HTML5 新增的「画布」元素,允许我们使用 JavaScript 来绘制图形.目前,所有的主流浏览器都支持 Canvas. Canvas 最常见的用途是渲 ...

随机推荐

  1. CATransition 实践

    时间差不够,导致闪屏 CATransition *animation = [CATransition animation]; animation.delegate = self; animation. ...

  2. EntityFramework:状态变化与方法的关系(朋友的学习笔记)

    一.约定OnModelCreating 有一些限制需要注意,例如: 1.表名不支持使用标签进行标注 2.最小长度在 OnModelCreating 中不支持 3.正则表达式在 OnModelCreat ...

  3. git 两个中心仓库上的分支 merge

    首先在一个中心仓库里面添加另外一个仓库的所有分支. 命令: git remote add Cangku2 https://github.com/abc/abc.git git fetch 这之后在使用 ...

  4. JS --- 三目运算符

    1.什么是三目运算:(布尔表达式 ? 值0:值1;) 5>3?alert('5大'):alert('3大'); 即    if(5>3){alert('5大')}else{alert('3 ...

  5. 用开源项目RangBar来实现有范围的SeekBar

    RangeBar是一个可以有选择范围的Seekbar,用这个项目其实是很简单的.就是一个自定义控件~ 一.布局文件 这里可以看到有很多属性可以定制,除了通过xml来定义也可以再java代码中进行定义. ...

  6. Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载

    在使用这个框架的时候,我们必须要配置一个DisplayImageOptions对象来作为ImageLoader.getInstance().displayImage()中的参数,所以很有必要讲解这个对 ...

  7. 用FadingActionBar实现有头图的ActionBar

         FadingActionBar这个开源项目在社区上很火,感觉Google I/O 2014中就有它的身影.今天我们来介绍下这个实用的开源项目. 首先是到这里(https://github.c ...

  8. 在SQLite中使用事务

    使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果为成功则提交事务,否则回滚 ...

  9. ThinkPHP错误信息处理

    index.php入口文件中打开APP_DEBUG// 开启调试模式define('APP_DEBUG', TRUE); // 开启Trace信息 'SHOW_PAGE_TRACE' =>tru ...

  10. org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.xugao.bean.MemberLevel.memberpointrate

    由于数据不合法的原因,好几次遇到: org.hibernate.PropertyAccessException: Null value was assigned to a property of pr ...