Android组件功耗测量

原文:https://source.android.com/devices/tech/power/component

您可以通过比较组件在指定状态(开启,激活,扫描等)和组件关闭时设备的电流消耗来确定单个组件的功耗。也可以用外部功耗监视器(例如台式电源或专用电池监视工具:如Monsoon Solution Inc.功耗监视器和功耗工具软件)测量设备在标称电压下的平均瞬时电流消耗。

制造商通常提供有关单个组件消耗的电流的信息。如果它准确地表示实际设备电池的电流消耗,则使用此信息。但在设备电源配置文件中使用这些值之前,请验证制造商提供的值。

功耗控制

测量时,请确保设备没有连接到外部电源,例如与使用Android Debug Bridge(adb)时的开发主机的USB连接。被测设备可能会从主机汲取电流,从而降低了电池的测量值。避免USB On-The-Go(OTG)连接,因为OTG设备可能从被测设备汲取电流。

除了正在测量的组件,系统应以恒定的功耗水平运行,以避免因其他组件的变化而导致的测量不准确。会导致功耗测量产生不必要的变化的系统活动有:

  • 移动网络,Wi-Fi,蓝牙接收、传输或扫描活动。不测量小区无线电功耗时,将设备设置为飞行模式,并根据需要启用Wi-Fi或蓝牙。
  • 屏幕开/关。屏幕打开时显示的颜色会影响某些屏幕技术的功耗。测量非屏幕组件的值时,请关闭屏幕。
  • 系统休眠/唤醒。屏幕关闭状态可以触发系统休眠,将设备的部分置于低功耗或关闭状态。这会影响被测组件的功耗,并在系统定期唤醒发送闹钟等时引入功耗读数的较大差异。详情参见控制系统休眠
  • CPU改变速度并进入/退出低功耗调度空闲状态。在正常操作期间,系统会频繁调整CPU速度,在线CPU内核数量以及其他系统核状态,如内存总线速度,与CPU和内存相关的电源轨电压。在测试期间,以下调整会影响功耗测量:
    • CPU速度调整操作会降低内存总线和其他系统核心组件的时钟数和电压调节量。
    • 调度活动会影响CPU在低功耗空闲状态下花费的时间百分比。有关在测试期间防止发生这些调整的详情请参阅 控制CPU速度

例如,Joe Droid想要计算设备的screen.on值。他在设备上启用飞行模式,在稳定的电流状态下运行设备,保持CPU速度恒定,并使用部分唤醒锁以防止系统休眠。然后乔关闭设备屏幕并进行测量(200mA)。接下来,Joe以最小亮度打开设备屏幕并进行另一次测量(300mA)。该screen.on值为100mA(300 - 200)。

注意:对于活动时电流消耗没有平坦波形的组件(例如蜂窝无线电或Wi-Fi),使用电源监控工具测量平均电流随时间的变化。

当使用外部电源代替设备电池时,系统可能会因未连接的电池热敏电阻或集成的电量计引脚而出现问题(如电池温度读数无效或电池剩余电量可能会关闭内核或Android系统) 。伪电池可以在热敏电阻或电量计引脚上提供信号,模拟正常系统的温度和充电状态读数,还可以提供方便的引线连接外部电源。此外,您可以修改系统以忽略丢失电池中的无效数据。

控制系统休眠

本节介绍当不希望系统休眠状态干扰其他测量时,如何防止系统休眠;以及当需要测量时,如何测量系统休眠状态的功耗。

防止系统休眠

系统休眠会在功耗测量中引入不必要的差异,并将系统组件置于低功耗状态,不利于功耗的测量。屏幕关闭时使用临时局部唤醒锁以防止系统休眠。用USB线将设备连接到开发主机,然后使用以下命令:

$ adb shell "echo temporary > /sys/power/wake_lock"

执行上述wake_lock写入后,屏幕关闭将不会触发系统休眠。(在测量功耗前,记得断开USB线与设备的连接。)

移除唤醒锁:

$ adb shell "echo temporary > /sys/power/wake_unlock"

测量系统休眠

为了测量系统休眠状态期间的功耗,需要测量电源配置文件中cpu.idle的值 。测量前:

  • 移除已存在的唤醒锁(如上文所述)。
  • 将设备置于飞行模式以避免蜂窝无线电的并发活动,蜂窝无线电可能会在独立的处理器上运行,脱离系统休眠控制的SoC部分。
  • 通过以下方式确保系统处于休眠状态:
    • 确认电流读数处在稳定值。读数应在预期范围内:SoC休眠状态功耗加上保持供电的系统组件的功耗(如USB PHY)。
    • 检查系统控制台输出。
    • 观察系统状态的外部指示(如未休眠时关闭LED)。

控制CPU速度

活动CPU随着时钟速度和相关电压的变化而联机或脱机(可能还会影响内存总线速度和其他系统核电源状态),并且会在内核空闲循环时进入低功耗空闲状态。为电源配置文件测量不同CPU功耗状态时,应避免测量其他参数时的功耗差异。电源配置文件假定所有CPU具有相同的可用速度和电源特性。

