前言
本文主要介绍如何对VMware vSphere架构的CPU、内存、存储、网络及虚拟机进行性能调优。将贯穿观念中那些有性能限制的领域,打消虚拟化和性能相悖的旧观念,最重要的是通过一个个小的案例展现如何在虚拟化环境中实现性能调优,让虚拟化技术发挥其最大优势,助力业务提升效率,按需扩展,灵活多变。具体的软件实施,不在本文做详细说明。
CPU性能优化
CPU资源的分配对于保证虚拟化环境的最佳性能很重要。现在的处理器一般为每个进程都配比了多核处理器,还提供了多种技术帮助提高虚拟化环境的性能,比如Intel-VT和AMD-V等硬件虚拟化及加速技术。CPU虚拟化技术使得虚拟机可以直接在物理处理器上执行大多数的指令,可以使多个虚拟机一起运行来直接访问一个物理处理器。
物理CPU与虚拟CPU之间的关系
在做CPU性能优化前,理解什么是物理CPU?什么是虚拟CPU?是个很重要的前提。目前几乎所有的处理器,无论X86架构还是Power架构,对每一个封装都有多个物理处理器内核。一般规格为4、6、8、12核,有的甚至更多。在VMware ESXi中,每一个物理处理内核被检测为一个物理CPU,如果Intel处理器上有超线程,那么每个物理处理器内核都会有两个硬件线程,ESXi就能检测到每个线程作为一个物理CPU。虚拟CPU是针对虚拟机上的CPU而言,每个虚拟机至少配置一个虚拟CPU。VMM调度每个虚拟CPU在任何可用的物理CPU上运行,可以定义任何虚拟机在给定时间内可以同时访问的物理CPU的数量。
ESXi CPU如何工作
VMware vSphere ESXi中的CPU通过复杂的调度算法接收和执行用户及外界的指令,按照设定好的策略依次执行,下面将介绍一下ESXi中CPU的几个主要的动作。
CPU的比例分配算法:
当发生在多个虚拟机之间竞争资源的时,ESXi则使用比例分配算法来决定哪一个虚拟机应该使用更多的CPU和内存资源。比例分配算法可以让VMware ESXi调度程序通过将每个执行语境在可用物理处理器资源的一个共享相关联,从而进行重要的调度计算。根据资源配置标准,如分享、保留、限制,所计算出的分享权益会被分配到每个执行语境上。
CPU联合调度:
我们常见的联合调度分为严格联合调度和宽松联合调度。这种严格联合调度主要出现在VMware ESXi的早期版本中,当执行联合调度时,CPU调度程序在多处理器虚拟机的每个微CPU上会有一个累积的偏移。当一个单进程应用在多处理器的虚拟机上运行时,只有一个微CPU在物理处理上运行,而其他的微CPU都处于闲置状态,因此,只需要要求一个物理CPU可用就可以了。
宽松联合调度主要出现在VMware ESXi5版本以后,使得每个虚拟机上的每个微CPU进程都可以被单独追踪,偏移值是通过测量最慢的微CPU和其他每个微CPU之间的差异得到的。
ESXi的CPU性能调优
众所周知,VMware是虚拟化领域的领头羊,其为ESXi虚拟化层提供的默认设置在性能方面可以满足大多数企业的应用场景和需求。对于更严苛的业务需求,采用默认设置可能会影响虚拟化发挥其最大的优势。如何调优,就成了管理员必备的要求。
CPU性能如何诊断?哪些指标是性能调优最在意的?可以帮管理员尽快定位问?VMware在众多管理指令中提供了一个名为ESXtop的命令。通过输出结果可以清晰的看到CPU等相关的性能问题。管理员通过root身份登陆ESXi服务器,并输入C切换到CPU的分析界面。除了CPU可以监控CPU之外,也可以对内存、网络等性能进行观察。具体的使用方法,不在此文的讨论范围内。
表1:VMware esxtop CP