在 CentOS(以及大多数 Linux 发行版)上,Swap 性能优化并不是单一参数能解决的,而是从减少 Swap 使用、提升 Swap 效率、合理配置 Swap 类型和参数三个层面来做。下面按实用性和可操作性给你一个系统化的优化方案。
free -h
swapon -s
如果:
查看 Swap 是否频繁被使用:
vmstat 1
关注:
si(swap in)so(swap out)持续非 0 说明系统压力较大。
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 性能最立竿见影的一步
✅ 推荐:
查看:
lsblk
swapon -s
示例(新增 Swap 分区):
mkswap /dev/sdb1
swapon /dev/sdb1
多个 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 分区 | ✅ 更好 | ✅ 生产环境 |
| Swap 文件 | ❌ 稍差 | ⚠️ 临时 / 云服务器 |
如果你只能用 Swap 文件,确保:
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
✅ 可以启用 Swap,但:
chmod 600 /swapfile
iostat -x 1
如果:
%util 接近 100%✅ 说明 磁盘是瓶颈,不是 Swap 本身
解决方案:
Swap 优化 ≠ 让 Swap 更快
而是 = 尽量不用 Swap
swappinessvm.swappiness=10
vm.dirty_ratio=10
vm.dirty_background_ratio=5
vm.vfs_cache_pressure=50
如果你愿意,我可以根据你的:
给你一份 定制优化方案(可直接照做)。