Huawei Cloud EulerOS-内核异常事件分析指南:soft lockup
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]
- 触发方法