HUAWEI CLOUD EULEROS-内核异常事件分析指南:soft lockup

时间:2024-09-14 11:44:01

soft lockup

soft lockup是内核检测CPU在一定时间内(默认20秒)没有发生调度切换时,上报的异常。

  • 原理

    soft lockup利用Linux内核watchdog机制触发。内核会为每一个CPU启动一个优先级最高的FIFO实时内核线程watchdog,名称为watchdog/0、watchdog/1以此类推。这个线程会定期调用watchdog函数,默认每4秒执行一次。同时调用过后会重置一个hrtimer定时器在2倍的watchdog_thresh时间后到期。watchdog_thresh是内核参数,对应默认超时时间为20秒。

    在超时时间内,如果内核线程watchdog没被调度,hrtimer定时器到期,即触发内核打印类似如下的soft lockup异常。

    BUG: soft lockup - CPU#3 stuck for 23s! [kworker/3:0:32]
  • 触发方法

    关闭中断或关闭抢占,软件执行死循环。

support.huaweicloud.com/usermanual-hce/hce_02_0075.html