温馨提示×

如何优化ubuntu swapper

小樊
35
2026-08-21 05:52:54
栏目: 智能运维

在 Ubuntu 中,swapper 通常指 swap 交换空间(swap partition / swapfile)的管理与优化。下面从是否该用 swap、如何优化、常见参数、实战示例几个方面系统说明。


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

✅ 需要优化 swap 的情况

  • 内存较小(≤ 8GB)
  • 经常出现卡顿、OOM(Out of Memory)
  • 使用休眠(hibernate)
  • 运行数据库 / 编译大项目 / 虚拟机

❌ 不太需要 swap 的情况

  • 内存 ≥ 16GB
  • 服务器只跑少量服务
  • 对延迟极其敏感(如高频交易)

二、优化 Ubuntu swap 的核心方向

1️⃣ 使用 swappiness(最重要)

swappiness 决定系统何时开始使用 swap

cat /proc/sys/vm/swappiness

默认值通常是 60

推荐值

场景 swappiness
大内存桌面 10
普通笔记本 10–30
小内存 / 服务器 30–60

临时修改

sudo sysctl vm.swappiness=10

永久生效

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

2️⃣ 使用 vfs_cache_pressure

控制系统回收 目录 / inode 缓存 的倾向

cat /proc/sys/vm/vfs_cache_pressure

默认是 100

推荐

vm.vfs_cache_pressure=50

(减少不必要的 swap)


3️⃣ 检查 swap 是否已启用

swapon --show
free -h

4️⃣ 使用 swapfile(比分区更灵活 ✅)

创建 swapfile(推荐 2–4GB)

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

5️⃣ 调整 swap 读写优先级(多 swap 时)

swapon --show

修改优先级:

sudo swapoff /swapfile
sudo swapon -p 10 /swapfile

priority 越高越优先使用


三、SSD / NVMe 特别优化

✅ 建议

  • swap 放在 SSD 没问题
  • swappiness 可更低(10–20)
  • 不需要禁用 swap

❌ 不建议

  • 频繁写入小 swap(会影响寿命,但现代 SSD 基本可忽略)

四、禁用 swap(不推荐,除非你知道在做什么)

sudo swapoff -a

永久禁用:

sudo nano /etc/fstab
# 注释掉 swap 行

五、数据库 / 服务器专用建议

MySQL / PostgreSQL

vm.swappiness=1
vm.overcommit_memory=2

Docker / Kubernetes

  • 通常 不建议 swap
  • 或设为极低 swappiness

六、快速优化模板(推荐直接复制)

# /etc/sysctl.conf
vm.swappiness=10
vm.vfs_cache_pressure=50

应用:

sudo sysctl -p

七、如何验证优化效果?

vmstat 1
htop
sar -r 1

观察:

  • swap 使用是否减少
  • si/so(swap in/out)是否接近 0

八、常见误区 ❌

误区 说明
swap 一定慢 不一定,现代 SSD 很快
有 swap 会卡 是 swappiness 设置不当
大内存不需要 swap OOM 时仍可能崩溃

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

  • Ubuntu 版本
  • 内存大小
  • 桌面 / 服务器 / 云主机
  • 是否使用 SSD

我可以给你一套完全定制的 swap 优化方案

0