温馨提示×

怎么优化ubuntu swap

小樊
45
2026-09-19 09:27:45
栏目: 智能运维

在 Ubuntu 中优化 swap(交换分区/交换文件),可以从是否使用 swap、swap 大小、swappiness、缓存压力、使用 zram/zswap、以及磁盘类型几个方面来做。下面按“实用优先”的方式给你一套优化思路。


一、先确认当前 swap 状态

swapon --show
free -h
cat /proc/swappiness

二、合理设置 swap 大小(很重要)

通用建议

  • 内存 ≤ 2GB:swap = 2 × 内存
  • 内存 2–8GB:swap = 内存大小
  • 内存 8–16GB:swap = 4–8GB
  • 内存 ≥ 16GB:
    • 桌面/普通服务:2–4GB
    • 跑 Docker / 编译 / 虚拟机:8GB+

⚠️ 不建议:

  • 内存很大却设几十 GB swap(浪费)
  • 完全关掉 swap(OOM 风险更高)

三、调整 swappiness(最常用优化)

swappiness 决定系统多早使用 swap(0–100)

查看

cat /proc/sys/vm/swappiness

推荐值

  • 桌面 / 笔记本:10–20
  • 服务器:10
  • 低内存机器:30–60

临时修改

sudo sysctl vm.swappiness=10

永久修改

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

生效:

sudo sysctl -p

四、调整 vfs_cache_pressure(缓存回收)

控制 inode/dentry 缓存回收速度

cat /proc/sys/vm/vfs_cache_pressure

推荐:

  • 服务器:50
  • 桌面:100(默认)

修改:

sudo sysctl vm.vfs_cache_pressure=50

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

创建 swap 文件

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

六、SSD 用户特别优化

如果你 swap 在 SSD:

  • swappiness 可稍高(如 10–20)
  • 启用 discard(TRIM)
sudo swapon --discard /swapfile

fstab 中:

/swapfile none swap sw,discard 0 0

七、内存小?用 zram(强烈推荐)

zram 用压缩内存当 swap,比磁盘 swap 快很多

安装

sudo apt install zram-tools

配置

sudo nano /etc/default/zramswap

示例:

ALGO=lz4
SIZE=50%

重启:

sudo systemctl restart zramswap

✅ 适合:

  • 老旧笔记本
  • 小内存 VPS
  • 树莓派

八、关闭 swap(仅特殊场景)

⚠️ 不推荐服务器长期关闭

sudo swapoff -a

并从 /etc/fstab 删除 swap 行


九、监控 swap 使用

vmstat 1
sar -W 1

看 si/so 是否频繁(说明内存不足)


十、推荐“标准优化模板”(服务器)

vm.swappiness=10
vm.vfs_cache_pressure=50
  • swap 文件 4–8GB
  • SSD 启用 discard
  • 内存 < 4G 用 zram

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

  • Ubuntu 版本
  • 内存大小
  • 是服务器 / 桌面 / VPS / 树莓派
  • 是否用 SSD

我可以给你一套精确可直接抄的配置。

0 踩