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. React中的的JSX

    什么是JSX? JSX是JavaScript XML的缩写,其本质是js,表现形式类似于XML,与js区别在于可直接在里面编写html标签. 怎么使用JSX? 语法规则: JSX 的基本语法规则:HT ...

  2. 错误:update 忘了加 where

    职业生涯应该都犯过的错误,幸好是在开发库,生产环境的库真是要严格的进行权限管理和脚本执行流程规范.

  3. BI 可视化

    1. Blackbird: Open Source JavaScript Logging Utility Blackbird 是一款非常酷的 JavaScript 调试工具,带有一个漂亮的界面显示和过 ...

  4. 疑犯追踪第一季/全集Person Of Interest迅雷下载

    本季Person of Interest Season 1 第一季(2011)看点:如今,<疑犯追踪>正在纽约热拍,在11月1日的片场,刚刚完成了一场爆炸的戏.另外,<探索者传说第一 ...

  5. 3分钟搞定SpringBoot+Mybatis+druid多数据源和分布式事务

    文章来自: https://blog.csdn.net/qq_29242877/article/details/79033287 在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据 ...

  6. Android系统版本与API等级对应关系表

    从Android官网拷过来的,方便查阅... 官网地址:https://developer.android.com/guide/topics/manifest/uses-sdk-element.htm ...

  7. [转]php 操作数组 (合并,拆分,追加,查找,删除等)

    From : http://justcoding.iteye.com/blog/1181962 1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个 ...

  8. 使用ASP.NET AJAX与Bootstrap 弹窗解决方案

    我在做采购系统时,因为使用了ASP.NET AJAX的UpdatePanel的控件,可以使得页面局部刷新显示.但是使用起来问题还是很多. 下面列出了一种情况,花了将近5个小时才算解决,虽然不是很完美, ...

  9. perf使用示例1

    perf使用示例1 perf - Performance analysis tools for Linux Performance counters for Linux are a new kerne ...

  10. 读书笔记,《Java 8实战》第五章,使用流

    本章我们将会了解到关于Stream API的很多操作,这些操作能够完成很多复杂的查询,比如,比如筛选,切片,映射,查找,匹配和规约, 第一节,筛选和切片    首先我们来看看用谓词来选择流动的元素,主 ...