VMware ESX Server3 性能优化建议

适用机型:
所有System x3455; 所有xSeries 100; 所有xSeries 130; 所有xSeries 135; 所有xSeries 200; 所有xSeries 205; 所有xSeries 205VL; 所有xSeries 206; 所有xSeries 206m; 所有xSeries 220; 所有xSeries 225; 所有xSeries 226; 所有xSeries 230; 所有xSeries 232; 所有xSeries 235; 所有xSeries 236; 所有xSeries 240; 所有xSeries 250; 所有xSeries 255; 所有xSeries 260; 所有xSeries 300; 所有xSeries 305; 所有xSeries 306; 所有xSeries 306m; 所有xSeries 330; 所有xSeries 335; 所有xSeries 336; 所有xSeries 340; 所有xSeries 342; 所有xSeries 343; 所有xSeries 345; 所有xSeries 346; 所有xSeries 350; 所有xSeries 360; 所有xSeries 365; 所有xSeries 366; 所有xSeries 370; 所有xSeries 380; 所有xSeries 382; 所有xSeries 440; 所有xSeries 445; 所有xSeries 450; 所有xSeries 455; 所有xSeries 460; 所有xSeries MXE 460; 所有BladeCenter; 所有BladeCenter H; 所有BladeCenter HS20; 所有BladeCenter HS21; 所有BladeCenter HS40; 所有BladeCenter JS20; 所有BladeCenter LS20; 所有BladeCenter LS21; 所有BladeCenter LS41; 所有BladeCenter T

文档内容:
VMWare
本文讨论的内容适用于ESX Server3,其他版本的不尽相同。

首先是使用ESX Server 3VirtualCenter 2 经验分享,包括两项内容:
Resource Management Best Practices(资源管理)
VM性能调优指南(为方便阅读,这里用VM表示虚拟机”virtual-machine”)

Creating and Deploying Virtual Machines(VM的创建和部署)
部署VM之前,需要做几件事情:如果有特殊的性能要求,请提前进行性能测试。虚拟化使得多台VM共享主机的资源,但是不会创建新的资源。虚拟化可能导致资源超负荷。

创建VM
创建VM时,确保虚拟的配置符合实际需求,跟物理机是一个道理。过高配置VM也会浪费共享资源。为优化性能,禁用不使用的虚拟设备,比如COM ports, LPT
ports, floppy drives, CD‐ROMs, USB adapters等等。尽管这些设备不被使用,也会周期性地被系统访问,导致共享资源的浪费。安装VMware Tools可以获得更好的性能,更多的CPU使用率,以及磁盘、网络和内存的使用。

