取得Linux系统的各种统计信息
本文基于Linux 2.6.x内核
一、取得CPU信息(相关文件/proc/stat)
在一个系统中的/proct/stat文件内容如下
$ cat /proc/stat
cpu 1039426 17799 111249 40729024 65373 8133 0
cpu0 1039426 17799 111249 40729024 65373 8133 0
intr 430346008 419773883 78233 0 5 5 1047009 7 4 1 2 0 5407218 66 0 3776594 262981
ctxt 307543240
btime 1173244314
processes 73837
procs_running 1
procs_blocked 0
其中以“cpu”开头的两行代表系统中有两个CPU核心(我的机子是P4双核的),每一行对应一个CPU核心。后面的数字表示从启动到现在CPU花费在执行各项任务上的时间,单位是USER_HZ(一般是每秒一百次)。
各个数据项从左至右的函义如下:
user:普通进程在用户模下下执行的时间。
nice:被提高优先级的进程在用户模式下的执行时间。
system:进程在内核模式下的执行时间。
idle:空转时间。
iowait:等待I/O完成的时间。
irq:处理中断请求花费的时间。
softirq:处理软中断请求花费的时间。
"intr"一行给出了从启动到现在的中断服务次数,每一次可能的系统中断。第一列是总的中断服务次数;其它后续的列是各种特殊的中断总数。
"ctxt"一行给出的是从启动到现在所有的CPU进行上下文切换的总次数。
"btime"一行给出的是系统启动的时间,从Unix纪元(1970年1月1日0时0秒)开始的秒数。
"processes"一行给出的是创建的进程和线程总数,包括(但不限于)通过调用fork()和clone()系统调用创建的那些进程和线程。
"procs_running"给出的是当前正在运行的进程数。
"procs_blocked"给出的是当前被阻塞的进程数,正在等待