swency 2018-09-04
简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。
可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性。
通过sysctl -q vm.swappiness可以查看参数的当前设置。
修改参数的方法是修改vi /etc/sysctl.conf文件,加入vm.swappiness=xxx,并重起系统。
这个操作相当于是修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改为XXX数值。
如果不想重起,可以通过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样做之前先清空swap。
建议设置:vm.swappiness = 10
swap清理代码代码如下:
swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
内存使用到多少开始使用swap?
vm.swappiness 这个内核参数控制
/proc/sys/vm/swappiness
这个交换参数控制内核从物理内存移出进程,移到交换空间。该参数从0到100,当该参数=0,表示只要有可能就尽力避免交换进程移出物理内存;该参数=100,这告诉内核疯狂的将数据移出物理内存移到swap缓存中。
PS:设置vm.swappiness=0 后并不代表禁用swap分区,只是告诉内核,能少用到swap分区就尽量少用到,设置vm.swappiness=100的话,则表示尽量使用swap分区,默认的值是60
调整内存参数,当内存使用率不足10%(开始是默认值60)时在使用swap,尽量避免使用swap,减少唤醒软中断进程,从而降低ksoftirqd进程对cpu的占用。
关于linux内存分配机制
在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。