VMWare ESX Server性能优化


VMWare ESX Server性能优化


vmware ESX server 是当前服务器市场上基于intel平台的最流行的虚拟软件产品。对比其他虚拟软件产品,如 GSX server 和ms virtual server,ESX的最大优点就是可以大大减少host系统所占用资源的。ESX server内核直接运行在硬件之上,而且系统稳定性和性能都有很大的提高。
ESX server也很适合企业级应用,因为它支持重要的冗余功能,比如多路经,以及链路绑定。由于有诸如p2v vmotion 和virtualcenter软件的支持,ESX server 非常适合企业部署
注意 此章节是按照ESX server 2.1.0来介绍的。对于其他版本的ESX server这些方法不一定都可以通用。
介绍
对于大型的ESX server系统来调整性能是一件非常艰巨的任务。ESX server可以在硬件上承载非常大的负载。根据负荷量以及所运行虚拟系统的数量。服务器的一些子系统可能会达到性能瓶颈。因此非常重要的一件事情就是要评估设计以及配置硬件系统,来保证不会出现系统瓶颈。
理解ESX server仅仅会虚拟化你的负载这个概念很重要,他的意思是说实际上你需要根据原先的计划来调整ESX server系统。虚拟化很多基础服务器或者终端服务器会对你配置你系统的方法产生巨大影响。另外需要明白ESX server是虚拟化当前的硬件。你还需要根据不同的虚拟操作系统来做相应的系统性能调整。
理解Vmware性能概念
在讨论调整ESX Server性能之前,理解虚拟化对性能带来的影响是很重要的。ESX server虚拟化硬件,而且提供在一个物理机器上运行多个虚拟操作系统的环境。
默认情况下,对于硬件的访问,比如硬盘,网络,每一个虚拟机器有同等的权利。通常不希望看到一个虚拟系统吃掉了其他虚拟系统所有可用的资源。比如有一个服务器连接了一个SAN存储,提供了250MBps带宽。如果安装了ESX server,创建了一个虚拟机器测试输出,一般只有 25-50MBps输出这么少,是不是ESX server性能很差?现在,创建另一个虚拟机器,同时运行测试,每一个虚拟系统都可以达到 25-50MBps,你可以继续这个测试,一直到ESX server内核或者SAN网络产生瓶颈。从这个例子中可以看出ESX server设计上来说是尽量考虑并行可扩展性,而不是某一个虚拟机器的高性能。如果你的应用确实需要某一个子系统的高性能负荷,你最好不要把这个应用放到ESX server 上来。然而如果你有很多服务器应用但是每个都不是对i/o和cpu要求很高,使用ESX server确实可以节省硬件以及软件的费用。有些应用程序运行的性能可以和本地运行媲美。
硬件布局
在xserver上配置ESX server的时候,你可以有很丰富的硬件选择,从2路机器到16路机器64G内存,并且联接SAN存储。因此,可以做出一个非常好的解决方案,当然硬件的配置是要看自身的需求才有意义。
对于ESX server,硬件子系统容易出现瓶颈的地方通常是:内存 磁盘,网络
在虚拟机器中的典型应用比如ESX server通常不会造成cpu的瓶颈。为了避免内存瓶颈的产生。尽量选择高前端总线的系统。 ESX server对于cpu到内存以及i/o到内存的操作很频繁。他们都会利用前端总线。另外尽量加大内存,来避免交换分区的产生影响性能。注意,内存的需要量是由各个虚拟机器上运行的应用程序需求来决定的。
提示:如果配置445 440,需要每一个SMP板上的内存容量相同。如果不同的话,会影响性能。
同内存同等重要的就是磁盘系统的调整,对于ESX server磁盘系统的影响尤为重要。承载ESX server内核,以及内核映像,以及控制台系统文件的磁盘来说应该配备raid1的保护
我们不推荐利用板载lsi作raid,推荐用5i 6i 6m卡,因为板载的lsi的cpu很慢,没有缓存,没有电池保护,因此不建议应用在生产环境
对于VMFS存储,我们推荐用可以用到的最好的存储设备来承载。比如:用很多磁盘作raid,磁盘越多,性能越好,尽量用10k或者15k的硬盘。如果用scsi,用u320的磁盘,使用高性能的raid控制器,比如6m,ds4300光纤控制器。使用raid10配置最大的stripe大小。对于serveRaid,使用64k 光纤通道用512k或者1MB 
VMFS文件系统使用的block大小就是1MB所以尽量的配合他的大小。如果用光纤存储比如告诉HBA卡比如fc2-133。本身配置SAN 存储已经是一个非常复杂的任务了,但请尽量给ESX server划分单独的存储分区同。总的来说,调整磁盘系统是一个非常复杂而且耗时间的工作,需要分析利用以及系统负荷,来调整性能。
提示:如果你对ESX server在ds4000上部署非常感兴趣,可以参考红皮书SG24-6434-00 
对于网络配置,我们建议至少有2个千兆网卡(不要共享给控制台系统)网络配置依据于网络布局,比如如果交换机是10/100m那么配置多个1000m网卡也就没有意义了。根据网络布局,最好把ESX server连接到一个高速交换机,并可以支持网卡绑定功能。
cpu子系统需要根据所有的虚拟机器以及加上额外的10%-20%的复合计算的。因为ESX server支持到16路cpu,可以很容易在445上部署,请注意,不应该只考虑性能调整,你还应该考虑冗余等问题
提示:ESX server支持超线程,如果是2.1.2版本的话,推荐启用HT。不过如果用的是2.1.0,强烈建议禁用超线程。需要在bios,以及ESX server内核中都禁用。
vmware磁盘分区
在ESX server中,你需要明确集中不同的磁盘存储类型:
存储虚拟系统的存储ESX server内核,交换文件,日至文件的,以及控制台系统
虚拟机器运行在VMFS系统上,通常来说,由ESX server默认设置的安装方法已经非常合适,不需要更多的优化了。以下是一个典型的磁盘存储布局(带SAN存储) 
/dev/sda1 * 1 6 47974+ 83 Linux /boot 
/dev/sda2 7 325 2552319 83 Linux / 
/dev/sda3 326 516 1528191 82 Linux swap 
/dev/sda4 517 4442 31411926 f Extended partition 
/dev/sda5 517 4429 31307881+ fb VMFS 
/dev/sda6 4430 4442 103981+ fc VMFS for core dump and swap 
/dev/sdb1 1 17681 142022601 fb VMFS for virtual machines 
注意控制台交换分区的大小是控制台建议最大内存的2倍。这样就允许你添加更多的内存给您的server,你也可以设置这个分区是实际应用内存的2倍
在外部存储上,如果存储设备非常大,建议配置多余一个的VMFS文件系统。虽然可能损失一些性能,但是可以保证万一一个VMFS坏掉了,还有其他的可以工作。注意,如果在小磁盘上划分了多个VMFS的话,系统性能会下降很多,因为磁头会来回的在两个VMFS系统之间移动。
调整控制台系统
因为控制台系统是一个非常微小的redhat系统,控制台的调整空间也就很小。通常来说,控制台系统不需要调整。系统已经运行在3模式下,而且必要的服务已经启动。
唯一个可以对性能有一点提高的就是禁用一些虚拟控制台。可以再/etc/inittab种注释掉tty4 tty5 tty6 
例子
# Run gettys in standard runlevels 
1:2345:respawn:/usr/sbin/vmkstatus tty1 
2:2345:respawn:/sbin/mingetty tty2 
3:2345:respawn:/sbin/mingetty tty3 
#4:2345:respawn:/sbin/mingetty tty4 
#5:2345:respawn:/sbin/mingetty tty5 
#6:2345:respawn:/sbin/mingetty tty6 
请注意,在控制台系统上如果安装ibm director agent会很影响性能的,因为它是基于java的。如果一定要安装 director agent请额外给控制台系统添加至少50MB的内存。如果有其他的agents,要相应添加内存.虽然控制台系统没有更多的参数配置,但是如果ESX server承载60个以上的虚拟系统或者在重负载的情况下,有一些情况是需要了解的。这种情况下,特别是承载web服务的时候,控制台系统会非常的慢。这时候可以到管理工具里面增加控制台的内从容量到500MB-800MB,同时考虑到ibm director的影响。
如果vmware的管理借口仍然很慢,更改http进程的优先全县。登陆进入控制台系统,检查进程id 
ps -axw |grep http 
输出入下,可以看到httpd线程的id是1431,现在便可以调整优先权限了
renice -10 -p 1431 
[[email protected] root]# ps -axw 
PID TTY STAT TIME COMMAND 
1 ? S 0:03 init 
1431 ? S 0:00 /usr/lib/vmware-mui/apache/bin/httpd -DSSL 
-DSSL_ONLY -DSTANDARD_PORTS -DESX -d /usr/lib/vmware-mui/apach 
1166 pts/0 R 0:00 ps -axw 
[[email protected] root]# ps -p 1431 
PID TTY TIME CMD 
1431 ? 00:00:00 httpd 
[[email protected] root]# renice -10 -p 1431 
1431: old priority 0, new priority -10 
这样httpd的权限已经得到了调整,相反的可以用-15减少httpd 的优先权限
除了给httpd增加cpu时间之外,也可以调整为web服务保留的内存,如果有80个虚拟系统,要把默认的内存保留从24MB调整到更高,可以调整实际共享的内存,利用配置文件/etc/vmware/config ,例如从24MB提高到28MB 如下
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
# The setting below increases the memory shares available for the httpd 
mui.vmdb.shmSize = "29360128" 
renice命令会即时生效,但内存的扩大需要重新启动httpd服务
killall -HUP httpd 
为了确保可以在重负荷下登陆控制台,推荐把vmware联结超时的时间从30秒提高到更高的数值。可以通过修改/etc/vmware/config
vmware.fullpath = "/usr/bin/vmware" 
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
mui.vmdb.shmSize = "29360128" 
# The setting below increases the login timeout to 2 minutes 
vmauthd.connectionSetupTimeout = 120 
也可以可以提高vmware-服务的内存限制,因为这个操作涉及到vmware线程,因此需要停掉所有虚拟机器才可以完成。修改/etc/vmware/config 提高软内存从64MB到96MB 
vmware.fullpath = "/usr/bin/vmware" 
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
mui.vmdb.shmSize = "29360128" 
vmauthd.connectionSetupTimeout = 120 
# The line below will alter the soft memory limit 
vmserverd.limits.memory = “65536” 
# The line below will alter the hard memory limit 
vmserverd.limits.memhard = “98304” 
当完成编辑后,需要重新启动vmware-serverd服务
shutdown -r now 
或者
killall -HUP vmware-serverd 
注意:需要事先关闭所有的虚拟操作系统
vmware内核调整
vmware内核有很多可以调整的选项,可以有效影响整个的系统性能。这里列举一些最重要的ESX server内核参数调整
页面文件共享
ESX server利用一个算法来共享同等的内存页面在各个虚拟机器之间,从而可以减少系统的内存使用。页面共享对系统有很小的影响,甚至会加快页面查询的速度。页面共享可以得到的好处跟系统负载有很大的关系。
我们推荐允许页面共享,不过如果一定要禁用页面共享来提高性能,可以修改/etc/init.d/vmware文件,在-n前添加-m,参看例子
Disabling page sharing — /etc/init.d/vmware 
“cd”$vmdb_answer_SBINDIR”&& 
“$vmdb_answer_SBINDIR”/”$kernloader”-m -n”$maxCPU” 
“$vmdb_answer_LIBDIR”/”$kernel’||exit 1” 
禁止页面共享,会增大内存的需求(虚拟系统是linux的要小于window虚拟系统的增加)
设置网络速度
最好把ESX server上所有的网卡的协商模式从自动协商更改成全双工。所有相关的交换机都要做相应的设置。
可以设置控制台网卡的速度通过/etc/modules.conf 
Setting the network adapter speed — /etc/modules.conf 
alias parport_lowlevel parport_pc 
alias scsi_hostadapter aic7xxx 
alias eth0 e100 e100_speed_duplex=4 
alias scsi_hostadapter ips 
#alias eth1 eepro100 
alias scsi_hostadapter1 aic7xxx 
alias scsi_hostadapter2 aic7xxx 
#alias usb-controller usb-ohci 
alias scsi_hostadapter ips 
alias scsi_hostadapter ips 
具体设置的参数是可以参看网卡驱动的readme文件
你也可以通过管理借口来设置网络速度还有双工模式,root登陆到管理界面,在网络连接菜单设置属性
调整qlogic卡
qlogic的HBA卡提高队列深度,可以大大的提高性能,默认的队列深度的数值是16,试验证明,如果设置成64可以提高性能(实际的队列深度可能会因为不同的配置有所不同) 
队列深度可以在/etc/vmware/hwconfig文件中调整,搜索device.x.x.x.name = “QLogic Corp QLA2300 64-bit FC-AL Adapter (rev 01)" (根据不同情况数字可能不同)
device.7.3.0.class = "0c0400" 
device.7.3.0.devID = "2300" 
device.7.3.0.name = "QLogic Corp QLA2300 64-bit FC-AL Adapter (rev 01)" 
#下面添加队列深度
device.esx.7.3.0.options = "ql2xmaxqdepth=64" 
#老版本ESX server添加如下
device.vmnix.7.3.0.options = "ql2xmaxqdepth=64" 
device.7.3.0.subsys_devID = "0009" 
device.7.3.0.subsys_vendor = "1077"
device.7.3.0.vendor = "1077" 
NUMA 调整
ESX Server可以很好的支持目前的NUMA系统,包括x445,如果已经按照p329页提到的硬件布局优化系统,系统已经是比较好配置的了。但是,如果服务器的负载需要特定的cpu群体,(比如让某个虚拟服务器工作在特定的NUMA节点上,如445上的一个smp板)可以利用VMware 管理接口手工把特定的NUMA节点分配给虚拟服务器。
当16路445运行64个虚拟服务器的时候,你应该每一个4路smp节点分配16个虚拟服务器,这样内存均衡的分配会根据cpu的物理位置进行优化配置,也就是在一个NUMA节点上运行的虚拟服务器不会用另一个NUMA节点上的内存。
VMware内核交换调整
vmware内核的内核交换机制可以实现在一个机器上运行非常多个虚拟服务器。然而,当系统开始利用交换机制的时候,磁盘I/O会有一些负载的增加。
为了优化性能,需要紧密观察VMware内核的交换文件,当vmware内核开始利用交换机制把数据写到硬盘的时候,你就应该减少虚拟服务器的数量,或者安装更多的内存了。通常在理想的情况下,在正常工作的时候,不要让系统开始利用交换文件。为了让交换文件带来的影响最小,建议把交换文件放到 VMFS分区
注意:如果在IDE硬盘的刀片上安装ESX server,你只能把交换文件放到外部存储,因为VMFS文件系统不支持IDE设备
提醒:多注意观察/proc/vmware/swap/stats中交换数值的大小,做好让他保持在0 
虚拟服务器的调整
相对于非常不错的默认的VMware内核参数,调整虚拟服务器可以更好的获得性能提升,根据虚拟服务器的负载,本章节的一些提示可以很大程度上改善虚拟服务器的性能。
这里要注意的是,任何在虚拟服务器内的性能调整,都可以在整体上对整个服务器的性能有好处。
提示:建议在虚拟服务器内部安装 vmware 工具,以及相应的驱动,这样可以提高性能减少整个ESX server的负载
调整虚拟服务器内存位置
当创建了一个新的虚拟服务器,会要求选择内存的大小,就像安装一个独立的服务器一样。
如果你给你的虚拟服务器制定了一个数量的内存,而系统和应用程序需要更多内存的时候,交换文件就会产生。
通常情况,交换文件的产生是很糟糕的,相比快速的内存访问,硬盘的存取要慢的很多,因此,建议内存容量的大小,要根据操作系统以及运行的应用程序的共同需求来计算。可以利用系统的监控工具来监控虚拟服务器的内存使用状况,公举可以参看p343 
ESX server提供了很多调整内存的分配的方法
可以随时按照虚拟服务器的需求来分配内存,没有用的内存则共享给其他的虚拟服务器。虽然调整内存的大小很容易,但需要注意,每一次的调整,虚拟服务器都需要重新启动虚拟的操作系统。
虚拟服务器可以创建2种类型的虚拟磁盘控制器。Buslogic是默认的,特点是兼容性很好,支持广泛的操作系统。
Buslogic驱动支持所有的guest系统,可以操作1kb小的文件,如果你的应用程序确实有很多这样的小文件,这个驱动确实不错,但这个驱动不是提高性能的最好选项,如果关心性能,强烈推荐使用lsi驱动,这样尤其对大文件可以大幅度提高性能,不过很多操作系统不一定支持这个驱动。 vmware提供了软盘映像来满足linux和windows系统添加驱动的问题。
禁用不使用的设备
ESX server 提供了丰富的虚拟硬件,但多数时候,很多这些设备其实没有什么用处,比如说apache服务,cdrom只用来第一次装系统用,以后完全没有用,串口和并口更是根本用不到。windows会一次次的与这些设备通讯。这些动作会占用很多的cpu时间,甚至有时候会导致系统反映缓慢。通常情况下,需要禁用以下不常用的设备:com1 com2 lpt1 cdrom(禁用cdrom自动运行)
提示:windows2003下可以用以下方法禁用cdrom自动运行
编辑注册表
HCCU/Software/Microsoft/Windows/CurrentVersion/ 
Policies/Explorer 
设置 NoDriveTypeAutoRun 成为0x000000FF 
网卡驱动
ESX server提供每一个虚拟服务器的默认的网卡类型是AMD PCNet卡,所有的客户操作系统都支持这个网卡,兼容性很好,相比之下性能稍差,但当安装vmwaretool之后,因为更新了新的驱动,所以网卡性能会有很大的提高。
提示:如果网卡遇到问题,可以考虑切换回老的amd网卡,来排除错误。
调整终端服务器
虚拟服务器当运行很多线程的时候,比如终端服务器,可以通过规定虚拟服务器中的负载量来得到额外的性能提升。
调整虚拟服务器负载量需要打开管理接口,设置服务器如图所示范。即使服务器被设置成终端服务器,这个设置会可以加速其他其他运行多个同步线程的服务器。
当改变了设置之后,需要重新启动虚拟操作系统使得配置生效
提示:ESX server 1.52 和2.0.1如果设置的话,需要打开配置文件直接添加
workload=terminalservices

