NMI Watchdog是一种专门用于检测Linux出现hardlockup(硬死锁)的机制。NMI Watchdog通过产生NMI(Non-Maskable Interrupt)不可屏蔽中断来中断代码执行,即便在Linux内核关闭中断的代码区间也能生效,从而确保系统能够检测到硬死锁现象。在ARM架构上,由于原生不支持NMI中断,因此采用了基于中断优先级的Pseudo-NMI技术,将PMI(Performance Monitoring Interrupt)中断配置为模拟NMI中断,实现了NMI Watchdog的功能,也称为PMU Watchdog。
虚拟机环境中实现不可屏蔽中断的监控,可以防止虚拟机陷入死循环后不能跳出,导致无法恢复管理。
当前使用鲲鹏920系列处理器的服务器上的虚拟机已经验证支持该特性,采用openEuler 22.03 LTS SP2及以上版本,配合Libvirt 6.2.0及以上版本和QEMU 6.2.0及以上版本使用。
针对Arm架构虚拟机配置NMI Watchdog的操作步骤如下:
[2.1173222] NMI watchdog: CPU0 freq probed as 2399999942 HZ.1
3.测试NMI Watchdog hardlockup(硬死锁)检测机制是否有效:安装hardlockup.ko文件,系统卡死,如果检测机制有效,系统会自动重启