首页主机资讯centos swap性能调优方法有哪些

centos swap性能调优方法有哪些

时间2026-01-19 13:20:03发布访客分类主机资讯浏览801
导读:CentOS 交换分区性能调优方法 一 容量与布局 先明确业务类型:数据库、消息队列、实时计算等对延迟敏感的工作负载更适合“小而有保障”的 swap;批处理、离线任务可容忍更高 swap 使用。 容量建议(经验与官方口径并存,按场景取舍)...

CentOS 交换分区性能调优方法

一 容量与布局

  • 先明确业务类型:数据库、消息队列、实时计算等对延迟敏感的工作负载更适合“小而有保障”的 swap;批处理、离线任务可容忍更高 swap 使用。
  • 容量建议(经验与官方口径并存,按场景取舍):
    • 通用规则:小于4GB内存可设约4GB4–8GB8GB;大于8GB16GB
    • 若更看重稳定性与缓冲,可参考“1–2 倍 RAM”的上限策略,但内存很大(如≥64GB)时不必盲目放大,通常8–16GB即可。
  • 布局与介质:
    • 优先使用SSD/NVMe承载 swap,显著降低换页延迟;HDD 场景尽量减少 swap 使用或降低 swappiness。
    • 可配置多个 swap 区/文件并设置优先级(pri=),利于多盘分担 IO(如:swapon -p 10 /swapfile1;swapon -p 5 /swapfile2)。
  • 创建与启用示例(swap 文件):
    • 创建:fallocate -l 8G /swapfile(或 dd if=/dev/zero of=/swapfile bs=1G count=8)
    • 权限:chmod 600 /swapfile
    • 格式化:mkswap /swapfile
    • 启用:swapon /swapfile
    • 持久化:/etc/fstab 追加“/swapfile none swap sw 0 0”。

二 关键内核参数

  • vm.swappiness(换出倾向,范围0–100
    • 默认值多为60;延迟敏感服务建议更低(如10);内存充足且容忍 OOM 的场景可更低(如1);设为0并非“绝对不用 swap”,只是尽量避免,极端内存紧张仍会使用。
    • 临时:sysctl vm.swappiness=10;永久:/etc/sysctl.conf 添加“vm.swappiness=10”。
  • vm.vfs_cache_pressure(VFS 目录/索引节点回收倾向)
    • 默认100回收较激进;可适当降低(如50)以保留更多目录/索引缓存,减少元数据 IO。
  • vm.min_free_kbytes(保留最小空闲内存)
    • 影响内存“水位线”(min/low/high),过小易触发直接回收导致卡顿,过大浪费内存。经验值可在1–8GB区间按内存规模选取(如4GB)。
  • 透明大页 THP
    • 对内存密集型/低延迟服务,建议关闭以减少延迟抖动:echo never > /sys/kernel/mm/transparent_hugepage/enabled;echo never > /sys/kernel/mm/transparent_hugepage/defrag。
  • NUMA 与 zone_reclaim_mode
    • 多 NUMA 节点且出现“内存尚有空闲却发生 swap”的场景,可设 vm.zone_reclaim_mode=0,允许跨节点分配,降低不必要回收与换页。
  • 可选:tuned 服务
    • 若已手工完成内核参数优化,可关闭 tuned 避免策略冲突:tuned-adm off;systemctl stop tuned & & systemctl disable tuned。

三 使用 zswap 与 zram

  • zswap(内核级压缩缓存,位于内存中,减少对磁盘 swap 的访问)
    • 适合物理内存较紧张、偶尔换页的场景;开启后可显著降低磁盘 IO,提升响应。
  • zram(在内存中创建压缩块设备充当 swap)
    • 适合无磁盘 swap 或磁盘性能较差的环境;注意会占用一部分可用 RAM。
  • 二者均可在现代发行版启用,通常优先尝试 zswap,资源更紧张或无法使用磁盘 swap 时再考虑 zram。

四 监控与故障排查

  • 常用观测
    • free -h、swapon -s、top/htop、vmstat 1、iostat -x 1;关注 si/so(换入/换出)、await、svctm、%util 等指标。
  • 典型问题与处理
    • “内存充足却用 swap”:检查 swappiness 是否过高、是否启用 THP、是否存在 cgroup/memory.limit_in_bytes 限制(如容器未限 swap)、以及 systemd/system.slice/docker 等是否占用;必要时降低 swappiness、关闭 THP、为容器设置内存与 swap 限额。
    • 禁用或移除 swap(谨慎)
      • 先停用:swapoff -a(可能耗时);再在 /etc/fstab 注释 swap 行;如需彻底移除,删除 swap 文件/分区并调整分区表。生产环境不建议无替代方案下直接禁用。

五 场景化建议

  • 延迟敏感(数据库、消息队列、低延迟 API)
    • 小容量 swap(如1–4GB或按“4/8/16GB”规则),vm.swappiness≈1–10,关闭 THP,必要时设 vm.zone_reclaim_mode=0;优先 SSD/NVMe;监控 si/so 接近 0。
  • 大数据/内存密集型(如 CDH 集群)
    • 倾向 vm.swappiness=0–1、合理 vm.min_free_kbytes(如4GB量级)、关闭 THP、zone_reclaim_mode=0;确保 swap 在 SSD 上,避免抖动放大。
  • 通用/虚拟机
    • 采用“4/8/16GB”容量基线,vm.swappiness≈10–30,开启 zswap 作为第一道防线;结合工作负载逐步微调并压测验证。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos swap性能调优方法有哪些
本文地址: https://pptw.com/jishu/785750.html
centos swap如何监控和优化 centos swap与物理内存的区别在哪

游客 回复需填写必要信息