时间: 2024-11-10 14:48:11

VMWare ESX Server性能优化的相关文章

vmware ESX server性能调整

vmware ESX server 是当前服务器市场上基于intel平台的最流行的虚拟软件产品.对比其他虚拟软件产品,ESX的最大优点就是可以大大减少host系统所占用资源的.ESX server内核直接运行在硬件之上,而且系统稳定性和性能都有很大的提高. ESX server也很适合企业级应用,因为它支持重要的冗余功能,比如多路经,以及链路绑定.由于有诸如p2v vmotion 和virtualcenter软件的支持,ESX server 非常适合企业部署 注意 此章节是按照ESX serve

Sql Server 性能优化之包含列

Sql Server 性能优化之包含列 导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生.今 天我们就讲下数据库包含列这个一项的作用及带来的优化效果 引用下MSDN里面的一段解释: 当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显 著提高查询性能. 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值:不 访问表或聚集索引数据,从而减少磁盘 I/O 操作 上面这一段什么意思呢? 意思就是说设置好包含列,能提高查询性能,减少IO输出.

SQL Server 性能优化(一)——简介

原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投入的硬件就可以减缓投入,从另外一个角度看来它就是节省了钱. 2.增加效率:对于客户来说,性能上去了,他们的工作效率也高了. 3.降低挫折感:性能底下,客户抱怨,无疑是对自己心灵上的打击. 二.性能误区: 性能误区 误区 现实 如果处理器使用率很高,那么需要添加更快的处理器 某一部分导致了性能问题 8

