温馨提示×

ubuntu swap怎样优化

小樊
58
2026-09-13 06:03:23
栏目: 智能运维

在 Ubuntu 中,swap(交换分区/交换文件)的合理优化可以显著提升系统在内存紧张时的稳定性和性能。下面从是否该用 swap、大小设置、使用策略、I/O 优化、常见场景几个方面说明。


一、先判断:你是否需要 swap?

✅ 推荐使用 swap 的情况

  • 物理内存 ≤ 8GB
  • 运行数据库、编译、虚拟机、Docker 等内存波动大的任务
  • 需要休眠(hibernate)功能(swap ≥ 内存大小)
  • 云服务器(防止 OOM 被杀)

❌ 可以不用或少用 swap 的情况

  • 内存 ≥ 16GB 且负载稳定
  • 对延迟极其敏感(如高频交易)

二、Swap 大小建议(通用经验)

内存大小 建议 swap
≤ 2GB 2 × RAM
2–8GB = RAM
8–16GB 4–8GB
≥ 16GB 2–4GB(或仅用于 OOM 保护)
休眠 ≥ RAM

三、优化 swappiness(最关键)

swappiness 控制内核使用 swap 的倾向(0–100)

查看当前值

cat /proc/sys/vm/swappiness

推荐设置

  • 桌面 / 通用服务器:10–20
  • 数据库服务器:1–10
  • 极低延迟系统:1

临时修改

sudo sysctl vm.swappiness=10

永久生效

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

保存后:

sudo sysctl -p

四、优化 vfs_cache_pressure

控制 inode/dentry 缓存回收倾向(默认 100)

cat /proc/sys/vm/vfs_cache_pressure

✅ 建议值:50(减少不必要的 swap)

sudo sysctl vm.vfs_cache_pressure=50

永久:

vm.vfs_cache_pressure=50

五、使用 swap 文件(比分区更灵活)

创建 swap 文件(例如 4G)

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

开机自动挂载

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

六、I/O 性能优化(SSD / NVMe)

1. 使用 SSD/NVMe

swap 在 HDD 上会明显拖慢系统

2. 启用 discard(SSD)

sudo swapon --discard /swapfile

fstab 示例:

/swapfile none swap sw,discard 0 0

3. 压缩 swap(zram,强烈推荐)

zram = 内存中压缩 swap,速度极快

sudo apt install zram-tools

配置:

sudo nano /etc/default/zramswap

示例:

ALGO=lz4
SIZE=50%

重启:

sudo systemctl restart zramswap

✅ 适合:笔记本、低内存服务器、云主机


七、关闭或清理 swap(必要时)

查看使用情况

free -h
swapon --show

临时关闭

sudo swapoff -a
sudo swapon -a

完全禁用 swap

sudo swapoff -a

并注释 /etc/fstab 中 swap 行


八、监控 swap 是否异常

vmstat 1
iostat -x 1
sar -W 1

关注:

  • si/so 是否频繁
  • 磁盘 IO 是否瓶颈

九、典型推荐方案(总结)

✅ 8GB 内存笔记本

  • zram(50%)
  • swappiness=10

✅ 16GB 服务器

  • 2–4GB swap 文件
  • swappiness=1

✅ 数据库服务器

  • swappiness=1
  • 尽量不 swap

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 内存大小
  • 是否 SSD
  • 主要用途(桌面 / 服务器 / Docker / 数据库)

我可以给你一套直接可执行的优化命令。

0 踩