首页/系统/Linux 内核与性能调优速查/kernel.nmi_watchdog NMI 看门狗
sysctl 内核参数72 条

kernel.nmi_watchdog NMI 看门狗

基于性能计数器的硬锁检测与采样来源(常见默认开启,虚拟机多为关闭);关闭可省少量开销但失去 hard lockup 检测。

硬锁检测看门狗

内核利用处理器的性能计数器定期产生非屏蔽中断,用来检测硬锁:某个处理器长时间被独占,连普通的定时器中断都得不到响应的情况。它同时也是部分采样能力的来源。虚拟化环境通常不具备这个能力,读值为 0 属于环境特性,而不是故障信号。

基本信息

适用平台Linux 内核参数(物理机与虚拟化环境表现不同)
参数名kernel.nmi_watchdog
取值0 关闭,1 开启
常见默认多数物理机默认开启
虚拟化环境通常不可用,读值为 0 属正常

典型使用场景

  • 确认物理机是否具备硬锁检测能力,排查偶发长时间无响应。
  • 核对采样能力受限的原因,判断是环境特性还是配置问题。
  • 云主机上确认读值为 0 属于正常现象,避免误判为故障。
  • 评估关闭它能节省多少开销,以及会失去什么能力。
  • 与采样工具配合,理解不同环境下可用观测手段的差异。

查看与调整

查看与调整
sysctl kernel.nmi_watchdog                 # 查看当前取值
cat /proc/sys/kernel/nmi_watchdog          # 与上一行对照
sysctl -w kernel.nmi_watchdog=0            # 临时关闭,重启后恢复
grep -i nmi /var/log/messages | tail -5    # 是否出现过硬锁相关告警
dmesg | grep -i watchdog | tail -5         # 确认看门狗初始化情况
ls /proc/sys/kernel/ | grep nmi            # 确认该参数是否存在

取值与环境

取值与场景含义判读
物理机取值为 1硬锁检测生效具备检测与部分采样能力
物理机取值为 0被显式关闭或硬件不支持确认是否有人改过
虚拟机上为 0环境不具备该能力正常现象,不必处理
关闭它带来的开销收益通常有限,但会同时失去硬锁诊断能力与依赖它的部分采样手段;在没有明确收益前保持默认更稳妥。
遇到系统长时间无响应的现象时,这个参数只是排查线索之一:虚拟化环境里读值为 0 意味着缺少这条线索,需要转向其它手段(如内核日志与外部监控)判断。

易错点

  • 虚拟机上读值为 0 被当成故障报警,浪费排查时间。
  • 关闭它换来的一点开销收益,却失去硬锁诊断与部分采样能力,得不偿失。
  • 修改后忘记原本的取值,事后无法判断是配置还是环境造成的差异。
  • 把硬锁检测能力当作性能监控手段,忽略它只针对极端卡死现象。
  • 在受限环境里用依赖该能力的采样方式,采集为空却以为是工具问题。

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/kernel.rst
  • Linux 内核 Documentation/admin-guide/perf-security.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