• 功耗杂项笔记汇总


    1. cat /sys/kernel/debug/wakeup_sources 打印解释

    active_since: 此唤醒源从上次持锁到cat这个文件时持续处于ative状态的时间。
    解释:
    active_since显示的是print_wakeup_source_stats()中变量active_time的值,即: now - ws->last_time
    wakeup_source_activate():上锁的时候会对ws->last_time赋值。
    wakeup_source_deactivate():释放锁的时候会对ws->last_time赋值。
    print_wakeup_source_stats(): 只在唤醒源是avtive的时候active_time才为非0值,所以# cat /sys/kernel/debug/wakeup_sources显示的active_since值就是此唤醒源从上次持锁到cat这个文件时持续持锁的时间。
    其它字段:
    name: ws->name ==> 唤醒源的名字。
    active_count: ws->active_count ==> 此唤醒源由非active状态变为active状态的次数。
    event_count: ws->event_count ==> 此唤醒源代码流程中尝试持锁的次数,不论此唤醒源先前是否已经处于active状态了都计数了。
    wakeup_count: ws->wakeup_count ==> 此唤醒源可能中止suspend流程的次数,只在系统当前没有任何唤醒源持锁时它持锁才加1。
    expire_count: ws->expire_count ==> 此唤醒源超时的次数。
    active_since: ktime_to_ms(active_time) ==> ktime_sub(now, ws->last_time) 此唤醒源从上次持锁到cat这个文件时持续处于ative状态的时间。
    total_time: ktime_to_ms(total_time) ==> 此唤醒源处于active状态的全部时间 == 已经累计的持锁时间 + 当前active持续的时间。
    max_time: ktime_to_ms(max_time) ==> 此唤醒源单次持锁的最大时间,ws->max_time和当前持锁时间二者较大的一个。
    last_change: ktime_to_ms(ws->last_time) ==> 此唤醒源状态变化的时间点。
    prevent_suspend_time: ktime_to_ms(prevent_sleep_time) ==> 使能了内核的autosleep功能才有效,可以理解为此唤醒阻止内核autosleep触发系统休眠流程的总时间。
    注:时间的单位都是ms.

    先打开一个空白的excel,然后在excel中打开wakeup_cources.txt文档,文本导入向导中选"分割符号",然后根据实际选择空格/tab,然后在数据预览中看列划分的是否ok,完成。

    2. CPU功耗与电压频率的关系

    P = C * V^2 * f
    
    P 是功耗
    C 可以简单看作一个常数,它由制程和设计等因素决定
    V 是电压
    f 是频率

    参考:https://blog.csdn.net/memory01/article/details/82972166

    3.关闭Sensor开待机电流: adb shell dumpsys sensorservice restrict test

    4.关闭上层进行调试

    adb shell stop //关闭system server
    adb shell start //拉起system server
    可以看功耗差异是不是Android系统导致的,若是,可以抓systrace继续分析。

  • 相关阅读:
    安装IIS
    安装Asp.Net(4.0.30319)
    转载一个博文
    文件操作引出流(二)FileStream和
    《学习之道》第十一章目前此章最后一点-重复
    《学习之道》第十一章意群
    Views
    Django的基本使用
    MVC框架
    Zookeeper
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/12775333.html
Copyright © 2020-2023  润新知