在测量CPU功耗或者以恒定CPU功耗进行其他测量时,保持在线CPU的数量恒定不变(如有一个CPU在线,其余的离线/热拔除)。在调度空闲时保持除一个CPU之外的所有CPU可以产生可接受的结果。用adb shell stop停止Android Framework可以减少系统调度活动。

您必须在电源配置文件cpu.speeds条目中指定设备的可用CPU速度。获取可用CPU速度列表,请运行:

$ adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

这些速度与cpu.active的功耗测量值相一致。

对于功耗受联机内核数量影响显著的平台,您可能需要修改平台的cpufreq 驱动程序或调控器。大多数平台都支持通过用户空间cpufreq调控器来控制CPU速度和使用sysfs接口来设置速度。例如,要在仅具有1个CPU或所有CPU共享公共cpufreq策略的系统上设置200MHz的速度,使用系统控制台或adb shell运行以下命令:

$ echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
$ echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
$ echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
$ echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

注意:具体的命令因平台cpufreq实现而异。

这些命令确保新速度不在允许范围之外,设置新速度,然后打印CPU实际运行的速度(用于验证)。如果当前最小速度在执行前是高于200000的,则可能需要调换前两行的顺序,或者再次执行第一行命令以在设置最大速度之前降低最小速度。

要测量以各种速度运行的CPU消耗的电流,在系统控制台用以下命令将CPU置于CPU绑定的循环中:

# while true; do true; done

在执行循环时进行测量。

在执行热保护时,有些设备会由于高温(如在高速运行CPU持续一段时间后)而限制最大CPU速度。可通过在测量时的系统控制台输出或在测量后检查内核日志来查看这种限制。

测量系统未休眠且未执行任务时的功耗cpu.awake值,CPU应处于能执行ARM等待事件指令的低功耗调度空闲循环,或处于SoC能快速退出可用空闲等待的特定低功耗状态。

测量系统处于非休眠模式且未执行任务时的功耗cpu.active值,一个CPU(通常是主CPU)应运行任务,而所有其他CPU应处于空闲状态。

测量屏幕功耗

在测量屏幕点亮功耗时,确保在启用屏幕时正常打开的其他设备也处于打开状态。例如,如果屏幕打开时通常会打开触摸屏和显示屏背光,请确保在测量时这些设备已打开,以获得屏幕点亮时电源使用的真实示例。

一些显示技术的功耗根据显示的颜色变化,导致功耗因测量时屏幕上显示的内容而显著变化。测量时,确保屏幕显示具有逼真屏幕功耗特性的内容。目标在极端情况下的全黑屏幕(某些技术的最低功耗)和全白屏幕之间。常见的选择是日历应用程序中的日程表视图,其具有白色背景和非白色元素的混合。

最小最大显示/背光亮度下测量屏幕点亮功耗。设置最小亮度:

  • 使用Android UI(不推荐)。将“设置”>“显示亮度”滑块设置为最小显示亮度。但是,Android UI允许将亮度设置为最低可能的面板/背光亮度的10-20%,并且不允许将亮度设置得太低,以至于在不费力的情况下可能无法看到屏幕。
  • 使用sysfs文件(推荐)。如果可用,请使用sysfs文件控制面板亮度,直至降到硬件支持的最小亮度。

此外,如果平台sysfs文件允许打开和关闭LCD面板、背光和触摸屏,请使用该文件在屏幕打开和关闭的情况下进行测量。否则,设置局部唤醒锁,以便系统不会休眠,然后使用电源按钮打开和关闭屏幕。

测量Wi-Fi功率

在相对安静的网络上执行Wi-Fi测量。避免引入额外的工作来处理与被测活动无关的大量广播流量。

wifi.on值是测量启用Wi-Fi但未主动发送或接收时的功耗。这通常被测量为系统休眠(睡眠)状态下Wi-Fi启用与禁用之间的电流消耗差值。

wifi.scan值是测量Wi-Fi扫描接入点期间的功耗。应用程序可以使用WifiManager类startScan() API
触发Wi-Fi扫描 。您还可以打开“设置> Wi-Fi”,每隔几秒执行一次接入点扫描,功耗明显增加,但您必须从这些测量值中减去屏幕功率。

注意:使用可控装置(如 iperf)来生成网络接收和传输流量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,984评论 0 13
  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 12,890评论 0 7
  • 转载于 http://www.uml.org.cn/mobiledev/201211063.asp#2 功耗控制 ...
    ghroost阅读 1,873评论 1 20
  • 看着当初学校那漂亮和开得自信的樱花, 让我不禁回想 何时,这心眼也小了,脾气越来越暴躁。 已然没了远方的呐喊,独自...
    jfdream阅读 209评论 0 0
  • 姓名:黄丽钦 岗位:影视部主管 【日精进打卡第44天】 【知~学习】 《六项精进》2遍 共88遍 《大学》2...
    黄丽钦888阅读 95评论 0 0