示例:修改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.slices、user.slices等使用了swap空间。
直接原因
通过sysctl -w设置vm.swappiness并不能改变cgroup中machine.slice、system.slices、user.slices等里面对应的memory.swappiness值,这些值继承/sys/fs/cgroup/memory下vm.swappiness的值,当创建子目录后,再创建子目录,此时vm.swappiness的值继承于父目录里对应的vm.swappiness值,因此,在系统运行时,只改变/sys/fs/cgroup/memory这个根目录的值,并不影响已创建子目录的vm.swappiness配置,所以如果需要更改,就要手动操作。
总结
正常情况下,如果在sysctl.conf中配置了vm.swappiness的值,重启之后,所有配置都是新值,但如果手动动态更改,就需要手动更改/sys/fs/cgroup/memory下子目录对应的memory.swappiness值。