CentOS Swap如何提高效率
小樊
39
2025-12-27 04:27:18
CentOS 上提升 Swap 效率的实用方案
一 基础配置与容量规划
- 优先使用Swap 文件(便于按需调整),也可使用Swap 分区。创建示例:
- 创建文件:sudo fallocate -l 4G /swapfile(若 fallocate 失败可用 dd if=/dev/zero of=/swapfile bs=1M count=4096)
- 安全权限:sudo chmod 600 /swapfile
- 格式化:sudo mkswap /swapfile
- 启用:sudo swapon /swapfile
- 持久化:在 /etc/fstab 添加“/swapfile none swap sw 0 0”
- 容量建议(按内存与工作负载):
- ≤4GB RAM:2×RAM(如 4GB → 8GB)
- 4–8GB RAM:=RAM
- 8–64GB RAM:固定 8GB
- 64–256GB RAM:固定 16GB
- 内存密集型服务(如数据库)建议 Swap 不超过 4GB,避免磁盘 I/O 放大导致性能劣化。
二 关键内核参数调优
- 降低换出倾向(提升前台响应):
- 查看:cat /proc/sys/vm/swappiness
- 临时:sudo sysctl vm.swappiness=10
- 永久:在 /etc/sysctl.conf 写入“vm.swappiness=10”,执行 sudo sysctl -p
- 多数服务器建议范围:10–30
- 控制脏页回写(减少抖动与突发写盘):
- /etc/sysctl.conf 添加:
- vm.dirty_ratio=10
- vm.dirty_background_ratio=5
- 执行:sudo sysctl -p
- 文件系统缓存压力(可选):适度降低 vm.vfs_cache_pressure,保留更多目录/索引节点缓存,降低因回收引发的不必要换出。
三 使用 Zram 与 Zswap 降低磁盘压力
- Zram(内存内压缩块设备,优先使用):
- 安装与启用:sudo yum install -y zram-config;sudo systemctl start zram-config
- 可按需配置大小(如设置 ZRAM_DEVICE_SIZE=4G 于 /etc/zram-config.conf)
- 适合内存较小或高 I/O 场景,能显著减少对物理 Swap 的依赖
- Zswap(内核级压缩缓存,作为磁盘 Swap 的前置层):
- 适用于希望保留磁盘 Swap 作为兜底、同时降低实际写入量的场景
- 与 Zram 可二选一或协同使用(取决于内核与发行版支持)。
四 放置位置与优先级策略
- 存储介质选择:
- SSD 上 Swap 速度明显优于 HDD,但应关注写入寿命;在老化 SSD或云主机上,建议谨慎启用或尽量减小 Swap,必要时可关闭
- 多 Swap 优先级:
- 通过 swapon 的 –priority 设置优先级,优先使用更快的介质(如 Zram 或高性能 SSD)
- 示例:sudo swapon --priority 32767 /dev/sdX(数值越大优先级越高)
- 场景化建议:
- 内存充足且稳定性优先:可仅保留少量 Swap或仅启用 Zram
- 内存紧张且允许一定磁盘 I/O:使用 SSD-backed Swap 并配合较低 swappiness 与 Zram 分层。
五 监控与维护
- 常用观测:
- 内存与 Swap:free -h
- Swap 启用与优先级:swapon --show
- 实时与历史:top/htop、vmstat、iostat
- 维护与排障:
- 动态调整后验证:watch -n 1 free -h
- 临时停用/启用以清理无效页:sudo swapoff -a && sudo swapon -a(维护窗口内执行,避免业务抖动)
- 容量不足时优先增加 Swap 文件或调整优先级,再考虑重分区
- 变更前做好备份与压测,逐步应用到生产。