电源数据源

在 Android 上,Perfetto 捆绑数据源以从设备电源管理单元检索电源 Counters(在支持的地方)。

电池 Counter

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

现代智能手机配备有电源监控 IC,能够测量进出电池的充电量。这允许 Perfetto 观察整个设备(SoC、显示器、无线电和所有其他硬件单元的联合)从电池消耗的总和瞬时充电量。

简化的框图:

这些 Counter 报告:

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

在 USB 上插电时测量充电量

电池 Counter 测量进出电池的充电量。如果设备插入 USB 电缆,你可能会观察到正瞬时电流和总充电量的增加,表示充电量流入电池(即为其充电)而不是流出。

这可能会使实验室环境中的测量变得有问题。已知的解决方法是:

UI

SQL

select ts, t.name, value from counter as c left join counter_track t on c.track_id = t.id
ts name value
338297039804951 batt.charge_uah 2085000
338297039804951 batt.capacity_pct 75
338297039804951 batt.current_ua -1469687
338297145212097 batt.charge_uah 2085000
338297145212097 batt.capacity_pct 75
338297145212097 batt.current_ua -1434062

TraceConfig

Trace proto: BatteryCounters

Config proto: AndroidPowerConfig

示例配置(Android):

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 battery_counters: BATTERY_COUNTER_VOLTAGE } } }

示例配置(Chrome OS 或 Linux):

data_sources: { config { name: "linux.sysfs_power" } }

设备内电源轨监控器(ODPM)

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

Android 的最新版本引入了对硬件子系统级别更高级电源监控的支持,称为"设备内电源轨监控器"(ODPM)。这些 Counter 测量(硬件单元组的)功耗。

与电池 Counter 不同,它们不受电池充电/放电状态的影响,因为它们测量电池下游的电源。

电源轨 Counters 的存在和分辨率取决于设备制造商。在平台级别,此数据是通过轮询 Android IPowerStats HAL 获得的。

Google 员工:有关如何更改 Pixel 设备上的默认轨选择的说明,请参见 go/power-rails-internal-doc

简化的框图:

TraceConfig

Trace proto: PowerRails

Config proto: AndroidPowerConfig

示例配置:

data_sources: { config { name: "android.power" android_power_config { battery_poll_ms: 250 collect_power_rails: true # 注意:可以在此部分中同时指定轨和电池 Counter。 } } }

相关数据源

另请参见 CPU -> 频率缩放 数据源。