温馨提示×

ubuntu swap慢怎么解决

小樊
37
2026-10-01 08:04:16
栏目: 智能运维

在 Ubuntu 上如果发现 swap 使用很慢 / 系统因为 swap 变卡,通常不是“swap 本身慢”,而是系统太早或太频繁地使用 swap,或者swap 在慢速磁盘(HDD)上。下面按“最常见 → 最根本”的方式给你解决方案。


一、先确认你现在的情况(很重要)

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

重点关注:

  • 是否有 swap(size、用的是哪个设备)
  • swappiness 值(默认通常是 60)
  • 内存是否真的快用完了

二、最常用解决方案(90% 情况有效)

✅ 1. 降低 swappiness(强烈推荐)

Ubuntu 默认 swappiness=60,意思是内存用到 40% 就开始往 swap 挪,非常激进。

临时修改:

sudo sysctl vm.swappiness=10

永久修改:

sudo nano /etc/sysctl.conf

添加或改为:

vm.swappiness=10

一般建议:

  • 桌面/开发机:10
  • 服务器(内存充足):1~5
  • 几乎不用 swap:1

重启或执行:

sudo sysctl -p

✅ 2. 提高缓存回收阈值(减少无效 swap)

sudo sysctl vm.vfs_cache_pressure=50

永久:

vm.vfs_cache_pressure=50

三、如果 swap 本身“慢”

✅ 3. 用 SSD 做 swap(最关键)

如果你现在 swap 在 HDD,那一定会卡。

查看:

swapon --show

如果是 /dev/sdX(机械盘),建议:

  • 用 SSD 分区做 swap
  • 或用 swap 文件(在 SSD 上)

创建 swap 文件示例(SSD 上):

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

永久生效:

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

四、已经卡了,怎么立刻缓解

✅ 4. 临时清 swap(不重启)

sudo swapoff -a
sudo swapon -a

⚠️ 前提:物理内存足够,否则会直接 OOM。


五、进阶(服务器 / 高性能场景)

✅ 5. 使用 zram(非常推荐,尤其笔记本)

用内存压缩代替磁盘 swap:

sudo apt install zram-config
sudo systemctl enable zram-config
sudo reboot

效果:

  • swap 几乎“瞬间”
  • 不占磁盘
  • 非常适合 8G~16G 内存机器

六、什么时候“不要关 swap”

❌ 不要直接:

swapoff -a

然后写死不启用。

原因:

  • 某些程序(如数据库、容器)依赖 swap
  • OOM 时系统更危险

七、总结(最推荐组合)

✅ 桌面 / 开发机最佳方案:

swappiness=10
SSD swap 或 zram

✅ 服务器:

swappiness=1~5
足够内存 + 小 swap

如果你愿意,可以把下面命令的输出贴出来,我可以直接帮你“按你的机器定制参数”:

free -h
swapon --show
cat /proc/sys/vm/swappiness
lsblk

0 踩