Linux平臺Cpu使用率的計算

ref:http://www.blogjava.net/fjzag/articles/317773.htmlhtml

 

proc文件系統

/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

 

/proc/stat文件

         該文件包含了全部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

相關文章
相關標籤/搜索