CPU的各指標計算方法(參考vmstat和mpstat)

CPU的基本信息來自於文件"/proc/stat",所以對該文件的CPU部分進行簡單的說明,只截取了其中的三行

cpu  754248101 201023 833006927 34020625757 9582415 41335 57475553 0 0
cpu0 25673365 26490 45242705 481091169 1905819 0 89737 0 0
cpu1 11349582 4034 19951827 522625729 235574 0 64068 0 0

cpu:表示總的cpu信息,cpu0、cpu1表示單個cpu的信息

cpu_user:用戶態的時間

cpu_nice:用戶態的低優先級(nice)時間,cpu_nice和cpu_user都是屬於用戶態的

cpu_sys:系統態時間

cpu_idle:空閒時間

cpu_iowait:當CPU空閒的時候有IO請求的時間

cpu_hardirq:硬中斷時間

cpu_softirq:軟中斷時間,cpu_softirq、cpu_hardirq和cpu_sys都是屬於系統態的

//下面這三個是與虛擬機有關的,如果不存在虛擬機,應該都爲0,由於我的環境沒有虛擬機,所以對這幾個參數沒有詳細去了解

cpu_steal:這個的意思好像是虛擬的處理器需要等待實際的cpu的延遲時間,當存在多個虛擬機時,可能要花一定的時間等待實際的cpu運行其他的虛擬機(該指標不是太清楚)

cpu_guest:cpu運行虛擬處理器花費的時間

cpu_guest_nice:cpu運行低優先級(nice)的guest花費的時間

下面是mpstat的簡單的打印信息,分析這些域的計算方法,這些域的大致方法是通過兩次讀取"/proc/stat",計算兩次的差值

CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

總的時間爲tot_jiffies = cpu_user + cpu_nice + cpu_sys + cpu_idle + cpu_iowait + cpu_hardirq + cpu_steal + cpu_softirq;//這裏沒有計算cpu_guest/cpu_guest_nice是因爲cpu_user/cpu_nice包含了他們

%usr:兩次讀取的cpu_user的差值除以兩次讀取的tot_jiffies的差值

%nice:兩次讀取的cpu_nice的差值除以兩次讀取的tot_jiffies的差值

%sys:兩次讀取的cpu_sys的差值除以兩次讀取的tot_jiffies的差值,該指標有時候會將cpu_softirq和cpu_hardirq都計算進來

%iowait:兩次讀取的cpu_iowait的差值除以兩次讀取的tot_jiffies的差值

%irq:兩次讀取的cpu_hardirq的差值除以兩次讀取的tot_jiffies的差值

%soft:兩次讀取的cpu_softirq的差值除以兩次讀取的tot_jiffies的差值

%steal:兩次讀取的cpu_steal的差值除以兩次讀取的tot_jiffies的差值

%guest:兩次讀取的cpu_guest的差值除以兩次讀取的tot_jiffies的差值

%idle:兩次讀取的cpu_idle的差值除以兩次讀取的tot_jiffies的差值

在統計cpu信息時,還有一個常統計的信息是中斷總數intr,該信息也在/proc/stat中,只截取了第一個值,表示所有cpu的總的中斷數

intr 289854255844

該值得打印信息是使用mpstat -I SUM,

14時19分53秒  CPU    intr/s
14時19分53秒  all  51507.13

intr/s:兩次讀取的intr的差值除以兩次讀取的時間間隔。

 

其他的一些說明:

cpu_user和cpu_nice都是處於用戶態的時間,cpu_sys和cpu_hardirq、cpu_softirq都是處於系統態的時間

iowait:Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.

關於iowait,根據vmstat的man手冊,可以看到,該指標指的是當cpu空閒的時候存在io請求的時間,所以如果該指標如果比較高,即不能說明cpu不能工作,也不能說明I/O有瓶頸,該指標如果升高很難說明什麼問題,應該綜合查看當前的io情況和cpu情況,通過await和aqu_sz等指標確定是否存在I/O瓶頸問題。

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