Swap (小内存机型优化)

中文名:交互分区、虚拟内存(Windows)

作用:当内存不足时,拿出一部分硬盘作为内存使用用来缓解内存不足的情况。

举例一个场景

2h2g 的服务器作为 vscode 的远程开发机,配置不够。vscode建议最少4GB内存,低于这个标准就容易死机造成断联。


一、如何查看是否开启 swap?

部分服务器已经开启了 swap,就没必要重复打开了。

最简单的办法就是使用 top 命令,查看 MiB Swap 项是否有数值。

其中

  • total 是虚拟内存容量
  • free 是剩余可用
  • used 是已经使用的

如果 used 一直是 0 说明没有配置好下列参数

  • vm.swappiness
  • vm.min_free_kbytes

可以在第二部分找到单独配置一下~


二、从零开始开启 swap

# 创建一个 8GB 的 swap 交互文件
sudo fallocate -l 8G /swapfile

# 修改权限
sudo chmod 600 /swapfile

# 在一个文件或设备上建立交互分区
sudo mkswap /swapfile

# 启动交互分区
sudo swapon /swapfile

# 挂载
vi /etc/fstab
# 在结尾加入
/swapfile none swap sw 0 0

# 配置使用swap的条件
vi /etc/sysctl.conf
# 加入或编辑两行配置
vm.swappiness = 60 # 权重, 默认 60 (0=从不使用, 100=积极使用)
vm.min_free_kbytes = 500000 # 当剩余内存低于此值时(KB), 使用 swap

# 最后,重启生效 :)
reboot

配置说明

  • vm.swappiness (分配 swap 交互内存权重)

    取值范围

    0-100,默认 60

    建议优化策略

    当内存小于 2GB 可以改为 80

    当内存小于 4GB 可以改为 25-60

    当内存大于等于 8GB 时建议改为 0,不要使用 swap

    温馨提示

    vm.swappiness 不是越大越好

    首先大于 8GB 内存没必要开

    低于 8GB 内存也不建议设置过大,性能受制于 io 和 cpu;

    设置过大可能造成负优化

  • vm.min_free_kbytes (当剩余内存低于此值时,使用swap,单位为KB)

    建议优化策略

    内存越小,该值可以略大。防止突发内存需求造成死机。

    我 2h2g 设置 500000(488MB) 仅供参考

Last Updated:
Contributors: 余小波