什么是 Swap 可用率
Swap 是系统在物理内存不足时使用的磁盘空间,相当于内存的「溢出区」。
可用率计算公式:
Swap 可用率 = (可用 Swap / 总 Swap) × 100%
例如:总 Swap 2GB,已用 1.3GB,可用率 = 35%。
如何检查 Swap 状态
Linux 系统:
# 查看内存和 Swap 使用情况
free -h
# 实时监控 Swap 读写速率(si/so 列)
vmstat 1
# 查看 Swap 分区详情
cat /proc/swaps
Windows 系统:
任务管理器 → 性能 → 查看「页面文件」使用情况。
异常情况的含义
| 状态 | 可能原因 | 影响 |
|---|---|---|
| 可用率极低(< 10%) | 内存严重不足 | 程序启动慢、频繁卡顿、OOM |
| 可用率极高(接近 100%) | 内存充足或 Swap 配置过大 | 通常无问题 |
| Swap 使用量持续增长 | 内存泄漏 | 需要排查泄漏源 |
5 种优化策略
1. 调整 swappiness 参数
控制内核使用 Swap 的倾向,值越低越倾向于使用物理内存:
# 临时调整
echo 10 > /proc/sys/vm/swappiness
# 永久生效
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
服务器建议设置为 10-20,桌面系统可以设置为 60。
2. 增加物理内存
根本解决方案,尤其适合 Swap 频繁被使用的场景。
3. 使用 SSD 作为 Swap
如果必须使用 Swap,SSD 的速度远优于 HDD,能显著减少卡顿感。
4. 使用 ZRAM(内存压缩)
将部分内存用于压缩存储,在不增加硬件的情况下提升有效内存容量:
# 启用 ZRAM
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 2G > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
5. 关闭不必要的后台进程
定期检查并关闭占用内存的后台服务,减少 Swap 压力。
合理的 Swap 大小
传统建议:物理内存的 1-2 倍。
现代服务器(内存 > 16GB):4-8GB Swap 通常足够,主要用于应急。