cpu資訊獲取
阿新 • • 發佈:2018-11-11
-
準備知識
-
/proc
檔案系統是一個偽檔案系統,該檔案系統中儲存著核心控制相關資訊,通俗點說就是這個目錄是虛擬的,它受核心直接控制,儲存與核心控制相關的資料,與其他目錄不同的是/proc
目錄不是真實儲存在硬碟中的,它的資料儲存在記憶體中,但是由於它和其他目錄一樣把自己註冊到虛擬檔案系統層了,所以我們還是能看到這個目錄相關資訊,然而只有虛擬檔案系統層呼叫它的時候,他才會建立相關檔案和目錄並與核心溝通獲取相關資訊。 -
上面我們說道
/proc
檔案系統儲存著核心控制相關資訊的目錄,該目錄下的/proc/stat
檔案儲存的是CPU
相關資訊,我們想要獲取CPU
Linux下
很多的工具都是讀取的這個檔案。在這個檔案中包含了所有的CPU
活動資訊,並且該檔案中所有值都是從系統啟動算起直到訪問檔案的這一刻的資料。如下就是某一刻/proc/stat
檔案中的資料:cpu 499312 1086 227835 10498412 3803 0 10904 0 0 0 cpu0 125361 278 56675 2626355 450 0 2242 0 0 0 cpu1 124704 288 57768 2627741 350 0 2168 0 0 0 cpu2 130284 261 55543 2620559 2442 0 1762 0 0 0 cpu3 118961 258 57848 2623755 560 0 4731 0 0 0 intr 46393945 9 924 0 0 0 0 0 0 1 14751 0 0 215 0 0 0 139800 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 4476 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408029 0 283839 7963609 40 945 1535489 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 124171702 btime 1539737966 processes 626819 procs_running 4 procs_blocked 0 softirq 27922585 9163685 6158929 26 485 278010 0 160301 6495615 0 5665534
資料單位:jiffies
-
如上資料中從cpu到cpu3五行(從左到右按順序)每一列的含義如下:
user
:如上499312、125361、124704等,使用者態時間。nice
:如上1086等第二列資料,nice
值為負數的程序所佔時間。system
:如上第三列資料,核心時間。idle
:如上第四列資料,除硬碟IO等待時間之外的時間。iowait
:如上第五列資料,硬碟IO等待時間。irq
:如上第六列資料,硬中斷時間。softirq
如上第七列資料,軟中斷時間。
-
剩下的幾行:
initr
:中斷次數ctxt
:交換次數btime
:從系統啟動到訪問檔案為止的時間。processes
:任務數。procs_runing
:當前執行佇列的任務數。procs_blocked
:當前被阻塞的任務數。
-
CPU
利用率計算可以採用兩點取樣取差值的方式:
-
-
CPU溫度的獲取:
cpu溫度儲存在
/sys/class/thermal/thermal_zone0/temp
中,讀取出的數值需要除以1000。 -
bash 工具:
cat
:工具用來強制讀取一個檔案。gerp
:工具用來篩選資料。awk
:用來處理資料。uptime
:獲取cpu負載資訊
-
bash 數值計算:
bash中的數值計算比較方便的方式是雙小括號:
num=0 ((num++)) # 在雙小括號中可以正常使用C語言的數值計算語法 echo ${num} --------------- 1
-