【linux】 swap swappiness相关

来源:互联网 发布:肇庆市民网络问政平台 编辑:程序博客网 时间:2024/06/04 17:59

       安装过linux系统的同学都知道,linux有个叫swap的分区。可不是每一个人都知道这是干嘛用的。swap分区,顾名思义,就是交换分区的意思。那交换什么?什么时候发生交换呢?


       swap分区其实跟window系统的pagefile.sys功能类似(在C盘根目录下),通常pagefile.sys是隐藏的系统文件,如想查看,可以打开“文件夹选项”,来到查看tab,如下图选上红色框框的即可。


        言归正传,swap交换分区存储的是进程的数据。通常,进程的数据是加载在物理内存的。之所以进程的数据会被换入(swap in,si)和换出(swap out,so)交换分区,很大一部分是因为当前系统性能可能存在瓶颈,通常表现为物理内存吃紧。当系统的物理内存不够用的时候,内核调度算法会将物理内存中的一部分空间释放出来,以供其他需要内存空间的进程使用。那些被释放的空间来自些很长时间都没有什么操作的进程,这些被释放的空间被临时换入swap inswap空间中,等到那些进程需要使用时,再从swap分区数据换出(swap out)到内存中。但这并不是说,系统总是在物理内存不够用时,才会进行进程数据swap的。


        进程数据与swap分区发生数据交换的时间,主要由内核的调度算法决定,其过程比较复杂。至少,需要参考内核参数swappinessswappiness的值是告诉内核,使用swap的概率(或频率),其值取[0,100],值越高表示使用swap的可能性越大,100表示尽可能使用swap,0表示不使用swap。通常swappiness的值默认为60


查看或修改swappiness的方法:

1)查看

cat /proc/sys/vm/swappiness

sysctl -a|grep swappiness

2)修改,swappiness的值可根据系统当前的性能状况适当设置

sysctl vm.swappiness=0或echo 0>/proc/sys/vm/swappiness注意:这种方式系统重启后失效

或 echo "vm.swappiness= 0">>/etc/sysctl.conf                     写入到内核参数配置文件中,即使重启也不会失效

sysctl -p       重新读取内核参数配置文件/etc/sysctl.conf,使最新的配置内核参数生效



另:如系统的物理内存足够用,为提高IO的响应速度,可把swap分区禁用。

swapoff -a

然后修改/etc/fstab,将swap分区的信息注释掉。






原创粉丝点击