温馨提示×

如何优化Ubuntu的Swap性能

小樊
35
2025-11-14 19:05:13
栏目: 智能运维

Ubuntu 的 Swap 性能优化

一 基线评估与监控

  • 查看是否启用与容量:使用命令查看当前交换设备与大小。示例:sudo swapon --showcat /proc/swaps。若为空,表示未启用 Swap。
  • 观察内存与交换使用:使用 free -h 查看整体内存与 Swap 使用情况;top/htop 实时观察 Swap 占用与进程;vmstat -s | grep swap 获取交换统计摘要。
  • 建议做法:在调整参数或容量前后,记录上述指标,便于评估优化效果与稳定性。

二 关键内核参数与策略

  • 调整 vm.swappiness(交换倾向):值范围 0–100,默认 60。数值越低,内核越少使用 Swap;一般桌面可维持 40 左右,内存充足或服务器可更低(如 10–30)。
    • 查看:cat /proc/sys/vm/swappiness
    • 临时:sudo sysctl vm.swappiness=10
    • 永久:在 /etc/sysctl.conf 添加 vm.swappiness=10 并执行 sudo sysctl -p
  • 原则:不要过度依赖 Swap,优先保证足够物理内存;Swap 仅作为兜底与休眠支持。

三 存储与文件系统优化

  • 使用更快的介质:将 Swap 放在 SSD/NVMe 上可显著降低访问延迟;机械盘场景优先使用 Swap 文件而非分区以便灵活调整。
  • 减少非必要写入:对系统盘启用 noatime(在 /etc/fstab 对应挂载项添加 noatime),降低元数据写入次数。
  • 创建与管理 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
  • 调整现有 Swap 文件大小:先 sudo swapoff /swapfile,再重建为更大尺寸并 mkswap/swapon,最后确认 /etc/fstab 正确。

四 ZRAM 压缩内存交换

  • 适用场景:内存较小或希望降低磁盘 I/O 的场景。ZRAM 在内存中创建压缩块设备用于交换,速度快、写放大小。
  • 启用方式:安装并配置 zram-config(如 sudo apt-get install zram-config 后按提示启用),系统将自动创建与管理 ZRAM 交换设备。
  • 建议:可与磁盘 Swap 共存,作为“前置”高速交换层,减少磁盘 Swap 触发频率。

五 容量规划与取舍

  • 容量建议:当物理内存 < 8GB 时,可设为内存的 约 2 倍;当 ≥ 8GB 时,可设为 与内存相当或略小。若启用休眠(Hibernate),Swap 容量需 ≥ 物理内存 以容纳内存镜像。
  • 取舍与风险提示:频繁使用 Swap 会显著降低性能,优先通过增加内存或优化应用来降低 Swap 依赖;在 SSD 上使用 Swap 会提高速度,但应结合写入寿命与容量规划谨慎配置。
  • 操作注意:调整 Swap 大小或停用/删除前务必备份重要数据,变更后使用 free -hswapon --show 等命令复核状态。

0