一、什么是swappiness
swappines是Linux的一个内核参数,控制系统在进行swap时,内存使用相对权重。
那么系统在进行swap时,系统做了什么?
系统swap时在做什么?
在Linux系统中,当物理内存不足时,系统会拿出预先设定好的部分硬盘空间当swap分区使用,从而解决内存容量不足的情况。
当某进程向系统请求内存发现不足时,系统会把内存中暂时不用的数据交换出去,放在swap分区中,这个过程称为swap out 。
当某进程又需要这些数据且系统发现还有空闲物理内存时,又会把swap分区中的数据交换回物理内存中,这个过程称为swap in 。
当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。
可以理解为系统在硬盘上设置swap分区,当内存不足了,把这部分硬盘当作内存来用。
二、swappiness有什么用
swappiness参数值可设置范围在0到100之间。
此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间。
CentOS系统此参数的默认值是30,表示当内存使用超过70%,系统开始使用swap分区。
这里CDH推荐swappiness为10,表示当内存使用率超过90%,系统开始使用swap分区。
三、如何修改swappiness
查看swappniess
cat /proc/sys/vm/swappiness
临时修改
echo 10 > /proc/sys/vm/swappiness
或
sysctl vm.swappiness=10
临时修改,当前系统的swappiness为10,但重启后,系统的swappiness继续恢复默认值。
永久修改
vim /etc/sysctl.conf
在配置文件中添加参数
vm.swappiness=10
此方法为永久修改swappiness分区的办法。