部署客户操作系统(Deploying the Guest Operating System
VM上客户操作系统的调优方法同在物理机器上一样,包括注册表、交换空间等等。同样地,关闭不必要的程序和服务,例如屏幕保护程序。保证安装最新的操作系统补丁,如果使用Microsoft Windows,请到微软网站Microsoft knowledge base articles查询任何已知的操作系统问题。

部署客户应用(Deploying Guest Applications)
对客户应用的调优与在物理机器没什么区别。另外,不要在SMP VM运行单线程(single‐threaded)应用,因为单线程(Single‐threaded)的工作负载无法充分利用多处理器的资源,从而导致处理器资源的浪费。然而,多个单线程的应用同时运行,同样也会利用到多颗虚拟cpu的资源。

配置VMkernel Memory
ballooningswapping技术,VMkernel 可以获取更多的内存。请参考本文How ESX Server Hosts Reclaim Memory部分。

下边是一些基本概念介绍:
VM的内存(Virtual Machine Memory)
VM根据为其指定的内存大小使用内存,加上附加的overhead memory实现虚拟化。Memory Overcommitment (内存过量使用)
对于每一台运行的VM,系统为其保留物理内存,包括VMreservation (if any) virtualization overheadESX Server的内存管理技术使得VM的内存可以大于物理主机的内存。例如,一台内存为2GB的主机可以运行4台内存为1GBVM。这种情况下,内存被过量使用(overcommitted)Overcommitment 的意义在于,通常情况下,一些VM负载较轻而其他的会较重,并且会随着时间的不同而变化。为改善内存的使用, ESX Server主机自动把内存从空闲的VM转移到需要更多内存的VM上。你可以用Reservation Shares 两个参数为关键任务的VM优先分配内存。这些内存会在空闲下来的时候被其他VM所使用。

Memory Sharing
VM之间,共享内存对于调节VM重负载很有帮助。例如,若干台VM可能会运行同一个客户机操作系统的实例,相同的应用或者加载相同的组件,或者包括公共的数据。ESX Server系统使用特有的页面共享(page‐sharing)技术减少内存页面的多余副本,并确保安全。内存共享技术使得多台VM使用的内存小于在物理机上所用的内存数量。他的好处是,可以支持更高级别的内存过量使用 (overcommitment)。通过内存共享技术能节省出多大的内存空间,跟VM的负载有直接关系。对于多台几近相同的VM来说,大约可以释放大于30%的内存空间,而对于完全不同的多台VM来说,大约可以释放少于5%的内存空间。

理解VM的资源分配(Understanding Virtual Machine Resource Allocation)
创建一台VM时,New Virtual Machine wizard会引导你配置内存,这个内存容量与你在一台物理机器上安装时没什么区别。
注意 ESX Server将这部分内存分配给VM使用。当分配给VM的内存超过实际内存时,或者实际内存不可用时,ESX Server会利用特有的ballooningswapping技术来满足需求。


接下来,如果你选择的操作系统支持多路处理器,系统也会提示配置虚拟处理器(CPUs) 的个数。


CPU资源被过量使用时(overcommitted), ESX Serve会按照时间片划分使用处理器资源,使每台VM就像是拥有预先配置过的处理器个数。
ESX Server上同时运行多台VM时,会给每台VM公平地分享物理资源。缺省情况下,同一台ESX Server上的VM都会得到如下资源:VM保留主机资源(Reserving Host Resources)
有些情况下,系统管理员想要知道VM直接从ESX Server的物理资源获取的内存数量。同样,管理员也可能希望能确保某一台VM总是可以获得比其他VM多一些比例的物理资源。你可以通过配置如下属性为VM保留物理资源。
注意:很多情况下使用默认配置非常有效。

VM的属性:分享、保留和限制(Shares, Reservation, Limit)
如图所示,对每台VM可以指定这三个参数:shares, reservation (最小值), limit(最大值)。他们的含义描述如下:Shares
指定相对优先权或者该VM的重要程度。比如,一台VMshare资源是另外一台的两倍,他就可以使用两倍于后者的资源。Shares 通常设置为high,
normal 或者lowHigh, normal low 按照4:2:1的比例来划分。你也可以选择Custom方式设置成其他值。设置shares仅仅在sibling virtual machines间或者资源池(resource pools)内有效,也就是说VM在资源池内同属于一个父节点。当设置VMshares时,就要设置VM的相对优先权。

Share的缺省设置为:
Reservation
Reservation指确保为某一台VM预留的。 只有满足reservation,才可以开机。即便ESX Server负载很重,也会保证满足该VMreservationReservation用具体的单位(MHz或者MB)表示。当资源未被使用时,ESX Server使其对其它VM可用。比如,有2GHz可用,同时指定1GHzVM11GHzVM2,这样每台虚拟机保证有1GHz。但是,如果VM1只使用500MHz, 那么VM2 就会用到1.5GHz
Reservation缺省是0。建议指定一个能确保VM运行的reservation值。

Limit
Limit指定了 VM的处理器和内存的使用上限。ESX serverVM分配的资源可以超过reservation,但是不会超过limit这个限制。limit用具体单位(MHz或者MB)表示,CPU和内存缺省为无限制(unlimited)。这样,创建VM时指定的内存就是VM的内存。通常情况下,无需指定limit,这也各有利弊:
How ESX Server Hosts Reclaim Memory(ESX Server如何获取内存)
ESX Server使用两种截然不同的技术实现动态的扩展和缩小VM的内存:
Memory Balloon (vmmemctl) Driver
vmmemctl driver与服务器配合获取被客户操作系统所忽略的页面空间。vmmemctl driverproprietary ballooning技术。在相似的内存限制情况下,有效地与系统匹配,提供可预见的性能。这种技术有效地增加或者减少客户机操作系统的内存压力,促使客户机调用自有的内存管理算法。内存压力大时,客户机操作系统决定哪个特殊的内存页面被获取,有必要的话,交换到自己的虚拟磁盘。为便于理解,这里提供了图示和英文介绍。
>>>
>>>
相关学习园地栏目:
>>>
相关文档: