HACK#58 soft lockup
本节介绍Linux内核中安装的锁定检测功能soft lockup。
Linux内核中安装了称为soft lockup的锁定检测功能。使用soft lockup,可以检测出由于内核或设备驱动程序等软件的故障导致内核功能无法运行的状态。
在关键任务(critical mission)等领域,如果一直处于服务停止的状态,就会造成很大的问题。因此,就需要使用这样的锁定检测功能,尽早检测出服务停止的情况。在检测锁定的同时使内核出现重大故障,就可以更简单地自动重启内核以恢复服务,或从外部检测出故障,尽快恢复服务。
soft lockup的结构
soft lockup的锁定检测是使用名称为watchdog的内核线程进行的。watchdog内核线程采用优先级最高的实时等级的FIFO调度策略。如果这个watchdog线程没有达到一定的运行时间,就可以检测出进程调度程序未正常运行,即发生锁定。
使用ps命令,可以确认watchdog内核线程是存在的,详情如下。
这些内核线程定期(检测时间的20%)由计时器唤醒。唤醒的watchdog内核线程会记录自己唤醒的时刻。如果从这个watchdog记录的时刻开始,不更新的时间超过指定的时间,则判断发生了锁定。