1. 程式人生 > >[核心文件系列] NMI 看門狗

[核心文件系列] NMI 看門狗

[核心文件系列]

NMI 看門狗

秦白衣

[X86X86-64體系結構均支援NMI看門狗]

你的系統是不是會經常被鎖住(Lock up)?直至解鎖,系統不再響應鍵盤?你希望幫助我們解決類似的問題嗎?如果你對所有的問題都回答“yes”,那麼此文件正是為你而寫。

在很多X86/X86-64結構的硬體上,我們都可以使用一種被稱為“看門狗NMI中斷”的機制。(NMINon Maskable Interrupt. 這種中斷即使在系統被鎖住時,也能被響應)。這種機制可以被用來除錯核心鎖住現象。通過週期性地執行NMI中斷,核心能夠監測到是否有CPU被鎖住。當有處理器被鎖住時,列印除錯資訊。

為了使用NMI

看門狗,首先需要在核心中支援APIC。對於SMP核心,APIC的相關支援已自動地被編譯進核心。對於UP核心,需要在核心配置中使能CONFIG_X86_UP_APIC (Processor type and features -> Local APIC support on uniprocessors) CONFIG_X86_UP_IOAPIC (Processor type and features -> IO-APIC support on uniprocessors)。在沒有IO-APIC的單處理器系統中,配置CONFIG_X86_UP_APIC。在有IO-APIC的單處理器系統中,則需配置CONFIG_X86_UP_IOAPIC
[注意:某些與核心除錯相關選項可能會禁用NMI看門狗。如:Kernel Stack MeterKernel Tracer]

對於X86-64系統,APIC已被編進核心。

使用本地APICnmi_watchdog=2)時,需要佔用第一個效能暫存器,因而此暫存器不能再被另作它用(如高精度的效能分析)。Oprofileperfctr的驅動已自動地禁用了本地APICNMI看門狗。

可以通過啟動引數“nmi_watchdog=N”使能NMI看門狗。即在lilo.conf的相關項中新增如下語句:

         append=”nmi_watchdog=1”

對於具有IO-APICSMPUP

機器,設定nmi_watchdog=1。對於沒有IO-APICUP機器,設定nmi_watchdog=2,但僅在某些處理器上可以起作用。如果有疑問,在用nmi_watchdog=1啟動後,再檢視/proc/interrupts檔案中的NMI項,如果該項為0,那麼便用nmi_watchdog=2重新啟動,並再次檢查NMI項。如果還是0,問題就比較嚴重了,你的處理器很可能不支援NMI

“鎖住(Lockup)”是指如下的情況:如果系統中的任何一個CPU不能處理週期性的本地時鐘中斷,並持續5秒鐘以上,那麼NMI的處理函式將產生一個oops並殺死當前程序。這是一種“可控崩潰”(Controlled Crash,所謂可控,是指發生崩潰時,能夠輸出核心資訊),可以用此機制來除錯“鎖住”現象。那麼,無論什麼時候發生“鎖住”,5秒鐘之後都會自動地輸出oops。如果核心沒有輸出資訊,說明此時發生的崩潰過於嚴重(如:hardware-wise),以至於NMI中斷都無法被響應,或者此次崩潰使得核心無法列印資訊。

在使用本地APIC時要注意,NMI中斷被觸發的頻率依賴於系統的當前負載。由於缺乏更好的時鐘源,本地APIC中的NMI看門狗使用的是“有效週期(Cycle unhalted,這個詞的翻譯似乎不太確切,如果某位朋友有更佳的建議,請告知在下。)”事件。也許你已經猜到了,當CPU處於halted(空等)狀態時,該時鐘是不計數的。處理器處於空閒狀態的時候,常出現這樣的情況。如果你的系統在被鎖住時,執行的不是hlt指令,看門狗中斷很快就會被觸發,因為每個時鐘週期都會發生“有效週期”事件。如果不幸,處理器在被鎖住時,執行的恰是“hlt”指令,那麼“有效週期”事件永遠都不會發生,看門狗自然也不會被觸發。這是本地APIC看門狗的缺陷,在倒黴的時候,永遠不會進行時鐘計數。而I/O APIC中的看門狗由於採用外部時鐘進行驅動,便不存在這個缺陷。但是,它的NMI頻率非常高,會顯著地影響系統的效能。

         X86nmi_watchdog在預設情況下是禁用的,因此你需要在系統啟動的時候使能它。

在系統執行期間,可以禁用NMI看門狗,只要向檔案“/proc/sys/kernel/nmi_watchdog”中寫“0”即可。向該檔案寫“1”,將重新使能看門狗。即使如此,你仍然需要在啟動時使用引數“nmi_watchdog=”。

注意:在2.4.2-ac18之前的核心中,X86 SMP平臺會無條件地使能NMI-oopser

相關推薦

[核心系列] NMI 看門

[核心文件系列] NMI 看門狗 秦白衣 [X86和X86-64體系結構均支援NMI看門狗] 你的系統是不是會經常被鎖住(Lock up)?直至解鎖,系統不再響應鍵盤?你希望幫助我們解決類似的問題嗎?如果你對所有的問題都回答“yes”,那麼此文件正是為你而寫。 在很多

WebService核心【web-config.wsdd】調用操作

app names row data- esp scope ice tac namespace WebService核心文件【server-config.wsdd】詳解及調用示例 作者:瑪莎拉蒂-小賤人 一、準備工作 導入需要的jar包:

python內置函數中的 IO系列 open和os

