---
title: 虚拟机死锁检测
description: "NMI Watchdog是一种专门用于检测Linux出现hardlockup（硬死锁）的机制。NMI Watchdog通过产生NMI（Non-Maskable Interrupt）不可屏蔽中断来中断代码执行，即便在Linux内核关闭中断的代码区间也能生效，从而确保系统能够检测到硬死锁现象。在ARM架构上，由于硬件不支持NMI中断，因此采用了基于中断优先级的Pseudo-NMI技术，将PMI（Performance Monitoring Interrupt）中断配置为模拟NMI中断，实现了NMI Watchdog的功能，也称为PMU Watchdog。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0090.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0090.html
indexId: 5adf64c9d1d6b4616f674c5991af9c193ef4d1d3d38b1e48ba529ae01fe19f1e51
---
# 虚拟机死锁检测

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及以上版本使用。

#### 使用约束

- 虚拟机内部操作系统需要支持Pseudo-NMI，并且需要正确配置相应的内核参数。
- 在虚拟机上PMU Watchdog的配置方式与host上相同，无需对xml文件进行其他配置。
- 在虚拟机上配置PMU Watchdog的步骤与在宿主机（host）上相同，无需对虚拟机的配置文件（例如XML文件）进行额外的修改。
- 如果SDEI Watchdog可用，它在功能优先级上高于PMU Watchdog，因此，在启用PMU Watchdog之前，需要先禁用SDEI Watchdog。由于虚拟机环境本身不支持SDEI Watchdog，所以在配置内核参数时，必须确保SDEI Watchdog已通过配置内核参数被禁用。