VMware ESX Server网络安装

VMware ESX Server的宿主系统是基于Linux定制开发的,所以,它也和所有的Linux系统一样,除了支持光盘引导安装外,还支持基于PXE的网络引导与安装.在VMware ESX Server 4及其以前的版本中,在通过网络远程安装的时候,还需要配置Web或FTP服务器,存放安装介质,而在VMware ESX Server 5中,简化了安装的步骤,如果你只是安装ESX Server 5,可以不必配置Web或FTP服务器,单独使用TFTP服务器即可. 本节介绍网络安装VMware ES

大话SQL Server性能优化(MSSQL高并发、性能调控、实践)

大话SQL Server性能优化(MSSQL高并发.性能调控.实践)网盘地址:https://pan.baidu.com/s/1KxdfcQD0XGD3M2ja_Y7UWQ 提取码:435v备用地址(腾讯微云):https://share.weiyun.com/5dTuZJ9 密码:xhmge4 本课程源于一家国内较知名的ERP厂商的一款产品出现性能问题后通过咨询服务解决了性能问题,然后根据自身多年技术培训.项目开发.产品研发与运维管理.软件公司内部咨询等经验,整理了在SQL Server 20

【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率

原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题,我从业务上了解到,显然对他们公司而言,丢数是绝对不能允许的. 另外,他们说之前也用过SQL Server的全文检索,但速度不够快,不如用mongodb快,当然我不太清楚他们所谓快的具体定义,比如查询只需要1秒,还是1分钟.他们的系统现在采用的是SQL Server,通过复制来实现高可用性,因为他们

