首页 > 学院 > 开发设计 > 正文

RCU's CPU Stall Detector

2019-11-08 00:13:58
字体:
来源:转载
供稿:网友
有时候可以会打印INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) 类似的log。这不是bug,而是提醒你可能某些code执行太久了,超过CONFIG_RCU_CPU_STALL_TIMEOUT 定义的时间了。具体的call flow如下:在每个时间中断函数中都会走这个flow,也就说这个flow是每次time中断都会检查的在update_PRocess_times->rcu_check_callbacks->rcu_pending->__rcu_pending->check_cpu_stall->print_other_cpu_stall/print_cpu_stall详细的情况可以查询Documentation/RCU/stallwarn.txt从下面的code中可以看出,如果没有定义CONFIG_RCU_CPU_STALL_TIMEOUT的话till_stall_check=3.static int rcu_cpu_stall_timeout __read_mostly = CONFIG_RCU_CPU_STALL_TIMEOUT;module_param(rcu_cpu_stall_timeout, int, 0644);int rcu_jiffies_till_stall_check(void){    int till_stall_check = READ_ONCE(rcu_cpu_stall_timeout);    /*     * Limit check must be consistent with the Kconfig limits     * for CONFIG_RCU_CPU_STALL_TIMEOUT.     */    if (till_stall_check < 3) {        WRITE_ONCE(rcu_cpu_stall_timeout, 3);        till_stall_check = 3;    } else if (till_stall_check > 300) {        WRITE_ONCE(rcu_cpu_stall_timeout, 300);        till_stall_check = 300;    }    return till_stall_check * HZ + RCU_STALL_DELAY_DELTA;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表