浅谈linux性能调优之二:优化swap分区

泄露秘密 提交于 2019-11-30 11:50:34
    先说说什么是swap分区以及它的作用?     
    Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序 使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢 复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

         分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。
         如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生 出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。
         通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有 不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服 务器,随着访问量的增加,对Swap空间的要求也会增加,具体配置参见各服务器产品的说明。
         另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式 操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处 于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的
        
         看了这么多,再想想有时在论坛中的有的人说的他们的内存很大而没必要使用swap分区,别人10台机器能解决的问题,我们若合理使用swap分区,使用8台机器能解决的问题,何乐而不为呢 ?
        下面来看看红帽官方的建议:
    图1
 

浅谈linux性能调优之二:优化swap分区 - 了了 - 了了的博客

 
        下面说说swap分区的优化:
             1.首先,做到尽量使用分区而非文件,记住除非万不得已
             2.当然也可能是空间太小,那么就自己添加swap分区
             3.特别注意的的是使用分区号较小的分区(我在‘浅谈linux性能优化之一:分区策略’中强调过)
             4.分布到不同设备上可以实现轮循
             5.若真的有多个swap分区,也可以指定优先级,意思也就是优先使用性能较好的分区
                   注意在配置文件/etc/fstab中的书写:(数字越大,优先级越高,也可以使用swapon -p 来指定)
                       /dev/hda1 swap swap defaults,pri=10 0 0
                       /dev/hda5 swap swap defaults,pri=5 0 0
             6.一个重要的参数:
                [root@desktop31 ~]# sysctl -a | grep vm.swa
                  vm.swappiness = 60  
                 linux内核调优过程有几个特殊的值,包括这个,不是具体的百分比,而是一个期望值,在这里越接近0尽量使用cache,越接近100尽量使用swap,只是个趋向值
             7.两个一般不调节的值:
            vm.swap_token_timeout = 300   时间间隔
            vm.page-cluster = 3           一次性写入swap的页面数2^3*4K  = 32K


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!