天天看點

你不一定懂的cpu顯示資訊官方解釋首先這個百分比是怎麼算出來的呢?好了,下面說說hi和si下面是ni下面是wa下面是stiddstat參考文章:

在使用top指令的時候會看到這麼一行:

你不一定懂的cpu顯示資訊官方解釋首先這個百分比是怎麼算出來的呢?好了,下面說說hi和si下面是ni下面是wa下面是stiddstat參考文章:

裡面的各個值分别是什麼意思呢?

今天被問到這個問題,發現答的不是很清楚。果然啊,天天用最多的top指令都還沒摸透。。。慚愧。。。于是就查了些資料:

Cpu(s)表示的是cpu資訊。各個值的意思是:

好了,如果說列出上面的條條框框說我懂了,那真是自欺欺人了。下面是我自己的了解

比如一秒内有100個cpu時間片,這個cpu時間片就是cpu工作的最小機關。那麼這100個cpu時間片在不同的區域和目的進行操作使用,就代表這個區域所占用的cpu時間比。也就是這裡得出的cpu時間百分比。

比如下面一個程式:

你不一定懂的cpu顯示資訊官方解釋首先這個百分比是怎麼算出來的呢?好了,下面說說hi和si下面是ni下面是wa下面是stiddstat參考文章:

将檔案從磁盤的src位置拷貝到磁盤的dst位置。檔案會從src先讀取進入到核心空間,然後再讀取到使用者空間,然後拷貝資料到使用者空間的buf上,再通過使用者空間,核心空間,資料才到磁盤的dst上。

是以從上面這個程式來看,cpu消耗在kernel space的時候就是sy(系統态使用的cpu百分比),cpu消耗在user space的時候就是us(使用者态使用的cpu百分比)。

如果程式都沒什麼問題,那麼是沒有hi和si的,但是實際上有個硬中斷和軟中斷的概念。比如硬中斷,cpu在執行程式的時候,突然外設硬體(比如硬碟出現問題了)機器需要立刻通知cpu進行現場儲存工作。這個時候會cpu會出現上下文切換。就是cpu會有一部分時間會被硬中斷占用了,這個時間就是hi。相類似,si是軟中斷的cpu占用時間,軟中斷是由軟體的指令方式觸發的。

相關軟中斷和硬中斷的概念可以參考:

<a href="http://blog.csdn.net/pxz_002/article/details/7327668" target="_blank">http://blog.csdn.net/pxz_002/article/details/7327668</a>

ni是nice的意思,nice是什麼呢,每個linux程序都有個優先級,優先級高的程序有優先執行的權利,這個叫做pri。程序除了優先級外,還有個優先級的修正值。即比如你原先的優先級是20,然後修正值為-2,那麼你最後的程序優先級為18。這個修正值就叫做程序的nice值。

ni是指用做nice權重的程序使用的使用者态cpu時間比,我的了解就是一個程序的所謂修正值就意味着多配置設定一些cpu時間給這個程序的使用者态,這個中間所多配置設定的cpu時間就是我們這裡的ni。(這個了解沒啥把握,如果有錯誤麻煩幫忙指出下)

wa指的是CPU等待磁盤寫入完成的時間,就是說前提是要進行IO操作,在進行IO操作的時候,CPU等待時間。比如上面那個程式,最後一步,從系統空間到dst硬碟空間的時候,如果程式是阻塞的,那麼這個時候cpu就要等待資料寫入磁盤才能完成寫操作了。是以這個時候cpu等待的時間就是wa。

st的名字很生動,偷取。。。是專門對虛拟機來說的,一台實體是可以虛拟化出幾台虛拟機的。在其中一台虛拟機上用top檢視發現st不為0,就說明本來有這麼多個cpu時間是安排給我這個虛拟機的,但是由于某種虛拟技術,把這個cpu時間配置設定給了其他的虛拟機了。這就叫做偷取。

剩下的id就是除了上面那麼多cpu處理上下文以外的cpu時間片。當然在這些時間片上,cpu是空閑的。

題外話,有個dstat指令也是可以檢視cpu的資訊的。下圖就是dstat -c的顯示

你不一定懂的cpu顯示資訊官方解釋首先這個百分比是怎麼算出來的呢?好了,下面說說hi和si下面是ni下面是wa下面是stiddstat參考文章:

其中可以很容易将usr和us,sys和sy,idl和id,wai和wa,hig和hi,siq和si對應起來

但是可以觀察到dstat是沒有st,ni的統計的,而且它的所有部分加起來總和可能沒有100,這就說明dstat實際是沒有對st,ni做cpu統計的。使用的時候要注意下這個。

<a href="http://hi.baidu.com/higkoo/item/70600834426247483075a1df" target="_blank">http://hi.baidu.com/higkoo/item/70600834426247483075a1df</a>

<a href="http://blog.csdn.net/codestinity/article/details/7496962" target="_blank">http://blog.csdn.net/codestinity/article/details/7496962</a>

<a href="http://book.51cto.com/art/200812/99435.htm" target="_blank">http://book.51cto.com/art/200812/99435.htm</a>

<a href="http://unix.stackexchange.com/questions/18918/in-linux-top-command-what-are-us-sy-ni-id-wa-hi-si-and-st-for-cpu-usage" target="_blank">http://unix.stackexchange.com/questions/18918/in-linux-top-command-what-are-us-sy-ni-id-wa-hi-si-and-st-for-cpu-usage</a>

本文轉自青衫解衣 51CTO部落格,原文連結:http://blog.51cto.com/215687833/1787142

繼續閱讀