1. 程式人生 > >kernel bug --- soft lockup

kernel bug --- soft lockup

最近搭建了一個pxe無人值守自動裝機,從script自動化搭建pxe到自動安裝。

昨晚安裝了幾個不同的系統測試,今早發現pxe server報錯如下:

kernel: BUG: soft lockup - CPU#0 stuck for 124s! [vmtoolsd:1638]

soft lockup:核心軟死鎖,這個bug並沒有讓系統徹底宕機,但是若干程序/執行緒被鎖死在某個狀態。

檢視相關資訊資料,結合系統相關資訊,個人覺得應該是負載過重引起的。

 

 

2.核心軟死鎖(soft lockup)bug原因分析

         Soft lockup名稱解釋:所謂,soft lockup就是說,這個bug沒有讓系統徹底宕機,但是若干個程序(或者kernel thread)被鎖死在了某個狀態(一般在核心區域),很多情況下這個是由於核心鎖的使用的問題。

         Linux核心對於每一個cpu都有一個監控程序,在技術界這個叫做watchdog(看門狗)。通過ps –ef | grep watchdog能夠看見,程序名稱大概是watchdog/X(數字:cpu邏輯編號1/2/3/4之類的)。這個程序或者執行緒每一秒鐘執行一次,否則會睡眠和待機。這個程序執行會收集每一個cpu執行時使用資料的時間並且存放到屬於每個cpu自己的核心資料結構。在核心中有很多特定的中斷函式。這些中斷函式會呼叫soft lockup計數,他會使用當前的時間戳與特定(對應的)cpu的核心資料結構中儲存的時間對比,如果發現當前的時間戳比對應cpu儲存的時間大於設定的閥值,他就假設監測程序或看門狗執行緒在一個相當可觀的時間還沒有執。Cpu軟鎖為什麼會產生,是怎麼產生的?如果linux核心是經過精心設計安排的CPU排程訪問,那麼怎麼會產生cpu軟死鎖?那麼只能說由於使用者開發的或者第三方軟體引入,看我們伺服器核心panic的原因就是qmgr程序引起。因為每一個無限的迴圈都會一直有一個cpu的執行流程(qmgr程序示一個後臺郵件的訊息佇列服務程序),並且擁有一定的優先順序。Cpu排程器排程一個驅動程式來執行,如果這個驅動程式有問題並且沒有被檢測到,那麼這個驅動程式將會暫用cpu的很長時間。根據前面的描述,看門狗程序會抓住(catch)這一點並且丟擲一個軟死鎖(soft lockup)錯誤。軟死鎖會掛起cpu使你的系統不可用。

         如果是使用者空間的程序或執行緒引起的問題backtrace是不會有內容的,如果核心執行緒那麼在soft lockup訊息中會顯示出backtrace資訊。

注:該段內容來自於:http://www.cnblogs.com/brucewoo/archive/2012/12/16/3226861.html