总的cpu使用率统计

cat /proc/stat得到(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组

cpu从启动至今总的时间:totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen  +  guest

cpu启动至今空闲时间:idle

再采两个够短的时间点,做差计算即可

 

单个进程cpu使用率统计

cat /proc/pid/stat读取到

pid=6873                            进程号

utime=1587                       该任务在用户态运行的时间,单位为jiffies

stime=41958                      该任务在核心态运行的时间,单位为jiffies

cutime=0                            所有已死线程在用户态运行的时间,单位为jiffies

cstime=0                            所有已死在核心态运行的时间,单位为jiffies

进程总cpu时间=utime+stime+cutime+cstime

然后用两个时间快照的cpu使用时间差/总的cpu时间差即可