温馨提示×

ubuntu swapper如何排查问题

小樊
40
2026-10-03 16:32:56
栏目: 智能运维

在 Ubuntu(以及其他 Linux 发行版)里,swapper 通常指两件事之一:

  1. 内核线程 kswapd0(负责把内存页换出到 swap)
  2. swap 分区 / swap 文件本身(系统交换空间)

下面按常见问题和排查思路给你一个系统性的指南。


一、确认是不是 swap 相关问题

1. 查看 swap 使用情况

free -h
swapon --show

重点关注:

  • Swap 是否被大量使用
  • kswapd0 是否 CPU 占用高

2. 查看谁在用 swap

for file in /proc/*/status; do
    awk '/^Pid:|^Name:|^VmSwap:/ {print}' "$file"
done | paste - - -

或更快的方式:

smem -s swap -r | head

二、kswapd0 占用 CPU 高(最常见问题)

现象

  • 系统卡顿
  • top 里 kswapd0 CPU 很高
  • 磁盘 IO 很忙

排查步骤

1. 是否是内存不足

free -h
vmstat 1

如果:

  • free 很少
  • si/so 很大(swap in/out)

说明内存真的不够


2. 检查 swap 是不是太慢(机械盘)

iostat -x 1

如果 %util 长时间 100%,swap 在拖慢系统。


3. 调整 swappiness(减少 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)


三、swap 空间本身的问题

1. swap 没生效

swapon --show

如果没有输出:

sudo swapon -a

检查:

cat /etc/fstab

示例:

/swapfile none swap sw 0 0

2. swap 文件损坏(很少见)

关闭 swap:

sudo swapoff /swapfile

重新创建:

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

四、OOM / 频繁 swap 的根本原因

1. 查看 OOM 日志

dmesg | grep -i oom
journalctl -k | grep -i oom

2. 找出内存大户

ps aux --sort=-%mem | head

3. 限制服务内存(systemd)

[Service]
MemoryMax=1G

五、高级排查(性能分析)

1. 查看页回收情况

cat /proc/vmstat | grep pg

2. 使用 perf(高级)

sudo perf top

看是否大量时间在:

  • shrink_zone
  • pageout

六、常见结论总结

问题 原因 解决
kswapd0 CPU 高 内存不足 加内存 / 优化程序
系统卡 swap 在 HDD 换 SSD / 降低 swappiness
swap 没用 未挂载 swapon
OOM kill 内存泄漏 修程序

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 是 服务器还是桌面
  • 具体现象(卡 / OOM / kswapd0 高)

我可以给你更精确的排查命令。

0 踩