SQL SERVER性能优化综述

一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项. 一.分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性.可用性.可靠性.安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求.响应时间的需求.硬件的配置等.最好能有各种需求的量化的指

SQL Server性能优化(1)使用SET函数

在一切开始之前,先看下微软的建议:在系统的整体性能优化里面, TSQL优化优先级并不是最高的. 本文包括四部分: SET STATISTICS TIME ON SET STATISTICS IO SET SHOWPLAN_ALL ON SET STATISTICS PROFILE ON SET 函数主要是为了显示sql执行时的查询计划,CPU.硬盘使用情况. 1. SET STATISTICS TIME ON:当 SET STATISTICS TIME 为 ON 时,会显示语句的时间统计信息.为

SQL Server性能优化

源代码文件 1,什么是性能问题? 现有资源没有达到最大吞吐量的前提下,系统不能满足合理的预期表现,则可以定义为有性能问题.性能指标包括:响应时间,吞吐量,可扩展性. 2,初探优化 2.1优化论 一般遇到2种性能问题: 1),某个功能很慢,或者突然变慢,比如某个存储过程.查询等. 2),整个系统很慢. 第一种情况下,对象比较明确,所以处理起来相对轻松.大部分情况下,只需要研究执行计划就可以解决绝大部分问题.通过改变查询.调整表结构(索引等).就可以起到明显的效果. 第二种情况下,对象不明确,首先需