开始新对话

未解决

此帖子已超过 5 年

2940

2013年1月31日 01:00

VMware vSphere IO延迟调优文档

VMware vSphere IO延迟调优文档

转载请在文首保留原文出处:EMC中文支持论坛 - https://community.emc.com/go/chinese

介绍

本文主要总结VMware虚拟换环境vSphere IO延迟调优的最佳做法,主要包括BIOSNUMA、虚拟子机、物理/虚拟网卡、IO处理方式等。

更多信息

BIOS配置

较新型的IntelAMD处理器都提供节能特性,通过调低CPU在空闲时段运行频率来达到节能的目的。对于IO延迟要求高的应用而言,电源管理将增加处理从空闲状态恢复响应外部事件的延迟。为了降低节能特性可能带来对IO延迟的影响,在VMware ESXi平台有一下两个主要配置:

1.  BIOS相关电源管理配置

2.  OS/hypervisor相关电源管理配置

BIOS电源管理配置推荐位“static high”。Intel Nehalem及更新的处理器提供另外两个电源管理选项:C-stateIntel Turbo Boost。建议关闭C-state选项,因为处理器推出C-state过程会增加内存访问延迟,及时是C1E状态也比处理器从idle状态恢复到正常状态延迟要多。Intel Turbo Boost可以动态增加处理时钟频率,对于要求低IO延迟应用建议打开这个功能。

HP服务器:

1.  Power Regulator Mode配置为Static High Mode

2.  禁用Processor C-State支持

3.  禁用Processor C1E支持

4.  禁用QPI电源管理

5.  启用Intel Turbo Boost

Dell服务器:

1.  Power Management Mode配置为Maximum Performance

2.  CPU PowerPerformance Management模式配置为Maximum Performance

3.  Processor Setting开启Turbo Mode

4.  Processor Setting关闭C State支持

NUMA

NUMA架构下,访问非本地内存节点将大大增加业务延迟。ESXi内核调度器可以识别到NUMA架构,处于最佳性能考虑,虚拟机CPU应该位于同一个物理CPU节点,虚拟机内存应该是直接与CPU直接相连。vSphere配置过程如下:

CPU affinity:

VM Setting -> Resources -> Advanced CPU -> Scheduling Affinity

内存affinity:

VM Setting -> Advanced Memory -> NUMA Memory Affinity

注意虚拟机通过vMotion迁移后,需要在新的ESX/i机器上面重新配置这些参数。

ESXi 5.0开始支持vNUMA ,vNUMA可以把物理服务器NUMA架构信息通过ACPI BIOS表格方式提供给虚拟机器。vNUMA功能在虚拟机CPU数量大于单个物理CPU核心数时自动启用。vNUMA可以让虚拟机操作系统更好调度进程,可以减少虚拟机器内存访问延迟。

怎么选择虚拟机操作系统

虚拟机操作系统建议使用较新版本操作系统,比如:Window 2008/SLES11 SP1/RHEL 6或以上更新版本。当使用RHEL5作为虚拟机操作系统时,虚拟机中断处理和虚拟机PCI设备频繁访问开销很大。RHEL6及以后Linux内核不再使用tick计时器,tickless可以降低操作系统空闲状态电能消耗,但是每次系统唤醒都会增加额外的延迟开销。因此对于RHEL 6或者更新版本,虚拟机需要添加nohz=off内核启动参数。

Physical NIC配置

大部分1G10G网卡都提供一个中断合并的功能,网卡会自动缓存数据包,当数据包到达一定数量后再向CPU发起中断。这个功能在高IO情况下,可以减轻CPU负担。对于低IO延迟应用,建议关闭这个功能。

Linux可以使用ethtool工具关闭这个功能,ESXi平台10Gb网卡配置命令如下:

# esxcli system module parameters set -m ixgbe -p "InterruptThrottleRate=0"

# esxcli network nic list – 查看网卡参数

# esxcli system module parameters list -m - 查看驱动参数

注意:关闭中断合并会影响到LROlarge receive offload)功能,LRO功能可以将多个数据包合并一个数据包,对于提升网卡吞吐量有很大好处。

VM NIC配置

ESXi虚拟机支持多种虚拟网卡类型:Vlance,VMXNETFlexibleE1000VMXNET2Enhanced)或VMXNET3。推荐虚拟机使用VMXNET3类型网卡,VMXNET3ESXi最新的虚拟机网卡类型,支持RSSIPv4/IPv6 offloadMSI/MSI-X中断处理方式。Linux 2.6.32以后内核都默认自带VMXNET3驱动。

ESXi5.0,可以通过vSphere客户端关闭VMXNET3网卡中断合并功能,操作如下:

VM Setting -> Options tab -> Advanced General -> Configuration Parameters中添加一行 ethernetX.coalescingScheme = disabled

对于ESXi5.0以前,只能通过关闭所有虚拟机终端合并功能来实现。操作如下:

Configuration -> Advanced Setting -> Net,配置CoalesceDefaultOn0

VMNET3虚拟机关闭LRO功能操作如下:

1.  卸载VMXNET驱动

# modprobe -r vmxnet3

2.       /etc/modprobe.conf文件添加以下行:

options vmxnet3 disable_lro=1

3.       重新加载VMXNET3驱动

# modprobe vmxnet3

Polling VS Interrupts

X86架构IO处理主要有两种方式:轮询(polling)和中断(interrupt)。虚拟机对中断处理方式通过hypervior模拟一个APIC中断路由器来实现,这种方式会增加IO延迟;轮询模式下,虚拟机只需要定期监听IO设备即可,效率上比中断处理方式要更有效。

其他选项

ESXi可以为虚拟机分配超过物理CPU个数的虚拟CPU。对于低IO延迟应用,建议虚拟机CPU个数应该小于或者等于物理CPU个数。这样可以避免两个虚拟CPU被同时调度到一个物理CPU产生争用的情况。

同于对于虚拟机内存不应该超过物理内存大小。虚拟机内存统计信息可以通过vSphere客户端查看,步骤如下:

Resource Allocation -> Memory -> Available Capacity

虚拟机CPU在空闲状态默认会ESXi内核被移除调度队列,对于低IO延迟应用可以通过vSphere关闭这个功能,操作如下:

VM Setting -> Options tab -> Advanced General -> Configuration Parameters,添加配置项monitor_control.halt_desched,值为false

image001.png

参考

·         Best Practices for Performance Tuning of Latency-Sensitive Workloads in vSphere VMs

应用于

N/A

没有回复!
找不到事件!

Top