`
MyEyeOfJava
  • 浏览: 1151992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71167
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

[Android]获取整体APP CPU信息

阅读更多

通过proc获取CPU信息。
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
screenshot
可以每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 | awk '{print $2}' > tmp
根据进程id,通过proc获取CPU信息
while read line; do adb shell cat /proc/$line/stat | awk '{print $14,$15,$16,$17}' >> appcpu0; done < tmp
说明:以下只解释对我们计算Cpu使用率有用相关参数(14-17列)
参数 解释
pid 进程号
utime 该任务在用户态运行的时间,单位为jiffies
stime 该任务在核心态运行的时间,单位为jiffies
cutime 所有已死线程在用户态运行的时间,单位为jiffies
cstime 所有已死在核心态运行的时间,单位为jiffies

 

结论:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。
之后可以每1s获取一次CPU信息,分析获得app的CPU占用率等信息。

分享到:
评论

相关推荐

    Android 应用耗电量获取

    虽然它不能直接提供应用级别的电量消耗,但可以作为获取整体电池状况的基础,结合BatteryStats获取更详细的电量使用情况。 5. **BatteryStats API**: `BatteryStats`接口提供了一系列方法,如`getUidStats()`,...

    获取安装后的app所占空间大小

    2. **代码实现**:通过编程方式获取,可以使用`ActivityManager`类的`getMemoryInfo()`方法来获取整体内存信息,或者使用`Context`的`getExternalCacheDir()`和`getDatabasePath()`来访问缓存和数据库路径,然后手动...

    android 内存摘抄

    2. **获取CPU信息**: - 通过读取`/proc/cpuinfo`文件来获取系统的CPU型号等基本信息。 - 通过读取`/proc/stat`文件中的`cpu`行来获取CPU的活动信息,包括用户态时间、内核态时间等,从而计算出CPU的使用率。 ###...

    大话移动APP测试 Android与iOS应用测试指南

    移动APP测试是软件开发过程中的重要环节,针对Android和iOS平台的应用程序,测试的重要性不言而喻。在《大话移动APP测试 Android与iOS应用测试指南》中,将深入探讨这两个主流操作系统上的测试策略和实践。 一、...

    GT3.1.0 app性能测试工具

    在Android app性能测试领域,GT3.1.0提供了丰富的测试指标和分析功能,包括CPU使用率、内存占用、GPU渲染帧率、网络流量、磁盘I/O等关键性能参数。这些数据对于理解和优化应用的性能瓶颈至关重要。通过GT,开发者...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Android-CameraFps.7z

    1. **枚举摄像头**:获取设备上所有可用的摄像头,并列出它们的属性,如ID、方向和支持的格式。 2. **选择模式**:用户可以选择不同的预览尺寸和帧率范围,以模拟不同应用场景。 3. **启动预览**:启动摄像头预览...

    GT性能测试Android版使用说明

    - **定义与特点**:GT(随身调)Android版是一款由腾讯MIG专项测试组自主研发的Android APP随身调测平台。该平台作为一款直接运行于手机端的“集成调测环境”(ITE, Integrated Test Environment),具有强大的集成...

    Emmagee-master

    Emmagee是将选中应用的PID传入,读取/proc/PID/stat文件信息及可获取该PID对应程序的CPU信息。 2、监控应用消耗流量 系统中有存放整体流量和针对当程序的流量统计,/proc/net/dev和/proc/uid_stat/UID下存放tcp_...

    android 高仿扫一扫效果.zip

    8. **用户体验**:除了基本功能外,还需关注用户体验,如动画过渡、错误提示、扫描速度反馈等,以提升整体使用感受。 总的来说,`android 高仿扫一扫效果.zip`项目涵盖了Android应用中实现扫描功能的核心技术和细节...

    Android So动态调试大法

    使用Android Studio的CMake或NDK-Build配置来编译.so文件,同时添加调试符号(-g标志)以便获取源码级别的调试信息。 3. **设置调试器**:使用GDB(GNU Debugger)作为动态调试工具。由于Android的特性,你需要一个...

    Android锐动视频编辑SDK文档1

    在集成SDK之前,开发者需要确保运行环境满足最低要求,即Android 4.1(API 16)及以上版本,且设备应配备双核1GHz以上的CPU(推荐四核1.2GHz以上),至少1GB的内存。由于目前SDK仅支持ARM架构,X86和MIPS处理器不被...

    android源码开发实战8.09.zip

    1. **Android源码结构**:了解Android系统的整体架构,包括HAL(硬件抽象层)、库、框架层、应用程序框架和用户界面等层次,以及它们之间的交互关系。 2. **编译环境搭建**:设置Linux开发环境,安装必要的工具链,...

    Android底层

    它包含了不同产品的具体配置信息,例如屏幕分辨率、CPU架构等,这对于多设备支持非常重要。 7. **boot.img镜像文件内容** - **问题**: boot.img镜像文件包含哪些内容? - **答案**: A. kernel & ramdisk - **...

    Android任务管理器源码.zip

    个人开发的任务管理器可能会添加一些独特的功能,如显示CPU和内存使用情况、实时监控网络流量、应用耗电统计等,这些都是通过系统API接口实现的。 9. **用户界面设计** 除了后台逻辑,任务管理器的用户界面设计也...

    Android Pie 源码

    源码的获取和分析对于开发者和研究者来说至关重要,因为它允许深入理解系统的工作原理,定制自己的Android发行版,或者进行应用开发。 1. **新特性**: - **Digital Wellbeing**:Android Pie引入了数字健康功能,...

    大厂的Android面试题.pdf

    - 进程生命周期受系统控制,而Application则代表应用的整体生命周期。 34. **系统启动流程** - 系统启动从Zygote进程开始,最终启动应用进程。 - SystemServer进程负责初始化系统服务。 35. **RecyclerView与...

    run:一个跑步 android 应用

    开发者可能需要关注内存管理、CPU使用、电池消耗等方面,确保应用运行流畅,不影响设备整体性能。 10. **测试与调试**:在开发过程中,单元测试、集成测试和压力测试是必不可少的,以确保应用在各种情况下都能正常...

    REAL210_Android_用户手册_V1.2.pdf

    ##### 1.1 CPU资源介绍 - **内核**: ARM Cortex-A8 - **主频**: 1 GHz - **支持**: - 多媒体处理能力 - 高性能计算任务 - 低功耗设计,适合移动设备 ##### 1.2 核心板资源介绍 - **存储**: 包括RAM、ROM等内存...

    Androbench,主要用于对手机存储进行速度测试

    Androbench是一款专门为Android设备设计的...无论是开发者调试应用,还是消费者挑选设备,都可以通过它获取有价值的信息。下载并运行andoench.apk文件,你就可以开始对你的设备进行测试,以了解其存储性能的真实状况。

Global site tag (gtag.js) - Google Analytics