linux系统/proc/stat信息与top的cup信息的联系及区别

一、 /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 命令解析

(完)

posted @ 2018-05-27 00:33  大师兄啊哈  阅读(6777)  评论(0编辑  收藏  举报