Perfetto 翻译第十七篇-数据来源-电源计数器及轨迹

前言:虽然有翻译软件,虽然有chatgpt,毕竟语言隔阂,对这个工具还是一知半解,因此想通过翻译的方式和大家来一起学习下Perfetto这个强大的工具

Perfetto 翻译第一篇-简单介绍
概览
Perfetto 翻译第二篇-trace 101
Perfetto 翻译第三篇-常见问题
快速开始
Perfetto 翻译第四篇-android 平台入门-抓取trace
Perfetto 介绍第五篇-基于SQL的分析和基于trace的度量
Perfetto 翻译第六篇-trace文件格式转换
Perfetto 翻译第七篇-堆内存profiling
Perfetto 翻译第八篇-调用堆栈采样
快速入门
Perfetto 翻译第九篇-Android启动的时候抓取trace
Perfetto 翻译第十篇-分析内存使用
数据源
Perfetto 翻译第十一篇-内存-内存的计数和事件
[Perfetto 翻译第十二篇-内存-暂缺]
Perfetto 翻译第十三篇-内存-java heap dumps
Perfetto 翻译第十四篇-CPU-调度信息
Perfetto 翻译第十五篇-CPU-系统调用
Perfetto 翻译第十六篇-CPU-频率变化

#####################以下分割线#####################
英文原文在这里
在 Android 上,Perfetto 绑定数据源,以从设备电源管理单元(如果支持)显示电源计数器。

电池计数器

此数据源已在 Android 10 (Q) 中引入,要求设备上存在电源管理硬件。这在大多数谷歌Pixel智能手机上都可用。

现代智能手机配备了功率监控IC,能够测量流入和流出电池的电荷。这允许Perfetto观察整个设备(SoC,显示器,通信基带和所有其他硬件单元的结合)从电池中释放的总电荷和瞬时电荷。

简化框图:

battery-counters.png

这些计数器报告:

  • 剩余电池容量(以 % 为单位)。
  • 剩余电池电量(以微安时 (μAh) 为单位)。
  • 瞬时(通常是小时间窗口内的平均值)电流,单位为微安 (μA)

这些计数器的存在和分辨率取决于设备制造商。在平台级别,此数据是通过轮询Android IHealth HAL获得的。有关硬件规格和分辨率的更多详细信息,请参阅测量设备功率。

插入 USB 时测量电荷

电池计数器测量流入和流出电池的电荷。如果设备插入 USB 线,您可能会观察到负瞬时电流和总电量增加,表示电荷流入电池(即充电)而不是流出。

这可能会使实验室环境中的测量出现问题。对此的已知解决方法是:

  • 使用专用的USB集线器,允许从主机不再通过USB端口供电。这允许在测试运行时不再充电。
  • 在Root的手机上,电源管理 IC 驱动程序允许断开 USB 充电,同时保持 USB 数据链路处于活动状态。此功能是 SoC的功能,不是通用的,也不会通过任何 HAL 公开。例如,在 Pixel 2 上,在root 下运行: echo 1 > /sys/devices/soc/800f000.qcom,spmi/spmi-0/spmi0-02/800f000.qcom,spmi:qcom,pmi8998@2:qcom,qpnp-smb2/power_supply/battery/input_suspend。请注意,在大多数设备中,内核 USB 驱动程序会保持唤醒锁以保持 USB 数据链路处于活动状态,因此即使关闭屏幕,设备也永远不会完全挂起。
UI
battery-counters-ui.png
SQL
select ts, t.name, value from counter as c left join counter_track t on c.track_id = t.id
截屏2023-10-13 23.06.32.png
跟踪配置

跟踪原型:BatteryCounters

配置原型: AndroidPowerConfig

示例配置(安卓):

data_sources: {
   config {
       name: "android.power"
       android_power_config {
           battery_poll_ms: 250
           battery_counters: BATTERY_COUNTER_CAPACITY_PERCENT
           battery_counters: BATTERY_COUNTER_CHARGE
           battery_counters: BATTERY_COUNTER_CURRENT
       }
   }
}

示例配置(Chrome OS 或 Linux):

data_sources: {
    config {
        name: "linux.sysfs_power"
    }
}
设备电源轨监视器 (ODPM)

此数据源已在 Android 10 (Q) 中引入,需要设备上的专用硬件。此硬件在大多数生产手机上尚不可用。

最新版本的 Android 在硬件子系统级别引入了对更高级电源监控的支持,称为“设备上电源轨监控器”(ODPM)。这些计数器测量(一组)硬件单元消耗的电量。

与电池计数器不同,它们不受电池充电/放电状态的影响,因为它们测量电池下游的功率。

电源轨计数器的存在和分辨率取决于设备制造商。在系统级别,这些数据是通过轮询{Android IPowerStats HAL](https://cs.android.com/android/platform/superproject/+/main:hardware/interfaces/power/stats/1.0/IPowerStats.hal)获得的。

Google员工:请参阅go/power-rails-internal-doc,了解如何更改Pixel设备上的故障导轨选择的说明。

简化框图:

power-rails.png
跟踪配置

跟踪原型:PowerRails

配置原型:AndroidPowerConfig

示例配置:

data_sources: {
    config {
        name: "android.power"
        android_power_config {
            battery_poll_ms: 250
            collect_power_rails: true
            # Note: it is possible to specify both rails and battery counters
            # in this section.
        }
    }
}
相关数据源

请参阅 CPU -> 频率变化数据源

#####################以上分割线#####################

后记:
1 本次主要使用百度翻译,虽然被骂,但至少翻译这个工具降低了门槛。
2 英文文档中的长难句真的是又长又难,基于百度的翻译,然后自己再调整下,水平实在有限。
3 技术背景知识不够,有些专有名词不知道怎么翻译,也不知道百度翻译的是否准确,功夫在诗外。
4 万事开头难,中间难不难,还不知道。中间的事后面再说,正确一天翻译一篇。
5 虽然可能会有人不屑,但总要有人去做不起眼的小事。
6 google 厉害,这个perfetto 工具也很厉害。君子善假于物也。
7 工具的使用是最简单的入门,背后还有更多的东西值得学习。
8 水平实在有限,闻过则喜,希望有更多的人反馈,期待更好的建议

版权声明:
作者:dingding
链接:https://www.techfm.club/p/77736.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>