先简单介绍下/proc/stat各个选项的定义:
/proc # cat stat
cpu 45 0 937 45424 221 63 137 0
cpu0 45 0 937 45424 221 63 137 0
intr 55053 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 5529 0 0 46827 2689 0 0 0
ctxt 8095
btime 0
processes 256
procs_running 2
procs_blocked 0
CPU 以及CPU0每行的每个参数意思(以第一行为例)为:
参数 解释
user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (13295) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
CPU时间=user+system+nice+idle+iowait+irq+softirq
为了测试上面的是否真的如此,我mount了一个区让cpu执行copy指令,发现此事系统的idle时间停止,但是system时间不断增加,可见在普通状态下我们系统的大量时间是在idle模式下的,这也可以证明我们可以在idle函数中让芯片处于低功耗模式来降低整个系统的功耗。
另:在这里也发现一些使用的东西:
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。比较我们的系统:
intr 55053 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 5529 0 0 46827 2689 0 0 0
可以很清楚的看到我们在这段时间内总共发生了55053次中断,主要是uart0的5529次(这个是因为我们使用了大量printk),46827次timer0(timer0是我们的系统定时器),2689次以太网卡(我使用的是nfs)
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。
阅读(1072) | 评论(0) | 转发(0) |