在 Ubuntu 中,swap 占用高通常并不是“swap 本身有问题”,而是内存压力或系统行为导致系统在频繁使用 swap。下面从「原因 → 排查 → 解决」系统说明。
当 RAM 用满,内核会把不常用的内存页换到 swap。
表现:
free -h 中 Mem 几乎用满Swap 占用持续增长排查:
free -h
top
htop
swappiness 决定系统“多早开始用 swap”。
Ubuntu 默认:
查看:
cat /proc/sys/vm/swappiness
如果值很高(如 60~100),即使内存还没满,也可能用 swap。
例如:
这些进程不活跃但占内存,内核会优先 swap 它们。
某个程序内存只增不减,最终逼系统用 swap。
排查:
ps aux --sort=-%mem
⚠️ 注意:
这是正常现象。
如果启用过 hibernate:
✅ 正常情况:
si/so 为 0❌ 异常情况:
vmstat 1
看到:
si / so 持续 > 0说明:正在频繁 swap(thrashing)
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
ps aux --sort=-%mem | head
⚠️ 仅用于“确认内存足够”的情况:
sudo swapoff -a
sudo swapon -a
sudo swapoff -a
并注释 /etc/fstab 中的 swap 行
Ubuntu swap 占用高,本质是“内存不够 or 内核认为可以换出”,不一定是故障。
如果你愿意,可以贴出:
free -h
swapon --show
vmstat 1 5
我可以帮你精确定位是哪一类问题。