温馨提示×

如何优化CentOS Swap的性能

小樊
56
2026-07-19 09:28:29
栏目: 智能运维

在 CentOS(以及大多数 Linux 发行版)上,Swap 性能优化并不是单一参数能解决的,而是从减少 Swap 使用、提升 Swap 效率、合理配置 Swap 类型和参数三个层面来做。下面按实用性和可操作性给你一个系统化的优化方案。


一、先判断:是否真的需要优化 Swap

1️⃣ 查看当前 Swap 使用情况

free -h
swapon -s

如果:

  • Swap 使用很少 → 优先优化内存使用
  • Swap 频繁使用(si/so 很高) → 需要优化 Swap 或扩容内存

查看 Swap 是否频繁被使用:

vmstat 1

关注:

  • si(swap in)
  • so(swap out)

持续非 0 说明系统压力较大。


二、减少不必要的 Swap 使用(最重要)

2️⃣ 调整 swappiness(核心参数)

swappiness 决定系统使用 Swap 的倾向程度(0–100)。

查看当前值

cat /proc/sys/vm/swappiness

推荐值

场景 swappiness
大内存服务器 10
普通服务器 30
桌面 / 容器 10–20
内存非常紧张 60(不推荐)

临时修改

sysctl vm.swappiness=10

永久生效

vi /etc/sysctl.conf

添加:

vm.swappiness=10

生效:

sysctl -p

这是优化 Swap 性能最立竿见影的一步


三、优化 Swap 读写效率

3️⃣ 使用多个 Swap 分区(而非一个大文件)

✅ 推荐:

  • 使用 多个 Swap 分区
  • 分散在不同磁盘(避免单盘 IO 瓶颈)

查看:

lsblk
swapon -s

示例(新增 Swap 分区):

mkswap /dev/sdb1
swapon /dev/sdb1

4️⃣ Swap 优先级(priority)

多个 Swap 可以设置优先级,提高并发性能。

swapon -p 10 /dev/sda2
swapon -p 10 /dev/sdb2

/etc/fstab 示例:

/dev/sda2 swap swap defaults,pri=10 0 0
/dev/sdb2 swap swap defaults,pri=10 0 0

✅ 相同 priority = 轮询使用(性能更好)


四、Swap 文件 vs Swap 分区(性能对比)

类型 性能 推荐
Swap 分区 ✅ 更好 ✅ 生产环境
Swap 文件 ❌ 稍差 ⚠️ 临时 / 云服务器

如果你只能用 Swap 文件,确保:

  • 使用 ext4 / xfs
  • 关闭 COW(某些文件系统)

五、内核参数进一步优化(进阶)

5️⃣ 调整内存回收行为

vi /etc/sysctl.conf

推荐配置(适合服务器):

vm.swappiness=10
vm.dirty_ratio=10
vm.dirty_background_ratio=5
vm.vfs_cache_pressure=50

说明:

  • dirty_ratio:减少写回压力
  • vfs_cache_pressure:控制 inode/dentry 回收

生效:

sysctl -p

六、SSD / NVMe 场景的特殊优化

6️⃣ SSD 上 Swap 的注意事项

✅ 可以启用 Swap,但:

  • 避免频繁交换
  • swappiness 建议更低(5–10)

7️⃣ 关闭 Swap 的 atime(如果挂载)

chmod 600 /swapfile

七、如果 Swap 很慢,性能瓶颈可能是磁盘

8️⃣ 检查磁盘 IO

iostat -x 1

如果:

  • %util 接近 100%
  • await 很高

✅ 说明 磁盘是瓶颈,不是 Swap 本身

解决方案:

  • 把 Swap 放到更快的磁盘
  • 或直接加内存(最彻底)

八、终极建议(非常重要)

Swap 优化 ≠ 让 Swap 更快
而是 = 尽量不用 Swap

✅ 优化优先级总结

  1. 降低 swappiness
  2. 升级内存(最有效)
  3. 多 Swap 分区 + 高优先级
  4. 减少不必要的内存泄漏/缓存占用
  5. 最后才考虑 Swap 本身优化

九、生产环境通用推荐配置(示例)

vm.swappiness=10
vm.dirty_ratio=10
vm.dirty_background_ratio=5
vm.vfs_cache_pressure=50

如果你愿意,我可以根据你的:

  • CentOS 版本(7 / 8 / Stream)
  • 内存大小
  • 是否 SSD / 云服务器
  • 当前 Swap 配置

给你一份 定制优化方案(可直接照做)。

0