Linux性能调优的几种方法按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer系统下,如何用以下几种技巧进行性能的优化:1、Disablingdaemons(关闭daemons)2、ShuttingdowntheGUI(关闭GUI)3、Changingkernelparameters(改变内核参数)4、Kernelparameters(内核参数)5、Tuningtheprocessorsubsystem(处理器子系统调优)6、Tuningthememorysubsystem(内存子系统调优)7、Tuningthefilesystem(文件系统子系统调优)8、Tuningthenetworksubsystem(网络子系统调优)1关闭daemons有些运行在服务器中的daemons(后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。Table10-1列出了RedHatEnterpriseLinuxAS下的可调整进程.Table10-2列出了SUSELINUXEnterpriseServer下的可调整进程注意:关闭xfsdaemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfsdaemon。使用startx命令前,开启xfsdaemon,恢复正常启动X。可以根据需要停止某个进程,如要停止sendmail进程,输入如下命令:RedHat:/sbin/servicesendmailstopSUSELINUX:/etc/init.d/sendmailstop也可以配置在下次启动的时候不自动启动某个进程,还是sendmail:RedHat:/sbin/chkconfigsendmailoffSUSELINUX:/sbin/chkconfig-ssendmailoff除此之外,LINUX还提供了图形方式下的进程管理功能。对于RedHat,启动GUI,使用如下命令:/usr/bin/redhat-config-services或者鼠标点击MainMenu-SystemSettings-ServerSettings-Services.提示:并非所有的daemons都会显示在该配置界面,如要看到全部的daemons,使用如下命令:/sbin/chkconfig–list对于SUSELINUX,图形界面是YaST2,可用如下命令来启动/sbin/yast2runlevel或者如Figure10-2所示用鼠标点击Browse:YaST/−YaSTmodules−System−Runleveleditor2关闭GUI只要有可能,就不要在Linuxserver上启动GUI图形,通常在Linuxserver上,没有必要启动GUI。,所有的管理任务均可在命令行方式下完成、或者通过重定向X和Web浏览器界面。有几个可用的基于Web的工具(例如webmin,Linuxconf,和SWAT).需要的时候启动GUI,用完马上关闭GUI。多数情况,服务器运行在runlevel3,即在机器启动的时候不进入GUI。命令行方式下,执行startx来启动Xserver.1.查看runlevel的命令:runlevel会显示出上次和当前的runlevel(如N5表示没有上次的runlevel(N),当前的runlevel是5).2.在不同的runlevels之间切换,使用命令init如切换到runlevel3,键入命令init3下边是对Linux中不同runlevels的简要描述–0–Halt停机(不要将0设置为缺省,否则服务器启动后就会马上关闭)–1-Singleusermode单用户模式–2-Multi-user不带NFS的多用户模式(如果没有网络,相当与3)–3-Fullmulti-usermode完全多用户模式–4–Unused未使用–5-X11–6–Reboot重启(不要将6设置为缺省,否则服务器会不断地重启)修改文件/etc/inittab来设置机器启动的runlevel,如Figure10-3。对于SUSELINUXEnterpriseServer,执行YaSTrunlevel命令改变缺省runlevel值.如图Figure10-2。缺省情况下,保存了6个控制台:F1……F6。为节省内存,可以减少为3个。使用mingettyttyx命令来实现,如图Figure10-3提示:即便是已经关闭了GUI,依然可以远程连接并启动GUI,可以使用ssh-x3改变内核参数Linux内核是操作系统的核心,对所有的Linux发行版本是通用的。内核参数可以改变,在命令行下执行sysctl命令。提示:缺省情况下,LINUX内核包括不必重启就可以使用sysctl命令的必要的模块。尽管如此,如果你在安装系统的时候选择移除该功能,那么你只有重新启动LINUX,才可以使得改变生效。SUSELINUX提供了图形界面下的修改方式。使用如下命令来启动powertweak工具:/sbin/yastpowertweak使用如下命令启动基于字符的管理菜单:/sbin/yast2powertweakRedHat也提供了图形界面下更改sysctl参数的方式:/usr/bin/redhat-config-proc如图Figure10-5Parameterstoragelocations内核参数保存在/proc(特别是/proc/sys),提供了内核、处理器、内存、网络及其他组件的相关参数。每个执行的进程都有一个以相应PID命名的目录。Figure10-3列出了一些包括内核信息的文件。4内核的参数Table10-5列出了RedHatV2.4与性能关系密切的一些内核参数。5处理器子系统调优处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。然而在这些系统中,CPU经常是性能的瓶颈。在配有Xeon处理器的高端服务器中,你可以启用或者关闭Hyper-Threading(超线程功能)。Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer都支持该功能,从而可以使处理器在同一时刻执行两个线程或者进程。对于支持Hyper-Threading的操作系统和软件来说,不需要增加CPU时钟频率即可使性能得到明显的改进。例如,在4路的服务器上起用Hyper-Threading功能并使用性能监测工具(如top)来检测,可以看到8颗处理器。如图Figure10-6提示,对于Hyper-Threading:_基于SMP内核的LINUX才可以支持Hyper-Threading_安装的CPU数量越多,从Hyper-Threading获得的性能上的提高就越少。可获得的性能提高大约为:–2颗物理CPU:15-25%––4颗物理CPU:1-13%––8颗物理CPU:0-5%–如需更多的关于Hyper-Threading信息,可浏览:是IntelIA-32处理器的64-bit扩展。意思是,处理器能够支持更多的内存并支持64-bit应用同时完全兼容现存的32-bit应用。RedHatEnterpriseLinux3Update2和SUSELINUXEnterpriseServer9支持这种新的处理器。如需更多的EM64T信息,可浏览:选择正确的内核RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer都包括有若干个内核包,如Table10-6所列。选择合适的内核对性能非常重要。6内存子系统的调优内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。对与虚拟内存的调整包括以下几个项目:_配置Linux内核如何更新dirtybuffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲,磁盘缓冲区的速度很慢。因此,如果服务器使用这类内存,性能会成问题。当缓冲区内的数据完全dirty,使用:sysctl-wvm.bdflush=3050000500300060200vm.bdflush有9个参数,但是建议您只改变其中的3个:1nfract,为排队写入磁盘前,bdflushdaemon允许的缓冲区最大百分比2ndirty,为bdflush即刻写的最大缓冲区的值。如果这个值很大,bdflush需要更多的时间完成磁盘的数据更新。7nfract_sync,发生同步前,缓冲区变dirty的最大百分比。配置kswapddaemon,指定Linux的内存交换页数量sysctl-wvm.kswapd=10243264三个参数的描述如下:–tries_base相当于内核每次所交换的“页”的数量的四倍。对于有很多交换信息的系统,增加这个值可以改进性能。–tries_min是每次kswapdswaps出去的pages的最小数量。–swap_cluster是kswapd即刻写如的pages数量。数值小,会提高磁盘I/O的性能;数值大可能也会对请求队列产生负面影响。如果要对这些参数进行改动,请使用工具vmstat检查对性能的影响。其它可以改进性能的虚拟内存参数为:_buffermem_freepages_overcommit_memory_page-cluster_pagecache_pagetable_cache7文件系统的调优总体而言,所有数据都要从磁盘获取并都要保存到磁盘。磁盘访问速度通常以毫秒来计算,比其它组件要慢上千倍(如内存、PCI操作是以纳秒或者微秒来计算的)。Linux文件系统定义了数据存储和访问的方式。Linux可用的文件系统有多种,它们的性能和可扩展性各不相同。除了保存和管理磁盘数据,文件系统还负责保证数据的完整性。新版的Linux缺省安装已经包括日志文件系统(journalingfilesystems),日志文件系统可防止系统崩溃时导致的数据不一致问题。对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。同其他方面的计算一样,性能和完整性是相互平衡的。然而,因Linux服务器多用于企业环境及数据中心,因此要求具备更高的可用性。这里,我们将介绍RedHatEnterpriseLinuxAS和SUSELINUXEnterpriseServer的文件系统及其性能调优。7.1安装Linux前,硬件方面的考虑当前Linux的发行版本对CPU、硬盘和内存方面均有明确的安装要求。然而,对于如何设置磁盘子系统的说明远远不够。由于Linux服务器被广泛的应用于各种环境,数据中心的服务器整合,我们首先要回答的问题就是:“该服务器的功能是什么?”磁盘子系统可能是整个服务器系统性能的主要方面。了解服务器的功能是判断I/O子系统对性能产生多大影响的关键。下面几种服务器的磁盘I/O性能是非常重要的:_文件和打印服务器要求在用户和磁盘子系统之间快速地移动数据。因文件服务器的功能是向客户端发送数据,所以要快速读取所有的数据。_数据库服务器的最终目标是从磁盘上的数据仓库里查找和获取数据。即便有足够的内存,多数数据库服务器依然需要大量的磁盘I/O将数