在 Debian(以及大多数 Linux 发行版)中,swapper(swap 机制 / kswapd / swapper 进程)频繁启动或活跃,通常不是“swapper 本身有问题”,而是系统在频繁进行内存回收(swap 或 page reclaim)。可以从下面几个角度理解和排查。
你看到的通常是:
kswapd0 / kswapd1 CPU 占用高top / htop 里看到 swapper 或 kswapdfree -h 中 swap 被不断使用这说明:
系统内存压力较大,内核在频繁把内存页换出到 swap 或回收内存
检查:
free -h
top
htop
如果:
Mem: used ≈ total
Swap: used 不断增长
那就是内存不够。
Debian 默认:
cat /proc/sys/vm/swappiness
# 通常 60
含义:
如果内存并不少,但 swap 仍频繁:
sysctl vm.swappiness
可临时降低:
sudo sysctl vm.swappiness=10
永久生效:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
即使总内存够,但:
表现:
kswapd 高检查:
cat /proc/buddyinfo
常见嫌疑:
查看谁在用 swap:
for pid in $(ls /proc | grep '^[0-9]'); do
awk -v p=$pid '/VmSwap/{print p, $2}' /proc/$pid/status
done | sort -k2 -n
即使少量 swap,也会:
建议:
top -p $(pgrep kswapd0)
正常:
异常:
vmstat 1
关注:
si / so(swap in/out)freecache✅ 内存不够 → 加内存 / 限制服务
✅ swappiness 高 → 调低
✅ 服务泄漏 → 重启 / 优化
✅ IO 慢 → 换磁盘 / 减 swap
✅ 容器多 → 限制 memory limit
你可以贴出:
free -h
swapon -s
cat /proc/sys/vm/swappiness
top -b -n1 | head -20
我可以帮你精准判断是哪一种原因。