让你的Linux更快:Linux更改Swap策略

什么是Swap分区

自己安装过Linux系统的朋友可能还记得,在我们安装Linux系统时,需要创建叫做Swap的分区,网上大部分教程中大都建议Swap分区大小和RAM大小相当以便休眠时可以快速启动。

那么Swap分区是干什么用的呢?

简单来说,Swap(交换分区)是一块虚拟内存空间,也就是Linux系统会把一部分磁盘当作备用的内存来使用,
(是的,和我们经常在各大国产安卓定制系统中听到的内存扩展、虚拟内存是一个东西)
当系统中内存不足且某个进程不再活跃时,它会从RAM中被交换(Swap)到单独规划出的Swap分区以便备用,这主要是为了减轻内存压力,保证前台的流畅运行,同时避免因为资源不足导致进程被杀死(killed)。

怎样控制内核交换

我们刚才在讲进程Swap时,提到的 “系统中内存不足” 是一个模糊的概念,在实际的操作中,必须有一个指标将这个模糊的概念量化。

由此,就不得不提Linux系统中的一个内核参数:

vm.swappiness

这里的vm指的是 Vertial Machine 即 Linux 操作系统(有时也指应用程序的运行环境),
swappiness表示交换区 (Swap分区) 的使用频率。

这个值可以在0~200之间。

这个参数的值越大,意味着内核会更加积极的将内存中的数据移动到Swap分区,反之亦反。

vm.swappiness含义
0指示内核尽可能避免交换
10-50指示内核在换出内存页面时稍微积极一些
50-100指示内核在换出内存页面时适度积极
>100指示内核在换出内存页面时非常积极

很多资料认为,vm.swappiness 是内核开始交换时RAM的使用百分比,但如果你使用top或top like工具(这里推荐bashtop)查看时会发现这并不符合实际情况。

实际上,wappiness 更关心的是在文件支持的页面缓存所需的资源和匿名内存所需的资源之间平衡内存资源。-- By Robert Sheldon

为什么要更改Swap策略

如此以来,有了Swap分区系统就可以智能得将暂时不用的文件从RAM中移出,既保证了前台流畅,又保持了进程存活。

这听起来不错,不是吗? 😃

但是,有一个问题:
如果我们把文件从RAM中交换到ROM,一旦我们向重新把它读取到RAM,由于ROM相较与RAM孱弱的IO性能,开销将是巨大的,作为用户我们直观的感受就是应用卡顿。
如果swappiness设置的过于激进,系统就会在RAM还有大量可用空间时就开始动用Swap分区,这显然是我们在PC上不希望看到的(服务器另当别论),毕竟我们希望我们能榨干电脑的每一滴性能来保证流畅的体验 (毕竟我们为硬件花了钱)。

因此,通常情况下,虽然我们会提供Swap分区以备不时之需,但我们都希望系统能先使用RAM来维持性能,而不是使用Swap来损耗我们的磁盘寿命。

然而,在大多数Linux发行版中vm.swappiness的默认值通常是60。

显然,这对于大部分PC用户来说略高了。

那么我们该怎样调整这个值呢?

调整Swap策略

查看

如果你想查看Swappiness的值,可以

cat /proc/sys/vm/swappiness

或者

sudo sysctl vm.swappiness

临时更改

如果你想临时更改Swappiness看看效果,你可以:

sudo sysctl vm.swappiness=[value]

这里[value]为你要修改的值。
但是注意,下次开机时临时更改的值将会消失。

永久更改

对于永久更改:
你可以在/etc/sysctl.conf最后添加一行

vm.swappiness=[value]

同样 [value] 为你要更改的值。
更改完成后,保存文件。

之后执行,

sysctl -p

生效。

应该改成什么值合适?

对于合适的大小,并没有绝对的最优解,应该根据实际的软硬件情况调整,可能需要反复实验和调试才能找到性能最优的方案。

(我电脑设置的值为5,可以供你参考)

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值