内存与 OOM58 条

kswapd 回收线程排查

kswapd0 负责后台回收;持续高 CPU 说明内存压力大或水位配置导致长期回收,应结合回收计数与 PSI 判断而非直接调参。

观察ps -eo pid,pcpu,comm | grep kswapd
回收计数pgscan_kswapd / pgsteal_kswapd
压力/proc/pressure/memory

采样

采样
ps -eo pid,pcpu,comm | grep kswapd
grep -E 'pgscan_kswapd|pgsteal_kswapd|pgsteal_direct' /proc/vmstat
cat /proc/pressure/memory

易错点

  • 调大水位只会让回收更早更频繁,先确认工作集是否真的超出内存
  • kswapd 高占用常与业务缓存膨胀同时出现,要区分缓存与泄漏

数据来源与参考

  • Linux 内核 Documentation/admin-guide/mm/
  • Linux 内核 mm/vmscan.c
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