开发者

linux调优之swap设置方式

开发者 https://www.devze.com 2025-08-14 10:00 出处:网络 作者: IT杂人
目录原因分析1.swap设置大小2.swap何时使用的时机(开启的阀值)3.如何修改swappiness(开启的阀值)删除、禁用swap分区,不挂载swap与配置0区别,最大化使用物理内存限制docker 的swap使用总结通过free -h查询到
目录
  • 原因分析
    • 1.swap设置大小
    • 2.swap何时使用的时机(开启的阀值)
    • 3.如何修改swappiness(开启的阀值)
  • 删除、禁用swap分区,不挂载swap
    • 与配置0区别,最大化使用物理内存
      • 限制docker 的swap使用
        • 总结

          通过free -h查询到

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

          原因分析

          1.swap设置开启的阀值过大,造成内存达到可使用swap的值

          2.docker 设置了内存限制,但没限制swap的值(待求证)

          3.根虚拟机MAChine.slice和系统system.slices、user.slices等使用了swap空间。

          1.swap设置大小

          安装系统时,选择swap分区;swap不是越大越好,越大的时候说明内存不够用,应该增加内存。

          RedHat官方建议:

          • 物理内存小于等于2GB的swap
          • 应设置为物理内存的2倍
          • 物理内存大于2GB小于等于8G时swap
          • 应设置为等同与物理内存的大小
          • 物理内存大于8GB时swap
          • 应设置为大于等于4GB但不超过8GB。

          自己实际使用时,因为使用了Centos的一键安装脚本anaconda-ks.cfg,

          为了方便分配内存,所以固定大小配置,建议swap分区大小规则:

          • 1.当小于4G时
          • 设置成4G;
          • 2.当大于4G到8G时
          • 设置成8G
          • 3.大于8G时

          设置成16G

          2.swap何时使用的时机(开启的阀值)

          #查询默认的值
          cat /proc/sys/vm/swappiness
          

          centos7默认值可能是30;就是当内存使用>=(100-30=70)%内存总javascript量时,开始使用内存;

          • 当值为0时,表示内存使用率>100%时使用内存,则表明【尽量】不使用swap,实际真占了100%后,还是会继续使用;
          • 当值为100时,表示内存使用率>0%时使用内存,这样则无时无刻不使用swap;

          3.如何修改swww.devze.comwappiness(开启python的阀值)

          当使用内存>=90%时才使用内存;

          #临时设置
          ecwww.devze.comho 10 > /proc/sys/vm/swappiness
          sysctl -p #生效
          
          #永久设置
          echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
          sysctl -p #生效
          

          能有效使用内存,增强性能;如果机器一直长期超过70%的内存使用量,实际应该想想是不是要增加内存;

          删除、禁用swap分区,不挂载swap

          理解/dev/dm-0,dm-1,dm-2

          #1.查看交换分区挂载磁盘
          	swapon -s
          #2.根据上面的查找,填充下面的【可能会卡很久,因为在交换到物理内存,所以可跳过到3】
          	swapoff /dev/X
          #3.删除分区挂载
          	vi /etc/fstab
          #3.1 - 使用#号注释swap挂载信息的行,如下:
          	#UUID=5c6b53d0-7964-4a24-a294-d48f3ad3e461 swap                    swap    defaults        0 0
          #3.2 - 也可能是其他分区,如下:
          	#/dev/mapper/centos-swap swap                    swap    defaults        0 0
          

          以上操作后,需要重启服务器生效

          #重启服务器
          reboot
          #4. free -h 查看生效
          	如果swap分区total=0则生效
          

          与配nzIidwFJqi置0区别,最大化使用物理内存

          只要开启swap分区,不能保证一定不会用swap,即使配置为0,当为0时,内存确实不够时会增大内存回收频率,增加cpu使用率

          #永久设置
          echo "vm.swappiness=0" >> /etc/sysctl.conf #永久修改
          sysctl -p #生效
          

          以上操作后,需要重启服务器生效

          另,如果docker的swap未设置或设置不合理造成swap提前使用(未验证);

          则需要设置docker的swap;

          限制docker 的swap使用

          参数–memory-swap

          linux调优之swap设置方式

          总结

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号