diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272\345\217\257\347\273\264\346\212\244\346\200\247.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272\345\217\257\347\273\264\346\212\244\346\200\247.md" new file mode 100644 index 0000000000000000000000000000000000000000..c16dc536763502caf5aa2029e468143e154851e3 --- /dev/null +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272\345\217\257\347\273\264\346\212\244\346\200\247.md" @@ -0,0 +1,22 @@ +# 管理虚拟机可维护性 + +## 虚拟机NMI Watchdog + +### 概述 + +NMI Watchdog是一种用来检测Linux出现hardlockup(硬死锁)的机制。通过产生NMI不可屏蔽中断,从而在Linux内核关闭中断的代码区间也能打断代码的执行,进一步检测内核是否出现硬死锁。当前ARM架构不支持原生NMI中断,通过使能基于中断优先级的Pseudo-NMI,将PMI(Performance Monitoring Interrupt)中断配置为NMI中断,实现NMI Watchdog(即PMU Watchdog)。 + +### 注意事项 + +- 虚拟机内部OS需要支持Pseudo-NMI并配置相应内核参数 +- 虚拟机上PMU Watchdog的配置方式与host上相同,无需对xml文件进行其他配置 +- 同样作为NMI Watchdog,SDEI Watchdog的优先级高于PMU Watchdog,因此要禁用SDEI Watchdog才会使能PMU Watchdog;虚拟机不支持SDEI Watchdog,因此要注意通过配置内核参数将其禁用 + +### 操作步骤 + +- 在虚拟机的引导配置文件grub.cfg中添加如下参数:nmi_watchdog=1 pmu_nmi_enable hardlockup_cpu_freq=auto irqchip.gicv3_pseudo_nmi=1 disable_sdei_nmi_watchdog +- 检查虚拟机内部PMU Watchdog是否加载成功,如果加载成功,内核dmesg日志打印类似如下内容 + + ``` + [2.1173222] NMI watchdog: CPU0 freq probed as 2399999942 HZ. + ``` diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 1d6d99d870b18d22a517af3574a05d86ae517626..4c7bc4d1d770765dbda3aa70167c7fd4f3558081 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -58,6 +58,7 @@ headless: true - [热迁移虚拟机]({{< relref "./docs/Virtualization/热迁移虚拟机.md" >}}) - [管理系统资源]({{< relref "./docs/Virtualization/管理系统资源.md" >}}) - [管理设备]({{< relref "./docs/Virtualization/管理设备.md" >}}) + - [管理虚拟机可维护性]({{< relref "./docs/Virtualization/管理虚拟机可维护性.md" >}}) - [最佳实践]({{< relref "./docs/Virtualization/最佳实践.md" >}}) - [附录]({{< relref "./docs/Virtualization/附录.md" >}})