轉載
原文地址:https://www.cnblogs.com/mgzc-1508873480/p/7839800.html
參考文檔 http://www.linuxhowtos.org/System/procstat.htm
在Linux系統中,可以用/proc/stat文件來計算cpu的利用率。這個文件包含了所有CPU活動的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。
cat /proc/stat
cpu 65376847 362756 2405159 10834971593 3765180 93399 2395097 0
cpu0 7680302 5263 111909 1355640955 47680 0 185343 0
cpu1 6527638 2261 327795 1356540189 249151 1 24242 0
cpu2 6239465 47114 200809 1354709532 2153662 3610 317002 0
cpu3 7009912 36126 257576 1356116663 162851 1068 87068 0
cpu4 6028713 1692 197911 1356919175 300788 6821 216076 0
cpu5 7110575 1479 124474 1356297947 92620 4248 39901 0
cpu6 7206763 241427 247384 1355030525 691206 11642 242214 0
cpu7 17573475 27390 937298 1343716603 67218 66006 1283248 0
intr 2466653411 753885765 3 0 4 4 0 0 0 1 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148466005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1553671397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10630155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0
ctxt 2905526438
btime 1260187150
processes 4266007
procs_running 5
procs_blocked 0
輸出解釋
CPU 以及CPU0、CPU1、CPU2、CPU3、CPU4、CPU5、CPU6、每行的每個參數意思(以第一行為例)為:
參數 解釋
user (65376847) 從系統啟動開始累計到當前時刻,用戶態的CPU時間(單位:jiffies) ,不包含 nice值為負進程。1jiffies=0.01秒
nice (362756) 從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間(單位:jiffies)
system (2405159) 從系統啟動開始累計到當前時刻,核心時間(單位:jiffies)
idle (10834971593) 從系統啟動開始累計到當前時刻,除硬盤IO等待時間以外其它等待時間(單位:jiffies)
iowait (3765180) 從系統啟動開始累計到當前時刻,硬盤IO等待時間(單位:jiffies) ,
irq (93399) 從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies)
softirq (2395097) 從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
CPU時間=user+system+nice+idle+iowait+irq+softirq
“intr”這行給出中斷的信息,第一個為自系統啟動以來,發生的所有的中斷的次數;然后每個數對應一個特定的中斷自系統啟動以來所發生的次數。
“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。
“btime”給出了從系統啟動到現在為止的時間,單位為秒。
“processes (total_forks) 自系統啟動以來所創建的任務的個數目。
“procs_running”:當前運行隊列的任務的數目。
“procs_blocked”:當前被阻塞的任務的數目。
那么CPU利用率可以使用以下兩個方法。先取兩個采樣點,然后計算其差值:
cpu usage=(idle2-idle1)/(cpu2-cpu1)*100
cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100