Linux的SWAP交换分区设置准则

jupiter
2022-01-13 / 0 评论 / 511 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年01月13日,已超过1073天没有更新,若内容或图片失效,请留言反馈。

1.SWAP分区的作用

当Linux系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。

2.SWAP分区设置准则

Redhat官方的文档中关于swap分区大小设置的建议

物理内存建议的交换空间大小如果开启休眠功能建议的交换空间大小
⩽ 2GB内存的2倍内存的3倍
> 2GB – 8GB等于内存大小内存的2倍
> 8GB – 64GB至少4G内存的1.5倍
> 64GB至少4G不建议使用休眠

因此,一般来说可以按照如下规则设置swap大小:

物理内存交换空大小
⩽ 2GB内存的2倍
> 2GB – 4GB4GB
> 4GB – 8GB等于内存大小
> 8GB – 64GB8GB
> 64GB16GB

3.swappiness参数

3.1 系统在什么情况下才会使用SWAP

实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

v100@v100:~$ cat /proc/sys/vm/swappiness
60

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。特别是对于性能要求较高的数据库服务器,要求全部使用内存。

3.2 如何修改swappiness参数

  • 临时性修改:
v100@v100:~$ sudo sysctl vm.swappiness=10
vm.swappiness = 10
v100@v100:~$ cat /proc/sys/vm/swappiness
10
  • 永久修改
v100@v100:~$ sudo vim /etc/sysctl.conf 
# 在文件里添加如下参数
vm.swappiness=10
# 激活设置
sysctl -p

参考资料

  1. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s2-diskpartrecommend-ppc#id4394007
  2. https://www.nowcoder.com/test/question/done?tid=49008240&qid=23231#summary
0

评论 (0)

打卡
取消