在 Debian(以及其它 Linux 发行版)里,swapper / swap 占用高通常不是“swapper 进程”本身的问题,而是系统在使用 swap 空间。下面分点说明原因和排查方式。
swapper(或 kswapd0)是 内核线程,正常存在kswapd0 CPU 占用高(在频繁换页)最常见原因:
查看:
free -h
如果:
Mem: used ≈ total
Swap: used 很大
说明内存真的不够。
swappiness 决定“多早开始用 swap”
Debian 默认通常是:
cat /proc/sys/vm/swappiness
# 常见 60
值越大 → 越容易用 swap
查看:
sysctl vm.swappiness
典型场景:
查看谁在用 swap:
for pid in $(ls /proc | grep '^[0-9]'); do
echo "PID $pid: $(grep VmSwap /proc/$pid/status 2>/dev/null | awk '{print $2}') kB"
done | sort -k3 -n | tail
如果你看到:
top
# kswapd0 CPU 很高
说明:
swapon --show
free -h
smem -s swap -r | head
(需安装 smem)
top -p $(pgrep kswapd0)
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
例如 Docker:
--memory=2g
sudo swapoff -a
sudo swapon -a
⚠️ 前提:
ps aux --sort=-%mem | head
Debian 里“swapper 占用高”通常不是 swapper 的锅,而是系统在用 swap,本质原因几乎都是内存压力或不合理的 swap 策略。
如果你愿意,可以贴一下:
free -hswapon --showtop 前几行我可以帮你精准判断是哪一种情况。