proc-stat

       在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间 / CPU总的执行时间。

       比如:

  user nice system idle iowait irq softirq
cpu 79553 925 20963 998213 3096 0 96
cpu0 21392 115 5332 247984 798 0 55
cpu1 18727 503 5479 250038 729 0 19
cpu2 20963 141 5508 248286 876 0 12
cpu3 18469 163 4643 251904 691 0 9

        第一行是总和,如果CPU是多核(包括超线程)则会有cpu 0 ~ cpu n

user 从系统启动开始累计到当前时刻,用户态的CPU时间,不包含nice值为负进程。
nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间
system 从系统启动开始累计到当前时刻,核心时间
idle 从系统启动开始累计到当前时刻,除IO等待时间以外其它等待时间
iowait 从系统启动开始累计到当前时刻,IO等待时间
irq 从系统启动开始累计到当前时刻,硬中断时间
Softirq 从系统启动开始累计到当前时刻,软中断时间

       CPU的即时利用率的计算公式:

       CPU在t1到t2时间段总的使用时间 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1)

       CPU在t1到t2时间段空闲使用时间 = (idle2 - idle1)

       CPU在t1到t2时间段即时利用率 =  1 - CPU空闲使用时间 / CPU总的使用时间

猜你喜欢

转载自wupuyuan.iteye.com/blog/2243185