温馨提示×

ubuntu swapper怎么优化

小樊
74
2026-08-31 17:54:55
栏目: 智能运维

在 Ubuntu(以及大多数 Linux 发行版)中,“swapper”一般指交换空间(swap)相关的机制,而不是某个单独的进程。优化 Ubuntu 的 swap,通常目的是:减少不必要的 swap 使用、提高性能、避免卡顿。下面从原理 + 实操角度给你一套常用优化方案。


一、先搞清楚几个关键概念

1. swappiness(最重要)

swappiness 决定系统有多“积极”地把内存数据换到 swap。

  • 值范围:0 ~ 100
  • 默认值:60
  • 含义:
    • 值越大 → 越倾向于用 swap
    • 值越小 → 越倾向于留在内存中

对现代机器(尤其是 SSD + 大内存)来说,60 通常太激进。


二、推荐的优化方案(按使用场景)

✅ 场景 1:内存 ≥ 8GB(台式机 / 笔记本)

建议 swappiness = 10

cat /proc/sys/vm/swappiness

临时修改:

sudo sysctl vm.swappiness=10

永久生效:

sudo nano /etc/sysctl.conf

添加或修改:

vm.swappiness=10

✅ 场景 2:服务器(数据库 / Docker / K8s)

建议 swappiness = 1 或 5

vm.swappiness=1

原因:swap 延迟会严重影响数据库性能。


✅ 场景 3:内存 ≤ 4GB(老机器)

建议 swappiness = 30~40

vm.swappiness=30

三、swap 使用方式优化

1️⃣ 使用 zram(强烈推荐,尤其是内存小)

把 swap 放到压缩内存中,比磁盘快很多。

Ubuntu 20.04+ 支持 zram:

sudo apt install zram-tools

或修改配置:

sudo nano /etc/default/zramswap

示例:

ALGO=lz4
PERCENT=50

重启:

sudo systemctl restart zramswap

✅ 优点:

  • 延迟低
  • 减少磁盘 IO
  • 对 SSD 友好

2️⃣ 使用 swapfile(比 swap 分区灵活)

创建 swapfile:

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

3️⃣ SSD 用户建议

  • ✅ 使用 swapfile + swappiness=10
  • ✅ 不需要关闭 swap(会让 OOM 更危险)
  • ❌ 不建议频繁写入 swap 分区

四、其他内核参数(进阶)

可以一起调整:

vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5

含义简要说明:

  • vfs_cache_pressure:控制 inode/dentry 缓存回收
  • dirty_ratio:控制写缓存

五、如何判断是否需要优化?

1️⃣ 查看 swap 使用情况

free -h
swapon --show

2️⃣ 是否已经频繁 swap?

vmstat 1

如果 si/so 长期不为 0,说明 swap 活跃,需要优化。


六、常见误区 ❌

❌ 完全关闭 swap

会导致 OOM killer 直接杀进程

❌ swappiness=0

内存耗尽时仍然会 swap,只是更晚

❌ 服务器大量 swap 还能用

数据库性能会严重下降


七、总结(直接照着做)

✅ 最推荐组合(通用)

vm.swappiness=10
vm.vfs_cache_pressure=50

✅ 小内存机器

  • 开启 zram
  • swappiness = 30

✅ 服务器

  • swappiness = 1
  • 不依赖 swap

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

  • 内存大小
  • 是否 SSD
  • 是桌面还是服务器
  • 是否跑数据库 / Docker

我可以给你一套完全定制的优化参数 ✅

0 踩