前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​ 内存还剩余很多,却使用 swap 分区

​ 内存还剩余很多,却使用 swap 分区

原创
作者头像
张琳兮
修改2020-06-18 14:25:39
4.3K0
修改2020-06-18 14:25:39
举报
文章被收录于专栏:首富手记

内存还剩余很多,却使用 swap 分区

代码语言:txt
复制
作者:张首富
时间:2020-06-18
w x:y18163201

原因

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

排查

我登录到机器上,查看机器内存free -h结果如下图

image-20200618110616351
image-20200618110616351

从结果可以看出来,机器在内存还剩 148G 但是 swap 分区却完全被使用完了,这说明我给他创建好 swap 分区之后完全他完全不使用内存了,这是什么情况,查阅资料得到如下解决办法

解决问题

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

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

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

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

然后 ubuntu 和 centos 一般默认都是 60 ,就是当内存使用=(100%-60%)*内存总量

代码语言:txt
复制
cat /proc/sys/vm/swappiness
60

所以才会出现我们上面那种情况,这个时候我们只需要调整这个值即可,

代码语言:txt
复制
sysctl vm.swappiness=10 #临时修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内存还剩余很多,却使用 swap 分区
    • 原因
      • 排查
        • 解决问题
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档