在 Ubuntu(以及其他 Linux 发行版)里,swapper 通常指两件事之一:
kswapd0(负责把内存页换出到 swap)下面按常见问题和排查思路给你一个系统性的指南。
free -h
swapon --show
重点关注:
Swap 是否被大量使用kswapd0 是否 CPU 占用高for file in /proc/*/status; do
awk '/^Pid:|^Name:|^VmSwap:/ {print}' "$file"
done | paste - - -
或更快的方式:
smem -s swap -r | head
top 里 kswapd0 CPU 很高free -h
vmstat 1
如果:
free 很少si/so 很大(swap in/out)说明内存真的不够
iostat -x 1
如果 %util 长时间 100%,swap 在拖慢系统。
查看当前值:
cat /proc/sys/vm/swappiness
临时修改:
sudo sysctl vm.swappiness=10
永久生效:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
服务器一般建议 10–30
桌面可稍高(60)
swapon --show
如果没有输出:
sudo swapon -a
检查:
cat /etc/fstab
示例:
/swapfile none swap sw 0 0
关闭 swap:
sudo swapoff /swapfile
重新创建:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
dmesg | grep -i oom
journalctl -k | grep -i oom
ps aux --sort=-%mem | head
[Service]
MemoryMax=1G
cat /proc/vmstat | grep pg
sudo perf top
看是否大量时间在:
shrink_zonepageout| 问题 | 原因 | 解决 |
|---|---|---|
| kswapd0 CPU 高 | 内存不足 | 加内存 / 优化程序 |
| 系统卡 | swap 在 HDD | 换 SSD / 降低 swappiness |
| swap 没用 | 未挂载 | swapon |
| OOM kill | 内存泄漏 | 修程序 |
如果你愿意,可以告诉我:
我可以给你更精确的排查命令。