分配太多的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分区的优化:
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数据库