CPU不可中斷和殭屍進程

top時S列爲進程的狀態:

R:運行狀態

i:空閒狀態

D:不可中斷狀態,進程正在和硬件交互,爲了保護硬件,處於不可中斷狀態。

Z:殭屍狀態,實際上進程已經結束,但父進程沒有回收資源。

S:睡眠狀態,可中斷。

T:暫停狀態,進程收到SIN_STOP信號暫停。調試加斷點的時候,進程就處於這種狀態。

X:進程已經掛掉。

大量不可中斷狀態,系統或硬件出現故障,可能會出現,檢查IO問題。

殭屍狀態:

1、父進程創建子進程後,沒有調用wait等待,

2、子進程結束會給父進程發送sig_children,父進程沒有接受此sig_children處理。

3、或者子進程結束太快,父進程沒得及做以上2步操作。

當父進程結束,殭屍子進程會被init回收。

當父進程長期不結束,殭屍子進程也會長期存在。

dstat 查看系統的IO情況。

 

 

信號中斷(軟中斷)

本質上是一種異步處理機制。

中斷被分成上下兩部分處理。

上部分:硬中斷,直接處理硬件情況,反應很快。

下部分:軟中斷,爲內核線程,反應相對不如上中斷快。

每個CPU都有1個軟中斷內核線程,名字爲ksoftirqd/0 。

硬中斷一般對應各種IO問題。

軟中斷髮生頻率過高,內核線程會因爲CPU使用率過高,導致軟中斷處理不及時,造成各種問題,像網絡延時,調度緩慢等性能問題。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章