进程CPU使用率计算

  • 1.查看进程相关信息

cat /proc/进程号/stat

    1. 间隔period 秒再次查看进程信息,分别记录两次的utime和stime

utime是第14位
stime是第15位
lastutime是第一次的utime
laststime是第一次的stime

  • 3.计算使用率

sysconf(_SC_CLK_TCK)是节拍数,一般都是100
某进程cpu使用率 = ((utime+stime) - (lastutime + laststime)) / (period * sysconf(_SC_CLK_TCK))

例如:
在这里插入图片描述
在这里插入图片描述

5秒
11382499+3516612=14,899,111

11382904+3516730=14,899,634

523/(5*100)=123%

5秒
1226254+351158=1,577,412

1226655+351278=1,577,933

521/(5*100)=121%

stat文件信息

pid: 进程ID.

comm: task_struct结构体的进程名

state: 进程状态, 此处为S

ppid: 父进程ID (父进程是指通过fork方式,通过clone并非父进程)

pgrp:进程组ID

session:进程会话组ID

tty_nr:当前进程的tty终点设备号

tpgid:控制进程终端的前台进程号

flags:进程标识位,定义在include/linux/sched.h中的PF_*, 此处等于1077952832

minflt: 次要缺页中断的次数,即无需从磁盘加载内存页. 比如COW和匿名页

cminflt:当前进程等待子进程的minflt

majflt:主要缺页中断的次数,需要从磁盘加载内存页. 比如map文件

majflt:当前进程等待子进程的majflt

utime: 该进程处于用户态的时间,单位jiffies,此处等于166114

stime: 该进程处于内核态的时间,单位jiffies,此处等于129684

cutime:当前进程等待子进程的utime

cstime: 当前进程等待子进程的utime

priority: 进程优先级, 此次等于10.

nice: nice值,取值范围[19, -20],此处等于-10

num_threads: 线程个数, 此处等于221

itrealvalue: 该字段已废弃,恒等于0

starttime:自系统启动后的进程创建时间,单位jiffies,此处等于2284

vsize:进程的虚拟内存大小,单位为bytes

rss: 进程独占内存+共享库,单位pages,此处等于93087

rsslim: rss大小上限

说明:

第10~17行主要是随着时间而改变的量;

内核时间单位,sysconf(_SC_CLK_TCK)一般地定义为jiffies(一般地等于10ms)

starttime: 此值单位为jiffies, 结合/proc/stat的btime,可知道每一个线程启动的时间点

1500827856 + 2284/100 = 1500827856, 转换成北京时间为2017/7/24 0:37:58

第四行数据很少使用,只说一下该行第7至9个数的含义:

signal:即将要处理的信号,十进制,此处等于6660

blocked:阻塞的信号,十进制

sigignore:被忽略的信号,十进制,此处等于36088

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值