ref:http://www.blogjava.net/fjzag/articles/317773.htmlhtml
/proc文件系統是一個僞文件系統,它只存在內存當中,而不佔用外存空間。它以文件系統的方式爲內核與進程提供通訊的接口。用戶和應用程序能夠經過/proc獲得系統的信息,並能夠改變內核的某些參數。因爲系統的信息,如進程,是動態改變的,因此用戶或應用程序讀取/proc目錄中的文件時,proc文件系統是動態從系統內核讀出所需信息並提交的。java
/proc目錄中有一些以數字命名的目錄,它們是進程目錄。系統中當前運行的每個進程在/proc下都對應一個以進程號爲目錄名的目錄/proc/pid,它們是讀取進程信息的接口。此外,在Linux 2.6.0-test6以上的版本中/proc/pid目錄中有一個task目錄,/proc/pid/task目錄中也有一些以該進程所擁有的線程的線程號命名的目錄/proc/pid/task/tid,它們是讀取線程信息的接口。linux
該文件包含了全部CPU活動的信息,該文件中的全部值都是從系統啓動開始累計到當前時刻。不一樣內核版本中該文件的格式可能不大一致,如下經過實例來講明數據該文件中各字段的含義。操作系統
實例數據:2.6.24-24版本上的.net
fjzag@fjzag-desktop:~$ cat /proc/stat線程
cpu 38082 627 27594 893908 12256 581 895 0 0htm
cpu0 22880 472 16855 430287 10617 576 661 0 0blog
cpu1 15202 154 10739 463620 1639 4 234 0 0接口
intr 120053 222 2686 0 1 1 0 5 0 3 0 0 0 47302 0 0 34194 29775 0 5019 845 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1434984
btime 1252028243
processes 8113
procs_running 1
procs_blocked 0
第一行的數值表示的是CPU總的使用狀況,因此咱們只要用第一行的數字計算就能夠了。下表解析第一行各數值的含義:
參數 解析(單位:jiffies)
(jiffies是內核中的一個全局變量,用來記錄自系統啓動一來產生的節拍數,在linux中,一個節拍大體可理解爲操做系統進程調度的最小時間片,不一樣linux內核可能值有不一樣,一般在1ms到10ms之間)
user (38082) 從系統啓動開始累計到當前時刻,處於用戶態的運行時間,不包含 nice值爲負進程。
nice (627) 從系統啓動開始累計到當前時刻,nice值爲負的進程所佔用的CPU時間
system (27594) 從系統啓動開始累計到當前時刻,處於核心態的運行時間
idle (893908) 從系統啓動開始累計到當前時刻,除IO等待時間之外的其它等待時間iowait (12256) 從系統啓動開始累計到當前時刻,IO等待時間(since 2.5.41)
irq (581) 從系統啓動開始累計到當前時刻,硬中斷時間(since 2.6.0-test4)
softirq (895) 從系統啓動開始累計到當前時刻,軟中斷時間(since 2.6.0-test4)stealstolen(0) which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)
guest(0) which is the time spent running a virtual CPU for guest operating systems under the control of the Linux kernel(since 2.6.24)
結論2:總的cpu時間totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest