Perl 获取cpu使用率

1、先了解/proc/stat文件信息
 
    在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。
 
    此信息都存储在/proc/stat文件中,
 
    在Linux的内核中,有一个全局变量:Jiffies。 Jiffies代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目。这样jiffies的单位就是1/HZ。Intel平台jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔了。每个CPU时间片,Jiffies都要加1。 CPU的利用率就是用执行用户态+系统态的Jiffies除以总的Jifffies来表示。
 
    在Linux系统中,可以用/proc/stat文件来计算cpu的利用率。这个文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。样例如下:
 
[root@bogon tmp]# cat /proc/stat
 cpu  2175 501 15724 1114163 7094 2153 1144 0
 cpu0 2175 501 15724 1114163 7094 2153 1144 0
 intr 11576005 11430258 11 0 3 3 0 5 0 1 0 0 0 107 0 0 111811 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 5461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28345 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 530531
 btime 1228361375
 processes 6764
 procs_running 1
 procs_blocked 0
 
 
 
输出解释
 CPU 以及CPU0、CPU1每行的每个参数意思(以第一行为例)为:
 
参数 解释
 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
 
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
 “ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
 “btime”给出了从系统启动到现在为止的时间,单位为秒。
 “processes (total_forks) 自系统启动以来所创建的任务的个数目。
 “procs_running”:当前运行队列的任务的数目。
 “procs_blocked”:当前被阻塞的任务的数目。
 
那么CPU利用率可以使用以下两个方法。先取两个采样点,然后计算其差值:
 

1、先了解/proc/stat文件信息
 
    在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间 / CPU总的执行时间。
 
    此信息都存储在/proc/stat文件中,
 
    在Linux的内核中,有一个全局变量:Jiffies。 Jiffies代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目。这样jiffies的单位就是1/HZ。Intel平台jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔了。每个CPU时间片,Jiffies都要加1。 CPU的利用率就是用执行用户态+系统态的Jiffies除以总的Jifffies来表示。
 
    在Linux系统中,可以用/proc/stat文件来计算cpu的利用率。这个文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。样例如下:
 
[root@bogon tmp]# cat /proc/stat
 cpu  2175 501 15724 1114163 7094 2153 1144 0
 cpu0 2175 501 15724 1114163 7094 2153 1144 0
 intr 11576005 11430258 11 0 3 3 0 5 0 1 0 0 0 107 0 0 111811 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 5461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28345 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 530531
 btime 1228361375
 processes 6764
 procs_running 1
 procs_blocked 0
 
 
 
输出解释
 CPU 以及CPU0、CPU1每行的每个参数意思(以第一行为例)为:
 
参数 解释
 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
 
“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
 “ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
 “btime”给出了从系统启动到现在为止的时间,单位为秒。
 “processes (total_forks) 自系统启动以来所创建的任务的个数目。
 “procs_running”:当前运行队列的任务的数目。
 “procs_blocked”:当前被阻塞的任务的数目。
 
那么CPU利用率可以使用以下两个方法。先取两个采样点,然后计算其差值:

#!/usr/bin/perl
#
#use warnings;
#
$SLEEPTIME=5;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e5693d49d04c220bd5215f04d77213b8.html