cacti 圖表 Full CPU Usage 圖中kernel/system的相互關係

分類: 工作雜談 作者: Doris

7 5 月 2013

故事是這樣開始的。某天的早上,發現公司某台機器的Full CPU Usage讓大家大吃了一驚....

 

在上方的CPU Full Usage圖表中我們可以依照顏色來查看目前cpu的使用狀態。但目前在圖表發現實際上使用的狀況,出現了不少紅色(System)以及桃紅色(Kernel)的部分。而System以及Kernel這二個,到底在系統中是做什麼樣的用途?在看圖表的時候會發現另一件事,就是「System和Kernel二個值其實都相去不遠」。這二者之中是有什麼樣的關係呢?

在請教了公司的同事Tiger,Tiger清楚的解說了這樣的狀況,並且淺顯告訴我們可以將Kernel看成叫硬體去做事的指揮官。例如:Linux上設定好了網路,但是Kernel並沒有將網路相關的內容包含進去(掛載網路的kernel module),即使網路設定設好了,可是Linux還是沒有辦法使用網路,因為它不知道實際上應該要請網路卡去做什麼事。另外,System的用途其實就是系統在運作時會佔用的cpu space。而黃色的部分,是User,這個User是指Kernel要去做的事情。所以其實在cpu usage這張圖中,我們可以說system / kernel產生的值幾乎是一樣的。

但實際上有的時候會發現cpu usage飆高kernel / system的狀態,原因其實很多。主要歸納主因可能是做了一些事(包含程式更新之後),造成和之前的系統環境相比需要花費更多的力氣去驅使硬體去工作,所以就會有這樣的結果。

常見的狀況,像是流量大的時候,是否會造成這樣的狀況?這倒是不一定的。要處理的事情如果比較多又處理不來的狀況下CPU Usage就會變高。但以過去的經驗來說,主要的瓶頸都是因為硬碟本身。只要查詢、寫入的量過大,第一個影響的絕對是硬體I/O。當該process沒有結束下,CPU只能等待處理完畢。如果剛好卡了的數量愈來愈,就會發現出現了CPU Usage全滿的狀態。結果機器就當掉了。一般的狀況,我們會注意有沒有瞬間的爆量,有的話要在當下趕快找出原因解決問題。

原來是這麼一回事!謎底揭曉了,也讓我們能更了解原來系統面的奧妙。

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。