分类: LINUX
2012-07-31 18:02:23
以下信息是从linux文件系统中,进入proc/stat 文件中获取的CPU的相关状态和数据
cpu 55027 327 38497 2075733 396 0 533 0 0 0
cpu0 25028 145 20771 1038607 195 0 527 0 0 0softirq 4231990 0 2170513 32169 70417 0 0 1724 1344955 459 611753
2.对各个行含义的解释
user (55027) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (327) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
注意:用户态的真正时间应该包括:user时间+nice时间 即:55027 + 327
system (38497) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (2075733) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (396) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies)
irq (0) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (533) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)
注意:中断时间的真正时间应该包括:iowait时间+irq时间+softirq 即:396 + 0 + 533
*******************************************************************************************************************
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt” 给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。
3.计算CPU的使用率
那么如何计算CPU的使用率呢? 首先我们需要获得短时间内,两个CPU的状态数据,然后根据差值计算CPU的使用率.
user_pass = user2 - user1
system_pass = system2 - system1
irq_pass = irq2 - irq1
idle_pass = idle2 - idle1
cpu利用率=(user_pass + system_pass + irq_pass)*100%/(user_pass +irq_pass+ system_pass + idle_pass)