文章目录
1、问题现象
在一个运行某服务(xxx)操作系统上,系统突然出现 RCU stall 警告,日志显示:
INFO: rcu_sched detected stalls on CPUs/tasks:
1-...: (12000 ticks this GP) idle=0e4/0/0 softirq=0/0 fqs=0
这表明 CPU 1 在 RCU 宽限期(GP)内未响应,导致 RCU stall。
2、问题分析
-
触发条件
- 某服务正在执行大量事务操作,涉及频繁的内存分配和释放。
- 系统日志显示,RCU stall 发生在内存回收(
kmem_cache_free
)过程中。
-
根本原因
- 某服务频繁调用
kmem_cache_free
释放内存,而这些操作需要等待 RCU 宽限期完成。 - 由于某个任务(如内核线程或用户态进程)长时间占用 CPU 1,导致 RCU 回调无法执行。
- 某服务频繁调用