示例:修改swappiness值为0

永久配置方法:

sysctl -w vm.swappiness=0

echo vm.swappiness = 0 >> /etc/sysctl.conf


临时配置方法:

sysctl -w vm.swappiness=0

手动更改/sys/fs/cgroup/memory下子目录对应的memory.swappiness


临时配置后可能出现的故障描述:

    物理内存还比较充足,vm.swappiness已经设置为0,但系统还是用了swap分区

 

故障原因

    根因是虚拟机machine.slice和系统system.slicesuser.slices等使用了swap空间。


直接原因

    通过sysctl -w设置vm.swappiness并不能改变cgroupmachine.slicesystem.slicesuser.slices等里面对应的memory.swappiness值,这些值继承/sys/fs/cgroup/memoryvm.swappiness的值,当创建子目录后,再创建子目录,此时vm.swappiness的值继承于父目录里对应的vm.swappiness值,因此,在系统运行时,只改变/sys/fs/cgroup/memory这个根目录的值,并不影响已创建子目录的vm.swappiness配置,所以如果需要更改,就要手动操作


总结

    正常情况下,如果在sysctl.conf中配置了vm.swappiness的值,重启之后,所有配置都是新值,但如果手动动态更改,就需要手动更改/sys/fs/cgroup/memory下子目录对应的memory.swappiness值。