
Linux中交换空间(swap)应该分多⼤才好?
前⼀段时间,我们机房中⼀台Linux服务器运⾏缓慢,系统服务出现间歇性停⽌响应,让我过去处理⼀下这⼀问题,登录到服务器之后,发现此服务器的物理内存是16G,⽽最初装机的时候,系统管理⼈员却只分配了4G的虚拟内存。查看内存的使⽤状况,物理内存并没有完全耗尽,但虚拟内存已经耗尽,整个系统CPU负载和磁盘IO都⾮常⾼。
知道了问题所在是由于交换分区不⾜导致,那么解决⽅法就是:将虚拟内存通过虚拟⽂件的⽅式增加到16G,系统运⾏状况明显好转。其实虚拟内存并不是等到物理内存⽤尽了才使⽤的,是否尽量的使⽤或不使⽤swap,在内核空间有⼀个参数控制。
1.
[root@localhost ~]# cat /proc/sys/vm/swappiness
2.
60
swappiness=0 的时候表⽰最⼤限度使⽤物理内存,然后才是swap空间;swappiness=100 的时候表⽰
积极的使⽤swap分区,并且把内存上的数据及时的搬运到swap空间⾥⾯。对于现在动辄⼏⼗GB、上百GB物理内存的服务器来说,究竟为其Linux系统设置多⼤的交换分区合适呢?为此,我引⽤红帽官⽅⾥的⼀段⽂字进⾏简单说明⼀下。
⽬前红帽官⽅推荐交换分区的⼤⼩应当与系统物理内存的⼤⼩保持线性⽐例关系,不过在⼩于2GB物理内存的系统中,交换分区⼤⼩应该设置为内存⼤⼩的两倍,如果内存⼤⼩多于2GB,交换分区⼤⼩应该是物理内存⼤⼩加上2GB。其原因在于,系统中的物理内存越⼤,对于内存的负荷可能也越⼤。但是,如果物理内存⼤⼩扩展到数百GB,这样做就没什么意义了,⼤家说对吧!
实际上,系统中交换分区的⼤⼩并不取决于物理内存的量,⽽是取决于系统中内存的负荷。Red Hat Enterprise Linux 可以在这样的情况下⼯作:完全没有交换分区,⽽且系统中匿名内存页和共享内存页⼩于3/4的物理内存量。在这种情况下,系统会将匿名内存页和共享内存页锁定在物理内存中,⽽使⽤剩余的物理内存来缓冲⽂件系统数据(pagecache),当内存耗尽时,系统内核只会回收利⽤这些pagecache内存。
考虑到以下情况:
1)安装系统时难以确定内存的负荷,如何设置交换分区⼤⼩
2)系统中物理内存越⼤,所需交换分区就会越少
因此,在Red Hat Enterprise Linux 中,以下是设置合适的交换分区⼤⼩的规则:
物理内存交换分区(SWAP)
<= 4G⾄少4G
4~16G⾄少8G
16G~64G⾄少16G
64G~256G⾄少32G
注:
1.但我们平时安装系统时,默认都分内存的2倍,因为现在有硬盘空间都很⼤,也不在乎那⼏⼗G的空间,嘿嘿!(其实也是为了省事)
2.其它操作系统也是类似。
更多推荐
内存,系统,物理,分区,交换,服务器
发布评论