蜗窝科技

INFO: rcu_preempt detected stalls on CPUs/tasks: { 1} (detected b y 0,

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 darren · 2017-06-07 · 4 帖

本文是原「蜗窝讨论区」的历史存档(2017-06-07),来自版块「Linux kernel技术问答」,共 4 帖。讨论区已停止服务,此处仅供查阅。

darren · 2017-06-07 18:08

那个炬芯的S500板子做压力测试,跑着内核突然报错,然后系统挂死了。不过谁有遇到了? 不太懂这个RCU。网上说是

You probably have a real time application that is consuming all cpu (some bad implementation) and because of its realtime scheduling priority the system doesn't have enough resources available for other tasks.

I suggests that you remove realtime priority from your applications and check which one is consuming a lot of CPU and, after correcting the problem, puts it back to realtime priority


[== Undefined ==]
[ 2453.419146] INFO: rcu_preempt detected stalls on CPUs/tasks: { 1} (detected b
y 0, t=60017 jiffies, g=3373, c=3372, q=1612)
[ 2453.430209] [<c0015b54>] (unwind_backtrace+0x0/0x138) from [<c001306c>] (show
_stack+0x24/0x2c)
[ 2453.438799] [<c001306c>] (show_stack+0x24/0x2c) from [<c00148c4>] (smp_send_a
ll_cpu_backtrace+0x58/0xc4)
[ 2453.448261] [<c00148c4>] (smp_send_all_cpu_backtrace+0x58/0xc4) from [<c00a48
7c>] (rcu_check_callbacks+0x664/0x7e4)
[ 2453.458681] [<c00a487c>] (rcu_check_callbacks+0x664/0x7e4) from [<c003b7c8>] 
(update_process_times+0x3c/0x68)
[ 2453.468577] [<c003b7c8>] (update_process_times+0x3c/0x68) from [<c007c1b8>] (
tick_sched_timer+0x44/0x74)
[ 2453.478036] [<c007c1b8>] (tick_sched_timer+0x44/0x74) from [<c0050530>] (__ru
n_hrtimer+0x7c/0x278)
[ 2453.486972] [<c0050530>] (__run_hrtimer+0x7c/0x278) from [<c0051214>] (hrtime
r_interrupt+0x10c/0x2a4)
[ 2453.496166] [<c0051214>] (hrtimer_interrupt+0x10c/0x2a4) from [<c00152d4>] (t
wd_handler+0x2c/0x40)
[ 2453.505103] [<c00152d4>] (twd_handler+0x2c/0x40) from [<c009ea4c>] (handle_pe
rcpu_devid_irq+0x78/0x17c)
[ 2453.514478] [<c009ea4c>] (handle_percpu_devid_irq+0x78/0x17c) from [<c009b24c
>] (generic_handle_irq+0x24/0x38)
[ 2453.524458] [<c009b24c>] (generic_handle_irq+0x24/0x38) from [<c000fbf4>] (ha
ndle_IRQ+0x38/0x94)
[ 2453.533219] [<c000fbf4>] (handle_IRQ+0x38/0x94) from [<c00085e0>] (gic_handle
_irq+0x28/0x5c)
[ 2453.541633] [<c00085e0>] (gic_handle_irq+0x28/0x5c) from [<c000ef40>] (__irq_
svc+0x40/0x70)
[ 2453.549956] Exception stack(0xe0a5de10 to 0xe0a5de58)
[ 2453.554987] de00:                                     00000001 000

wowo · 2017-06-08 09:51

看stack trace,应该是某个timer handler花费的时间太久,你可以检查一下。

darren · 2017-06-08 11:13

wowo 写道: 看stack trace,应该是某个timer handler花费的时间太久,你可以检查一下。

请教怎么看出是某个timer handler花费的时间太久?机子是在高低温环境下用mplayer 一直循环播视频。

wowo · 2017-06-08 11:33

darren 写道:

wowo 写道: 看stack trace,应该是某个timer handler花费的时间太久,你可以检查一下。

请教怎么看出是某个timer handler花费的时间太久?机子是在高低温环境下用mplayer 一直循环播视频。

后面的stack dump,就是触发rcu_preempt detected stalls的原因。