Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17230
  • 博文数量: 14
  • 博客积分: 631
  • 博客等级: 上士
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-10 22:53
文章分类
文章存档

2011年(2)

2010年(12)

我的朋友

分类: LINUX

2010-11-27 22:44:48

/proc/stat文件

该文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。
实例数据:2.6.24-24版本上的

fjzag@fjzag-desktop:~$ cat /proc/stat
cpu  38082 627 27594 893908 12256 581 895 0 0
cpu0 22880 472 16855 430287 10617 576 661 0 0
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)

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

/proc//stat文件                                         
该文件包含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计
到当前时刻。以下通过实例数据来说明该文件中各字段的含义。
 
[zhengangen@buick ~]# cat /proc/6873/stat
6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0 0 0 0 17 0 0 0

说明:以下只解释对我们计算Cpu使用率有用相关参数

参数                              解释
pid=6873                         进程号
utime=1587                       该任务在用户态运行的时间,单位为jiffies
stime=41958                      该任务在核心态运行的时间,单位为jiffies
cutime=0                         所有已死线程在用户态运行的时间,单位为jiffies
cstime=0                         所有已死在核心态运行的时间,单位为jiffies

结论3:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。

/proc//task//stat文件
该文件包含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。该文件的内容格式以及各字段的含义同/proc//stat文件。

注意,该文件中的tid字段表示的不再是进程号,而是linux中的轻量级进程(lwp),即我们通常所说的线程。

结论4:线程Cpu时间threadCpuTime = utime + stime

注:jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间
阅读(470) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-30 11:05:25

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com