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. npm WARN saveError ENOENT: no such file or directory

    转自树之名原文npm WARN saveError ENOENT: no such file or directory解决 我是在安装sequelize时出错的.提示的错误没有保存,类似于参考的文章中 ...

  2. POJ 2135 Farm Tour && HDU 2686 Matrix && HDU 3376 Matrix Again 费用流求来回最短路

    累了就要写题解,近期总是被虐到没脾气. 来回最短路问题貌似也能够用DP来搞.只是拿费用流还是非常方便的. 能够转化成求满流为2 的最小花费.一般做法为拆点,对于 i 拆为2*i 和 2*i+1.然后连 ...

  3. javax.servlet不存在问题的解决

    产生这个问题的原因是这个包在WEB服务器里才有,J2SE中没有,应该在J2EE中才有.因此必须告诉编译器这个包的位置. 正确的解决方案如下: 1. 搜索servlet-api.jar. 这个包应该在T ...

  4. 罪恶黑名单第四季/全集The Blacklist迅雷下载

    英文全名The Blacklist,第1季(2016)NBC.本季看点:<罪恶黑名单>我们知道:剧情紧接第三季结尾,每个人——Liz,Red以及特别行动组的其他人——似乎都有许多故事可说: ...

  5. 低版本系统兼容的ActionBar(二)ActionProvider+分离式ActionBar+分离式的ActionMode

           这篇文章主要讲的是在低版本兼容的ActionBar中实现自定义的ActionProvider,ShareActionProvider的使用方法,如何实现分离式ActionBar,外加在分 ...

  6. ss简单使用

    ss简单使用 ss即socket state. 1.常用语句 ss -l 显示所有处于监听的网络接口连接 ss -pl 显示所有处于监听的网络接口连接,及相应的进程名称.进号等 ss -t -a 显示 ...

  7. c++ 使用json的库。cJSON

    cJSON官网是:http://sourceforge.net/projects/cjson/?source=recommended 最新版本是2013年的,与2009年的变化不是很大. 看了代码,觉 ...

  8. hdu 3660 Alice and Bob's Trip(树形DP)

    Alice and Bob's Trip Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  9. go语言之进阶篇 select实现的超时机制

    1.select实现的超时机制 示例: package main import ( "fmt" "time" ) func main() { ch := mak ...

  10. AD各种布线方法总结

    1.常规布线:不详细说了,是个人就知道怎么弄.需要说明的是在布线过程中,可按小键盘的*键或大键盘的数字2键添加一个过孔:按L键可以切换布线层:按数字3可设定最小线宽.典型线宽.最大线宽的值进行切换. ...