`
REALGODO
  • 浏览: 176897 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android项目使用jiffies来测量CPU耗电情况

 
阅读更多

 调试android程序是否耗电时候可采用单位时间内监控jiffies的方式实现

 
  • 什么是jiffies
    全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。
    系统运行时间以秒为单位,等于jiffies/Hz。注意,jiffies类型为无符号长整型(unsigned long),其他任何类型存放它都不正确。将以秒为单位的时间转化为jiffies:seconds * Hz,将jiffies转化为以秒为单位的时间:jiffies / Hz相比之下,内核中将秒转换为jiffies用的多些。
 
  • 调试方法
1.安装你的app后,尽量关闭无关app,将屏幕锁屏时间调至最大(一般是10分钟)
2.进入adb shell 中使用如下命令
ps | grep “你的app包名”
cat /proc/“进程号”/stat | awk -F " " '{print $14,$15}'
每隔10分钟记录下这两个值,做差值
第一个值是内核态jeffies,第二个值是用户态jeffies
3.比较优化后的app在相同测试时间的jeffies数,就可以判断你的程序的CPU耗电状况

 

分享到:
评论

相关推荐

    linux中的jiffies变量.pdf

    为了支持更长时间跨度的计算,在64位系统中,jiffies使用了一个64位的无符号整型变量 `jiffies_64` 来存储。值得注意的是,`jiffies_64` 并不是原子性的,这意味着在读取其值的时候必须确保读取的序列号是连续的,以...

    6_jiffies.tasr.gz

    为了避免这种情况,通常会使用原子操作或者锁来确保安全的读写。 获取`jiffies`值通常需要内核级别的权限,这在用户空间程序中是无法直接完成的。但是,可以通过系统调用来间接获取,比如`gettimeofday()`或`clock_...

    linux中的jiffies变量文.pdf

    为了确保数据的一致性和原子性,内核提供了一个函数`get_jiffies_64()`来安全地读取64位的jiffies值。此外,在`(kernel)>`文件中定义了获取jiffies值的实现逻辑。对于32位系统,`get_jiffies_64()`会确保读取操作是...

    cpu_linux.rar_cpu_linux.cpp_linux 读取文件_proc cpu

    在Linux系统中,获取CPU使用情况是通过读取`/proc`目录下的特定文件来实现的,这在程序开发中非常常见,特别是对于系统监控和性能分析的应用。本主题聚焦于如何利用C++语言在Linux环境下编程来读取`/proc/stat`文件...

    linux定时器和Jiffies.pdf

    例如,可以使用以下命令来观察 Timer 中断的次数: ``` adrian@adrian-desktop:~$ cat /proc/interrupts | grep timer && sleep 1 && cat /proc/interrupts | grep timer ``` 这将显示当前系统的 Timer 中断次数,并...

    linux 获取cpu shell

    `: 从`/proc/stat`文件的第一行读取CPU使用情况,并计算总的CPU使用时间(包括用户模式、nice模式、系统模式和空闲时间)。 - `noidlea=`head -1 /proc/stat | awk '{print $2 + $3 + $4}'`;`: 计算非空闲CPU使用...

    GT性能测试Android版使用说明

    ### GT性能测试Android版使用说明知识点详解 #### 一、GT概述 - **定义与特点**:GT(随身调)Android版是一款由腾讯MIG专项测试组自主研发的Android APP随身调测平台。该平台作为一款直接运行于手机端的“集成调...

    需要了解的linux HZ Tick Jiffies.docx

    Linux HZ Tick Jiffies Linux 操作系统中的 HZ、Tick 和 Jiffies 是三个紧密相关的概念,它们都是与时间有关的变量,下面我们将详细介绍它们的含义和应用。 HZ 是 Linux 内核中定义的 Timer 频率,表示每秒钟有...

    cpuinfo_内存占有率计算_linuxcpu占用率统计_

    // CPU占用率计算原理:// 1、读取/proc/pid/stat文件,其中记录了从开机到现在,本进程所占用的CPU时间(单位jiffies)// 2、然后再读取/proc/stat文件,其中记录了从开机到现在,系统所占用的CPU时间(单位jiffies...

    linux源码分析之cpu初始化 kernel/head.s

    总的来说,Linux内核的CPU初始化在kernel/head.s中开始,它不仅设置了CPU的工作模式,还确保了中断的关闭,查找并验证了处理器和机器类型,最后创建了页表,为内核的内存管理打下基础。这个过程是内核启动阶段的核心...

    Linux设备驱动程序学习(10)-时间、延迟及延缓操作 - Linux设备驱动程序

    Linux提供了delay()函数,它使用CPU循环来实现简单的延迟,但这会占用CPU资源。更常见的是使用udelay()和mdelay(),这两个函数分别以微秒和毫秒为单位进行延迟,它们基于时钟周期进行计算,不会消耗过多CPU资源。 3...

    Linux操作系统中断与异常实验

    中断是指 CPU 在执行指令时,遇到某些特殊情况,需要暂停当前指令的执行,转而执行另外的指令。例如,在 Linux 中,当硬件设备需要 CPU 的注意时,会发送中断信号,CPU 就会暂停当前指令的执行,转而执行中断处理...

    Linux驱动开发探究_Part2.rar

    开发者需要理解各种时间相关函数,如`jiffies`(表示自系统启动以来经过的滴答数)、`gettimeofday()`、`clock_gettime()`等,以及如何使用它们来实现精确的时间间隔计算。 2. **延迟**:在驱动开发中,理解系统...

    relaying executive

    这通常适用于“长”延迟情况,指的是多个滴答时间的延迟,具体时长可能在某些平台上低至几毫秒,但对CPU和内核来说仍然是长时间的。 1. **长延迟(Long Delays)** 当驱动程序需要较长时间的延迟时,有几种实现...

    GTAndroidUserGuide.pdf

    - **性能指标选择**:可以选择关注AUT每个进程的CPU使用率、CPU时间片Jiffies、内存PSS和PrivateDirty指标,以及不分进程的流量指标Net。 #### 六、输出参数配置 - **默认出参界面**:默认情况下,GT提供了预设的...

    linux内核驱动学习

    为了避免这种情况,可以使用`schedule()`函数让出处理器,使得其他任务有机会执行。但`schedule()`只会将处理器让给idle任务。 在需要超时机制的延时中,可以利用等待队列和相关函数,如`wait_event_timeout()`或`...

    linux软硬时钟.doc

    此外,`uptime`命令和`/proc/uptime`文件提供了关于系统运行时间的信息,这对于监控系统性能和资源使用情况非常有用。标准C库提供了获取系统时间的API,但没有直接设置系统时间的接口,这通常需要借助于系统调用来...

    222019321062060_付若轩17

    实验的主要目标是学习使用C语言进行编程、编写Makefile来管理C项目,以及如何在Linux环境下编写、编译和加载内核模块。实验在Virtualbox虚拟机上运行Ubuntu操作系统或其他类似的平台与Linux系统组合。 实验内容分为...

    Linux定时器结构及机理分析.pdf

    新定时器使用了更高效的数据结构和算法来管理定时事件,从而提高了系统性能。 当一个定时器的`expires`值等于或小于当前的`jiffies`值时,定时器被认为已到期,相应的处理函数会被调用。在这个过程中,可能会涉及到...

Global site tag (gtag.js) - Google Analytics