adb shell cat /proc/stat | grep cpu > totalcpu0

此处第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:

参数 解析(单位:jiffies)

(jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)

user 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。

nice 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

system 从系统启动开始累计到当前时刻,处于核心态的运行时间

idle 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间

iowait 从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)

irq 从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)

softirq 从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)

stealstolen which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)

guest which is the time spent running a virtual CPU for guest operating systems under the control of the Linux kernel(since 2.6.24)

结论:总的cpu时间totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen +guest

可以每1s获取一次CPU信息,分析整机CPU占用率。

计算方法:

1、 采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:

(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;

2、 计算总的Cpu时间片totalCpuTime

a) 把第一次的所有cpu使用情况求和,得到s1;

b) 把第二次的所有cpu使用情况求和,得到s2;

c) s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = j2 - j1 ;

3、计算空闲时间idle

idle对应第四列的数据,用第二次的idle - 第一次的idle即可

idle=第二次的idle - 第一次的idle

4、计算cpu使用率

pcpu =100* (total-idle)/total

首先获取应用的进程id:

adb shell ps | grep com.package

根据进程id,通过proc获取CPU信息

adb shell cat /proc/进程id/stat | awk '{print $14,$15,$16,$17}' >> appcpu0

说明:以下只解释对我们计算Cpu使用率有用相关参数(14-17列)

参数 解释

pid 进程号

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

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

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

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

结论:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。

之后可以每1s获取一次CPU信息,分析获得app的CPU占用率等信息。

CPU测试--通过proc获取CPU信息的更多相关文章

  1. 通过GeoIP2分析访问者IP获取地理位置信息

    原文链接:http://blog.csdn.net/johnnycode/article/details/42028841 MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用 ...

  2. 微信小程序-获取用户信息(getUserInfo)

    当小程序抹杀掉这个接口的时候,多少人心凉了.. 作为一个初级web前端开发,我是更加懵逼,小程序员跑路了... 当时以及现在用的办法就是: 1.增加一个登陆或授权页 2.上线以后自动获取 3.增加一个 ...

  3. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  4. 获取CPU信息

    1 查看手机CPU信息 cmd——adb shell——cd /proc------cat cpuinfo 2 获取cpu的是arm指令集,armv7指令集.还是neon指令集 /** * * [获取 ...

  5. Android获取cpu和内存信息、网址的代码

      android获取手机cpu并判断是单核还是多核 /** * Gets the number of cores available in this device, across all proce ...

  6. Java 获取CPU、内存、外网IP等硬件信息

    import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.Input ...

  7. 使用python获取CPU和内存信息的思路与实现(linux系统)

    linux里一切皆为文件,在linux/unix的根文件夹下,有个/proc文件夹,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做"/proc&qu ...

  8. python3监控系统资源最终版(获取CPU,内存,磁盘,网卡等信息),返回json格式。

    #!/usr/bin/env python3 #-*- coding:utf-8 -*- #create at 2018-12-07 'this is a system monitor scripts ...

  9. C#获取CPU占用率、内存占用、磁盘占用、进程信息

    代码: using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading ...

随机推荐

  1. C++与C#的多态

    C++ 多态 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数. 下面的实例 ...

  2. 201552-53 《Java程序设计》第三周问题汇总

    201552-53 <Java程序设计>第三周问题汇总 1. 4.2 基本类型打包器理解不是很好,希望老师讲解一下. 2.vim中怎么用"yyp"复制上一行代码 在按E ...

  3. 20155230 《Java程序设计》实验一(Java开发环境的熟悉) 实验报告

    练习题: 凯撒密码: import java.util.Scanner; import java.io.*; public class exp1 { public static void main(S ...

  4. 20155330 2016-2017-2 《Java程序设计》第九周学习总结

    20155330 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛 ...

  5. 20155330 2016-2017-2 《Java程序设计》第四周学习总结

    20155330 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 学习目标 理解封装.继承.多态的关系 理解抽象类与接口的区别 掌握S.O.L.I.D原则 了 ...

  6. 使用三层交换机实现不同vlan的互通

    如下拓扑图所示,要实现vlan10(192.168.10.0/24)与vlan 20(192.168.20.0/24)的网络互通. 三层交换机配置: 创建vlan:Switch#configure t ...

  7. 初始CSS模板

    /*开始 初始CSS模板 开始*/ body, div, address, blockquote, iframe, ul, ol, dl, dt, dd, li, dl, h1, h2, h3, h4 ...

  8. JS基础,课堂作业,成绩练习

    成绩练习 <script> var name = prompt("请输入学生姓名:"); var degree = parseInt(prompt("请输入学 ...

  9. Qt-Qt5最新增加程序图标方式

    亲爱的小伙伴吗,还记得原始的Qt4是怎么给运行程序添加图标的么,是不是先准备一个ICON文件,问了在家里建立一个rc文件,在文件里面加上 IDI_ICON1               ICON    ...

  10. appium+python自动化☞环境搭建

    前言:appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python.略懂Python,所以接下来的教程是 appium+pyt ...