内存还剩余不少,却使用 swap 分区

内存还剩余不少,却使用 swap 分区

做者:张首富
时间:2020-06-18
w x:y18163201

缘由

今天早上 AI 部门工程师来找我说,你会给 ubuntu 设置 swap 分区吗,咱们机器内存好像不咋够用了,给我搞个 swap 分区吧!我说好的,这么简单分分钟钟的事情,我三下五除二的就给他搞定了,给他说好了,你用吧,可是过一会他就跑来讲,你给我弄好 swap 分区以后这台机器就特别特别卡,你能帮我看看什么问题吗?ubuntu

排查

我登陆到机器上,查看机器内存free -h结果以下图centos

image-20200618110616351

从结果能够看出来,机器在内存还剩 148G 可是 swap 分区却彻底被使用完了,这说明我给他建立好 swap 分区以后彻底他彻底不使用内存了,这是什么状况,查阅资料获得以下解决办法缓存

解决问题

swappiness的值的大小对如何使用swap分区是有着很大的联系的。bash

swappiness=0的时候表示最大限度使用物理内存,而后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,而且把内存上的数据及时的搬运到swap空间里面。app

当该参数= 0,表示只要有可能就尽力避免交换进程移出物理内存; 该 参数=100,这告诉内核疯狂的将数据移出物理内存移到swap缓存中。ide

这个值只是一个Linux在判断是否交换内存(swap)的一个“倾向”参考值,而并非说,设置为0之后,Linux就彻底不会使用内存交换空间code

而后 ubuntu 和 centos 通常默认都是 60 ,就是当内存使用=(100%-60%)*内存总量blog

cat /proc/sys/vm/swappiness
60

因此才会出现咱们上面那种状况,这个时候咱们只须要调整这个值便可,进程

sysctl vm.swappiness=10 #临时修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

改完以后就会使用物理内存了,刚才卡的状况也解决了内存

相关文章
相关标签/搜索