python io文件 open os 內置函數 本篇介紹 IO 中的 open 和 os基礎用法。本次用一個遊戲登陸 基礎界面做引子,來介紹。實現存儲的話,方式是很多的。 比如 存到字典 和列表了,可是字典、列表是臨時的,玩網頁遊戲一次還是可以,如果要是一個反復要用到的一個軟件的話,顯

樹莓派 Raspbian 軟源更改 看門啟用

hust XP emp 一行 啟用 pan 這一 targe ssh連接 1.替換腳本 下面腳本請直接復制到終端執行!! 適用於raspbian-stretch(基於Debian9) sudo -s echo -e "deb http://mirrors.us

mybatis核心詳解

type屬性 標簽 fig 是否 ring nag names 數據連接 指定 MyBatis配置文件詳解 configuration 這是配置文件的根元素標簽,所有的其他元素都要在這個標簽下使用。 environments 用於管理所有環境,並可以指定默認使用哪個

Linux核心翻譯

本部落格由浙江工商大學資訊學院的計算機專業學生維護,提供Linux核心有關文件的中文翻譯,為Linux核心學習提供參考。 核心版本:V3.11 翻譯的文件及翻譯進度如下: Documentation/block/switching-sched.txt 建立時間:

ext4之核心

Ext4 檔案系統 =============== 這個版本的ext4是一個開發中的版本,一個比ext3效能優秀的fs,不但支援比ext3更加大的檔案系統,還兼顧了可擴充套件性和可靠性。 郵件列表: [email protected],大家如果想訂閱ext4的核心郵件的話,只需要向這個郵件傳送sub

CentOS核心目錄詳解

編譯 size 虛擬文件系統 硬件 配置 什麽 -m ip add oca 目錄結構 又稱FHS目錄層次標準 =============標準目錄結構================= /dev 設備目錄(硬盤、光驅等)/boot Linux的內

Linux核心:如何寫符合 kernel-doc 規範的註釋

## 簡介 Linux核心使用 [Sphinx](http://www.sphinx-doc.org/) 實現把 *Documentation* 目錄下的 [reStructuredText](http://docutils.sourceforge.net/rst.html) 檔案轉換為非常漂亮的文件。文件

openssl之BIO系列之12---描寫敘述符(fd)類型BIO

scrip 所在 pri 返回 div static 實現 論壇 res 文件描寫敘述符(fd)類型BIO ---依據openssl doc\crypto\bio_s_fd.pod翻譯和自己的理解寫成 (作者:DragonKing [email 

Elasticsearch基本概念及核心配置詳解

last log4j 強烈 內存 文檔 size oca 機制 集群   Elasticsearch5.X,下列的是Elasticsearch2.X系類配置,其實很多配置都是相互兼容的 1. 配置文件 config/elasticsearch.yml 主配置文件

【只怕沒有幾個人能說清楚】系列之二:Unity中的特殊

物體 avi ebp time 編輯模式 tro hive 預覽 打包 參考:http://www.manew.com/thread-99292-1-1.html 1. 隱藏文件夾 以.開頭的文件夾會被忽略。在這種文件夾中的資源不會被導入,腳本不會被編譯。也不會出現

閑來無事研究一下酷緩存kgtemp的加密方式

eight mp3 img 異或 tel 輸出 cnblogs images 加密算法 此貼為本人原創,轉載請註明出處 序 前幾天更新了被打入冷宮很久的酷狗,等進入之後就感覺菊花一緊————試 聽 居 然 都 要 開 通 音 樂 包(高品和無損)才行了,WTF! 這意味著以

Java核心類庫-IO-過濾器(FilenameFilter)

return 文件過濾 system sof boolean style 接口 strong family 文件操作過濾器(FilenameFilter): listFiles(FilenameFilter filter )方法 : 實際就相當於: //文件過濾器(Fil

Tomcat7源碼分析學習系列之一-----tomcat的啟動startup的註釋

addition mission etl %0 很好 fine copy 文件結尾 存在 1. Windows系統,tomcat啟動文件startup.bat @echo off       rem 關閉回顯,不顯示下面的命令;rem Licensed to the Apa

奪命雷公C/C++-----4---頭的用法

png 文章 右鍵 com c++ nbsp 用法 -1 文件的 我們上一篇文章已經說過了如何創建項目,那麽我們這一篇就來說下頭文件的用法, 右鍵文件頭-----》添加----》新建項 然後我們就可以編寫我們的.h文件了,h說白了也就是類似head的意思。。 這

奪命雷公C/C++-----8---打開一個

int pre open getchar 一個 xpl opera ++ .cn 提示:在c語言中\\兩個斜杠代表著一個 \ 斜杠而已噢,很多新人朋友都會在這裏出現道問題噢 其實我們還可以通過c語言來打開一個文件噢,比如我們打開一個記事本來玩玩 #include &

[CentOS 7系列]linux系統類型

linux 文件夾 而且 ls命令是linux下最常用的命令。ls命令就是list的縮寫。通過ls 命令不僅可以查看linux文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。1.命令格式: ls [選項] [目錄名]2.命令功能: 列出目標目錄中所

hibernate核心配置需要配置的部分

核心 可選 eight 引入 image 配置文件 cnblogs height nbsp 第一部分 數據庫部分 第二部分 hibernate部分(可選) 第三部分 引入映射配置文件 hibernate核心配置文件需要配置的部分

.kgtemp加密算法逆向

using 變量 可能 inpu 技術分享 ram out pen 然而 該帖轉載於孤心浪子--http://www.cnblogs.com/KMBlog/p/6877752.html 酷狗音樂上的一些歌曲是不能免費下載的,然而用戶仍然可以離線試聽,這說明有緩存文件,並且極