rcu_preempt self-detected stall on cpu 错误解析 1. 错误解释 "rcu_preempt self-detected stall on cpu" 是一个内核错误消息,通常出现在基于 Linux 的操作系统中。RCU(Read-Copy Update)是一种同步机制,用于在多处理器环境中高效地处理读多写少的共享数据。rcu_preempt 是RCU 的一种实现,专为需要快速响应的...
rcu: INFO: rcu_sched self-detected stall on CPU 这个打印是print_cpu_stall (1422行)里打的,响应tick中断的cpu检查到自己stall了,所以是self-detected;rcu_sched的出处是下面这里,受CONFIG_PREEMPT_RCU的影响:是否配置CONFIG_PREEMPT_RCU会影响RCU 回调的执行时机 和 调度策略,可参考文章RCU(1)- 概述。 关注...
INFO: rcu_preempt self-detected stall on CPU [ 1076.614300] INFO: rcu_preempt detected stalls on CPUs/tasks: [ 1076.616581] 0-...: (1 GPs behind) idle=e42/2/0 softirq=40213/40214 fqs=1438 [ 1076.622233] 0-...: (1 GPs behind) idle=e42/2/0 softirq=40213/40214...
TI__Guru**110395points 根据内核log打印信息来看,某个应用程序长时间加载CPU,导致内核CPU stall,启动了内核CPU stall检测器。 建议您阅读./<Linux_dir>/Documentation/RCU/stallwarn.txt中的指令,通过最小化cpu stall的时间来优化内核的配置。 这两个帖子也可以参考一下。 e2e.ti.com/.../581910 e2e.ti.com/...
(8)在开了CONFIG_PREEMPT的内核中,一个绑核的rt线程可能抢占一个低优先级线程,该低优先级线程如果在rcu read-side临界区时,会导致rcu stall。在该低优先级线程不允许调度到其他cpu时,伤害尤为明显,因为在这种情况下,rcu的宽限期将永远不会完成,最终导致系统用尽内存 & hang住 【译者注:为什么会用尽内存呢?】...
o CONFIG_PREEMPT_RT内核中的CPU绑定实时任务,其运行优先级高于RCU softirq线程。这将防止调用RCU回调,并且在CONFIG_PREEMPT_RCU内核中,将进一步防止RCU宽限期完成。无论哪种方式,系统最终都将耗尽内存并挂起。在CONFIG_PREEMPT_RCU情况下,您可能会看到stall-warning消息。
INFO: rcu_preempt self-detected stall on CPU { 2 } [c0000001f5206f60] [c000000000815090] .dump_stack+0x9c/0xf0[c0000001f5206fe0] [c0000000000b0de0] .rcu_check_callbacks+0x40c/0x9a4[c0000001f5207110] [c0000000000442d0] .update_process_times+0x50/0x94[c0000001f52071a0] [...
上述的CPU stall call trace,据我初步了解,发生这个cpu stall的原因是mmcqd/0线程在一个RCU grace period内没有call rcu_read_unlock(),并且这个线程一直占用着CPU 0 check_cpu_stall calltrace print_cpu_stall/print_other_cpu_stall 可以看到,在hrtimer interrupt handler里去check ...
Linux 内核分析 rcu_sched self-detected stall on CPU_小立爱学习的博客 spin_lock最终会调用preempt_disable:关闭抢占,此时CONFIG_PREEMPT=y。不满足preempt_schedule_irq抢占,导致无法进程调度。 static inline void __raw_spin_lock(raw_spinlock_t *lock) ...
A small debug dump excerpt from the console characterising every stall, copied by hand (in case of any errors and for a detailed trace please consult this image): INFO: rcu_preempt detected stalls on CPUs/tasks: { 0} (detected by 1, t=2102 jiffies, g=50012, c=50011, q=6543) [<807...