温馨提示×

ubuntu swap如何优化设置

小樊
39
2026-01-06 21:46:10
栏目: 智能运维

Ubuntu 交换空间优化设置指南

一 基线评估与监控

  • 查看当前状态与位置
    • 查看内存与交换使用:free -h
    • 查看已启用的交换:sudo swapon --show
    • 查看交换设备详情:cat /proc/swaps
  • 观察是否存在频繁换入换出
    • 使用 vmstat 1 关注 si(swap in)与 so(swap out),持续非零表示磁盘交换频繁,需优先优化内存占用或调整策略。

二 交换使用倾向 vm.swappiness 与缓存压力

  • 查看与临时调整
    • 查看:cat /proc/sys/vm/swappiness(默认多为 60
    • 临时设为 10sudo sysctl vm.swappiness=10
  • 永久生效
    • 写入配置:echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
  • 桌面与交互体验
    • 桌面用户常将 swappiness 调低(如 10)以减少卡顿;服务器可按负载适当降低,避免不必要的磁盘 I/O。
  • 可选 缓存压力
    • 适度降低可回收的 VFS 目录项缓存压力:echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf,有助于在高内存占用下保持流畅。

三 交换空间大小与实现方式

  • 大小建议(按内存容量与用途)
    • 2GB 内存
    • 2–8GB≈ 内存大小
    • >8–64GB4–8GB
    • >64GB1–4GB 或视业务/OOM 策略考虑禁用;若需休眠(Hibernate),交换空间需 ≥ 物理内存
  • 实现方式选择
    • 优先使用 Swap 文件(灵活调整大小);传统 Swap 分区性能略优但调整困难;大内存场景可结合 Zswap(内核 4.0+)在内存中先压缩页面,减少磁盘写入。

四 实操 创建或调整 Swap 文件

  • 创建与启用(示例 8GB
    • 创建:sudo fallocate -l 8G /swapfile(若失败可用 sudo dd if=/dev/zero of=/swapfile bs=1G count=8
    • 权限:sudo chmod 600 /swapfile
    • 格式化:sudo mkswap /swapfile
    • 启用:sudo swapon /swapfile
    • 验证:free -hsudo swapon --show
  • 永久生效
    • 追加到 /etc/fstabecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • 调整大小(增大/缩小)
    • 先停用:sudo swapoff -a
    • 备份并重建所需大小的 Swap 文件(如上),再 swapon -a
    • 如替换旧交换,记得从 /etc/fstab 移除旧条目。

五 进阶 启用 Zswap 与常见场景建议

  • 启用 Zswap(减少磁盘 I/O,适合 SSD/NVMe
    • 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 添加:zswap.enabled=1 zswap.compressor=lz4
    • 更新并重启:sudo update-grub && sudo reboot
  • 场景化建议
    • 桌面/交互优先:适度降低 swappiness,必要时启用 Zswap,将交换放在 SSD 上以降低卡顿。
    • 服务器/数据库:内存充足时将 swappiness 设为 10 左右,避免频繁换页;若内存极大(如 >64GB)且业务可控,可仅保留少量交换或禁用,并配合监控告警与 OOM 策略。
    • 休眠需求:确保交换空间 ≥ RAM 容量,否则无法完整休眠。

0