【Linux】/proc/stat詳解 完整驗證版

最初是想參考網上的文檔完成自己的功能,卻由于網上的解釋不全,自己看man文檔。讀了文檔后發(fā)現網上文檔的部分解決是存在問題的,遂將這里的相關信息進行梳理以作備用,并分享給大家。希望也能對大家有幫助。

/proc/stat中包含系統(tǒng)啟動以來的很多系統(tǒng)和內核的統(tǒng)計信息,平時大家比較關心的比如包括CPU運行情況、中斷情況、啟動時間、上線文切換次數、運行中的進程等信息都在其中。

一、文件全貌

# Linux下查看/proc/stat的具體信息如下
[root@WSC-31-2 ~]# cat /proc/stat 
cpu  60382 1 80032 198934063 2349 0 109 0 0 0
cpu0 2405 0 2084 4140924 682 0 6 0 0 0
...  # 此處較多冗余信息,簡化之
cpu47 200 0 134 4147222 10 0 0 0 0 0

intr 33622492 64 ... 0 0 0 0 # 此處較多冗余信息,簡化之
ctxt 68533835
btime 1528905555
processes 318904
procs_running 1
procs_blocked 0
softirq 16567860 0 3850777 8555 5448802 116727 0 1 3577293 1290 3564415

這里將上述內容劃分成幾個模塊進行分析

二、字段含義分析

name   user  nice   system      idle      iowait  irrq  softirq  steal guest guest_nice 
cpu    60382   1     80032     198934063   2349     0     109      0     0       0
cpu0   2405    0     2084      4140924     682      0     6        0     0       0
...  # 此處較多冗余信息,簡化之
cpu47  200     0     134       4147222     10       0     0        0     0       0
cpu指標 含義 時間單位 備注
user 用戶態(tài)時間 jiffies 一般/高優(yōu)先級,僅統(tǒng)計nice<=0
nice nice用戶態(tài)時間 jiffies 低優(yōu)先級,僅統(tǒng)計nice>0
system 內核態(tài)時間 jiffies
idle 空閑時間 jiffies 不包含IO等待時間
iowait I/O等待時間 jiffies 硬盤IO等待時間
irq 硬中斷時間 jiffies
softirq 軟中斷時間 jiffies
steal 被盜時間 jiffies 虛擬化環(huán)境中運行其他操作系統(tǒng)上花費的時間(since Linux 2.6.11)
guest 來賓時間 jiffies 操作系統(tǒng)運行虛擬CPU花費的時間(since Linux 2.6.24)
guest_nice nice來賓時間 jiffies 運行一個帶nice值的guest花費的時間(since Linux 2.6.33)

說明:

1、1 jiffies = 0.01s = 10ms
2、常用計算等式:CPU時間 = user + system + nice + idle + iowait + irq + softirq
3、man手冊中iowait有單獨說明,iowait時間是不可靠值,具體原因如下:
1)CPU不會等待I/O執(zhí)行完成,而iowait是等待I/O完成的時間。
當CPU進入idle狀態(tài),很可能會調度另一個task執(zhí)行,所以iowait計算時間偏小;
2)多核CPU中,iowait的計算并非某一個核,因此計算每一個cpu的iowait非常困難
3)這個值在某些情況下會減少
更多信息可以通過man手冊查看:http://man7.org/linux/man-pages/man5/proc.5.html


intr 33622492 64 ... 0 0 0 0 # 此處較多冗余信息,簡化之
# 這行給出中斷的信息,第一個為自系統(tǒng)啟動以來,發(fā)生的所有的中斷的次數
# 然后每個數對應一個特定的中斷自系統(tǒng)啟動以來所發(fā)生的次數。

ctxt 68533835       #自系統(tǒng)啟動以來CPU發(fā)生的上下文交換的次數

btime 1528905555    #系統(tǒng)啟動到現在的時間,單位為秒(s)

processes 318904    #自系統(tǒng)啟動以來所創(chuàng)建的任務的個數目

procs_running 1     #當前運行隊列的任務的數目

procs_blocked 0     #當前被阻塞的任務的數目

softirq 16567860 0 3850777 8555 5448802 116727 0 1 3577293 1290 3564415
# 此行顯示所有CPU的softirq總數
# 第一列是所有軟件和每個軟件的總數
# 后面的列是特定softirq的總數

技巧

[root@WSC-31-2 ~]# cat /proc/uptime
74495.52 3570301.60
# 第一個參數是開機到現在的時間,單位為秒(s)
# 第二個參數是開機到現在CPU空閑時間,單位為秒(s)

# 通過下列語句,計算出當前時間
ut=`cut -d' ' -f1 </proc/uptime` 
ts=`date +%s` 
date -d"70-1-1 + $ts sec - $ut sec + 74495.52 sec" +"%F %T"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容