NMI是什么

NMI(non-maskable interrupt),就是不可屏蔽的中断。根据Intel的Software Developer手册Volume 3,NMI的来源有两个:
– NMI pin
– delivery mode NMI messages through system bus or local APIC serial bus

NMI通常用于通知操作系统发生了无法恢复的硬件错误,也可以用于系统调试与采样,大多数服务器还提供了人工触发NMI的接口,比如NMI按钮或者iLO命令等。

  1. 无法恢复的硬件错误通常包括:芯片错误、内存ECC校验错、总线数据损坏等等。
  2. 当系统挂起,失去响应的时候,可以人工触发NMI,使系统重置,如果早已配置好了kdump,那么会保存crash dump以供分析。有的服务器提供了NMI按钮,而刀片服务器通常不提供按钮,但可以用iLO命令触发。
  3. Linux还提供一种称为”NMI watchdog“的机制,用于检测系统是否失去响应(也称为lockup),可以配置为在发生lockup时自动触发panic。原理是周期性地生成NMI,由NMI
    handler检查hrtimer中断的发生次数,如果一定时间内这个数字停顿了,表示系统失去了响应,于是调用panic例程。NMI
    watchdog的开关是通过内核参数 kernel.nmi_watchdog 或者在boot
    parameter中加入”nmi_watchdog=1″参数实现,比如:
    在RHEL上编辑 /boot/grub/menu.lst:

    kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/sda nmi_watchdog=1

    然后你会看到:
    # grep NMI /proc/interrupts
    NMI: 0 0 0 0

Linux kernel笼统地把NMI分为三大类:内存校验错 mem_parity_error(),总线数据损坏
io_check_error(),其他的全部归入
unknown_nmi_error()。kernel对NMI是不能精确定位的,对故障诊断很不利,硬件驱动程序可以注册自己的NMI处理例程,kernel会在发生NMI之后通过notify_die()调用这些第三方注册的处理例程。


参考资料:
Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3
http://wiki.osdev.org/Non_Maskable_Interrupt

NMI是什么的更多相关文章

  1. kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s! CentOS7linux中内核被锁死

    环境说明:虚拟机 CentOS7中解压一个8G的包时,内核报错 Message from syslogd@cosmo-01 at Apr 25 11:05:59 ... kernel:NMI watc ...

  2. 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)

    转载请注明出处:http://www.cnblogs.com/bethansy/p/6890972.html 一.已知真实社区划分结果 1.NMI指数,互信息和标准化互信息 具体公式和matlab代码 ...

  3. 创龙OMAPL138的NMI中断

    1. 不可屏蔽中断部分代码,注册中断函数,6748有几个NMI的引脚? void InterruptInit(void) { // 初始化 DSP 中断控制器 IntDSPINTCInit(); // ...

  4. STM32 Cortex-M3 NMI异常

    最近在调试STM32 Cortex-M3 HardFault异常,以外发现程序居然进入了NMI异常.对于这种异常,从来没有出现过,如下图所示. 此时的R0等寄存器的值如下图所示, 堆栈指针是0x200 ...

  5. NMI watchdog: BUG: soft lockup - CPU#0 stuck for 22s!

    今天测试环境一虚拟机运行中突然报错,,, 没见过的内核报错,于是google一番. 系统日志: Nov :: dev- kernel: NMI watchdog: BUG: soft lockup - ...

  6. NMI计算

    NMI计算 NMI(Normalized Mutual Information)标准化互信息,常用在聚类中,度量两个聚类结果的相近程度.是社区发现(community detection)的重要衡量指 ...

  7. VMX - block by NMI和 NMI unblockinig due to IRET 之间的关系

    相关SDM章节: 27.2.3- Information About NMI Unblocking Due to IRET 最近收到同事发来的一个问题,即: VMCS 中的 Guest Interru ...

  8. CentOS7运行报错kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 26s

    CentOS内核,对应的文件是/proc/sys/kernel/watchdog_thresh.CentOS内核和标准内核还有一个地方不一样,就是处理CPU占用时间过长的函数,CentOS下是watc ...

  9. 报错kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 26s

    近期在服务器跑大量高负载程序,造成cpu soft lockup.如果确认不是软件的问题. 解决办法: #追加到配置文件中 echo 30 > /proc/sys/kernel/watchdog ...

随机推荐

  1. redis 获取方式和安装(windows)

    Windows redis :https://github.com/MSOpenTech/redis/releases Linux redis :https://github.com/phpredis ...

  2. storm group 的介绍与使用

    一.stream group分组介绍 Stream 的分组分为随机分组.字段分组.全部分组.全局分组.无分组.直接分组,自定义分组 二.group的介绍 1.Shuffle grouping:通过tu ...

  3. POJ 1015 Jury Compromise (记录路径的背包问题)

    (点击此处查看原题) 题意 为了审判某一个人,需要在n个人当中选出m个人组成陪审团,n个人中每个人都有作为起诉方的价值p和作为辩护方的价值d,为了保证公平性,要求m个人作为起诉方的价值之和P和作为辩护 ...

  4. CentOS7 PHP cURL errno 35, 原因:CentOS7中没有安装curl和OpenSSL的最新版

    安装OpenSSL的最新版 话不多说,直接上安装步骤 #cd /usr/local/src # 跳过证书获取失败 # wget https://www.openssl.org/source/opens ...

  5. python+pycharm+django admin css样式出问题

    最近打算学习一下Python,基础知识有了大概的了解,想上手搞搞东西. 我用的python 3.5+pycharm+django 1.11.2 在使用Django,打开127.0.0.1:8000/a ...

  6. Pycharm超级好用的快捷键——效率之王

    Pycharm超级好用的快捷键--效率之王 IT界老黑 IT界老黑 带你领略Python的魅力 ​关注他 270 人赞同了该文章 最重要的快捷键 ctrl+shift+A:万能命令行 shift两次: ...

  7. k8s-prometheus 数据采集(node redis kubelet等)

    apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: kube-ops data: prometheu ...

  8. table html

    <html><head><title>demo-110101</title><style type="text/css"> ...

  9. Get HttpWebResponse and HttpClient Return String by proxy

    #region Get HttpClient Return String /// <summary> /// Get HttpClient Return String /// </s ...

  10. C# 连接 Socks5 代理

    public class Socks5ProxyHelp { private Socks5ProxyHelp() { } public static string[] errorMsgs = { &q ...