1. 程式人生 > >linux系統/proc/stat信息與top的cup信息的聯系及區別

linux系統/proc/stat信息與top的cup信息的聯系及區別

linux系統 情況 ping hardware 所有 程序 stat lsp utime

一、 /proc 目錄

Linux系統上的/proc目錄是一種文件系統,即proc文件系統,與其它常見的文件系統不同的是,/proc文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為內核與進程提供通信的接口。用戶和應用程序可以通過/proc得到系統的信息,並可以改變內核的某些參數。由於系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取/proc目錄中的文件時,proc文件系統是動態從系統內核讀出所需信息並提交的。

二、/proc/stat與top的cpu信息

1. /proc/stat

該文件包含了所有CPU活動的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻

。不同內核版本中該文件的格式可能不大一致,以下通過實例來說明數據該文件中各字段的含義。(內核2.6.32-431版本)

[root@harry proc]# cat /proc/stat
cpu  638 0 1677 868357 2397 7 510 0 0
cpu0 638 0 1677 868357 2397 7 510 0 0
...(後面省略)

第一行的數值表示的是CPU總的使用情況,各數值的含義如下:

參數

解析(單位:jiffies)

user(638)

從系統啟動開始累計到當前時刻,處於用戶態的運行時間,不包含 nice值為負進程。

nice(0)

從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間

system(1677)

從系統啟動開始累計到當前時刻,處於核心態的運行時間

idle(868357)

從系統啟動開始累計到當前時刻,除IO等待時間以外的其它等待時間

iowait(2397)

從系統啟動開始累計到當前時刻,IO等待時間(since 2.5.41)

irq(7)

從系統啟動開始累計到當前時刻,硬中斷時間(since 2.6.0-test4)

softirq(510)

從系統啟動開始累計到當前時刻,軟中斷時間(since 2.6.0-test4)

steal(0)

從系統啟動開始累計到當前時刻,這是在虛擬環境中運行時在其他操作系統上花費的時間。(Since Linux 2.6.11)

guest(0)

從系統啟動開始累計到當前時刻,在Linux內核的控制下為客戶操作系統運行虛擬CPU的時間。(Since Linux 2.6.24)

(jiffies是內核中的一個全局變量,用來記錄自系統啟動一來產生的節拍數,在linux中,一個節拍大致可理解為操作系統進程調度的最小時間片,不同linux內核可能值有不同,通常在1ms到10ms之間)

總的cpu時間:totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest。

可以看出,stat文件中記錄的時間是從開機到當前時間積累的所有cpu時間。

2. top的cpu信息

輸入top命令,輸出如下:

top - 00:09:46 up  2:55,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  88 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
...(省略)

Cup(s)那行的含義如下:

0.3%us

用戶空間占用CPU百分比

0.3%sy

內核空間占用CPU百分比

0.0%ni

用戶進程空間內改變過優先級的進程占用CPU百分比

99.3%id

空閑CPU百分比

0.0%wa

等待輸入輸出的CPU時間百分比

0.0%hi

硬中斷(Hardware IRQ)占用CPU的百分比

0.0%si

軟中斷(Software Interrupts)占用CPU的百分比

0.0%st

在虛擬環境中運行時在其他操作系統上花費的時間

可以看出,top中顯示的cpu信息都是實時的各種參數占用的cpu百分比

3. /proc/stat與top的cpu信息的聯系與區別

區別:/proc/stat文件顯示的是從啟動到當前時間,各種cup時間的累計值;而top則是顯示實時的cpu使用情況。

聯系:top通過讀取/proc/stat去計算cpu占用情況。

/proc/stat 就像汽車儀表盤上的裏程數,而top顯示的cpu信息則是這輛車的速度。

三、參考

1. Linux中通過/proc/stat等文件計算Cpu使用率

2. Linux /proc目錄詳解

3. Linux: /proc/stat info is not consistent with top command

4. TOP命令 詳解CPU 查看多個核心的利用率按1

5. Linux Top 命令解析

(完)

linux系統/proc/stat信息與top的cup信息的聯系及區別