powerprofile 和 systrace 输出不一致
The powerprofile and systrace outputs are not consistent
我正在生成 PowerProflie 文件和 Systrace 文件以获取
Android 应用程序,但我发现两个文件的 cpu 核数不同。
我正在为 Systrace 使用此命令行:
command = "python " + platformToolsFolder + "/systrace/systrace.py --time=" + this.timeCapturing + " freq idle -o " + this.systraceFilename;
对于 PowerProfile:
this.executeCommand("java -jar apktool_2.2.2.jar if framework-res.apk", null);
this.executeCommand("java -jar apktool_2.2.2.jar d framework-res.apk", null);
this.executeCommand("mv " + jarDirectory + "/framework-res/res/xml/power_profile.xml " + outputLocation, null);
这是我得到的 PowerProfile 文件的一部分:
<item name="radio.active">320</item>
<item name="radio.scanning">5.8</item>
<array name="radio.on">
<value>5.8</value>
<value>5.8</value>
</array>
<item name="modem.controller.idle">5.8</item>
<item name="modem.controller.rx">226</item>
<item name="modem.controller.tx">226</item>
<item name="modem.controller.voltage">4.0</item>
<array name="cpu.clusters.cores">
<value>4</value>
</array>
<array name="cpu.speeds.cluster0">
<value>850000</value>
<value>918000</value>
<value>987000</value>
<value>1056000</value>
<value>1125000</value>
<value>1216000</value>
<value>1308000</value>
<value>1400000</value>
<value>1466000</value>
<value>1533000</value>
<value>1633000</value>
<value>1700000</value>
<value>1767000</value>
<value>1834000</value>
<value>1917000</value>
<value>2001000</value>
</array>
<array name="cpu.active.cluster0">
<value>9.3</value>
<value>9.3</value>
<value>10.6</value>
<value>11.6</value>
<value>13.3</value>
<value>15.0</value>
<value>17.2</value>
<value>20.2</value>
<value>22.8</value>
<value>26.3</value>
<value>27.4</value>
<value>29.7</value>
<value>30.2</value>
<value>32.1</value>
<value>33.9</value>
<value>38.5</value>
</array>
<item name="cpu.idle">4.1</item>
<array name="memory.bandwidths">
<value>1.3</value>
</array>
<item name="battery.capacity">3500</item>
<item name="wifi.controller.idle">4.9</item>
<item name="wifi.controller.rx">72.3</item>
<item name="wifi.controller.tx">72.3</item>
<array name="wifi.controller.tx_levels" />
<item name="wifi.controller.voltage">4.0</item>
<array name="wifi.batchedscan">
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
</array>
这是我的 Systrace 文件的一部分:
<idle>-0 (-----) [002] d..1 51825.602557: cpu_idle: state=4294967295 cpu_id=2
<idle>-0 (-----) [002] d..1 51825.602791: cpu_idle: state=1 cpu_id=2
<idle>-0 (-----) [006] d..1 51825.602869: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] dn.1 51825.602907: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.602915: cpu_idle: state=0 cpu_id=6
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.602942: cpu_frequency: state=900000 cpu_id=0
<idle>-0 (-----) [004] dn.1 51825.602989: cpu_idle: state=4294967295 cpu_id=4
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.602994: cpu_frequency: state=900000 cpu_id=1
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.603000: cpu_frequency: state=900000 cpu_id=2
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.603003: cpu_frequency: state=900000 cpu_id=3
<idle>-0 (-----) [005] d..1 51825.603034: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [004] d..1 51825.603100: cpu_idle: state=0 cpu_id=4
<idle>-0 (-----) [004] d..1 51825.607831: cpu_idle: state=4294967295 cpu_id=4
<idle>-0 (-----) [005] dn.1 51825.608429: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] dn.1 51825.608549: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] d..1 51825.608610: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [005] d..1 51825.608615: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [005] d..1 51825.608618: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.608654: cpu_idle: state=0 cpu_id=6
<idle>-0 (-----) [004] d..1 51825.608688: cpu_idle: state=1 cpu_id=4
<idle>-0 (-----) [006] d..1 51825.608974: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] dn.1 51825.609108: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.609129: cpu_idle: state=0 cpu_id=6
<idle>-0 (-----) [005] d..1 51825.609136: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [007] d..1 51825.610061: cpu_idle: state=4294967295 cpu_id=7
正如您在电源配置文件中看到的那样,我有 4 个 cpu 核(cpu.clusters.cores=4),但在 Systrace 文件中我有 8 个 cpu 核(cpu_id=0-7)
Systrace 文件中的大多数 cpu 频率 (cpu_frequency) 在 powerprofile 文件 (cpu.speeds.cluster0) 中不存在,所以我无法获得消耗的能量,
如果您对此有任何解决方案,请告诉我。
就 CPU 核心数量而言,Systrace 可能就在这里。您可以 运行 adb shell ls /sys/devices/system/cpu
查看您的设备上有多少个内核。
power_profile.xml 由 OEM 提供,因此值可能会关闭。 cpu.clusters.cores
显示集群中的 CPU 个核心(现代移动设备有 big/small 个核心)因此对于典型的 8 核设备,它应该如下所示:
<array name="cpu.clusters.cores">
<value>4</value>
<value>4</value>
</array>
您的 power_profile.xml 中似乎只提供了第一个集群的值。
我正在生成 PowerProflie 文件和 Systrace 文件以获取 Android 应用程序,但我发现两个文件的 cpu 核数不同。
我正在为 Systrace 使用此命令行:
command = "python " + platformToolsFolder + "/systrace/systrace.py --time=" + this.timeCapturing + " freq idle -o " + this.systraceFilename;
对于 PowerProfile:
this.executeCommand("java -jar apktool_2.2.2.jar if framework-res.apk", null);
this.executeCommand("java -jar apktool_2.2.2.jar d framework-res.apk", null);
this.executeCommand("mv " + jarDirectory + "/framework-res/res/xml/power_profile.xml " + outputLocation, null);
这是我得到的 PowerProfile 文件的一部分:
<item name="radio.active">320</item>
<item name="radio.scanning">5.8</item>
<array name="radio.on">
<value>5.8</value>
<value>5.8</value>
</array>
<item name="modem.controller.idle">5.8</item>
<item name="modem.controller.rx">226</item>
<item name="modem.controller.tx">226</item>
<item name="modem.controller.voltage">4.0</item>
<array name="cpu.clusters.cores">
<value>4</value>
</array>
<array name="cpu.speeds.cluster0">
<value>850000</value>
<value>918000</value>
<value>987000</value>
<value>1056000</value>
<value>1125000</value>
<value>1216000</value>
<value>1308000</value>
<value>1400000</value>
<value>1466000</value>
<value>1533000</value>
<value>1633000</value>
<value>1700000</value>
<value>1767000</value>
<value>1834000</value>
<value>1917000</value>
<value>2001000</value>
</array>
<array name="cpu.active.cluster0">
<value>9.3</value>
<value>9.3</value>
<value>10.6</value>
<value>11.6</value>
<value>13.3</value>
<value>15.0</value>
<value>17.2</value>
<value>20.2</value>
<value>22.8</value>
<value>26.3</value>
<value>27.4</value>
<value>29.7</value>
<value>30.2</value>
<value>32.1</value>
<value>33.9</value>
<value>38.5</value>
</array>
<item name="cpu.idle">4.1</item>
<array name="memory.bandwidths">
<value>1.3</value>
</array>
<item name="battery.capacity">3500</item>
<item name="wifi.controller.idle">4.9</item>
<item name="wifi.controller.rx">72.3</item>
<item name="wifi.controller.tx">72.3</item>
<array name="wifi.controller.tx_levels" />
<item name="wifi.controller.voltage">4.0</item>
<array name="wifi.batchedscan">
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
<value>64.2</value>
</array>
这是我的 Systrace 文件的一部分:
<idle>-0 (-----) [002] d..1 51825.602557: cpu_idle: state=4294967295 cpu_id=2
<idle>-0 (-----) [002] d..1 51825.602791: cpu_idle: state=1 cpu_id=2
<idle>-0 (-----) [006] d..1 51825.602869: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] dn.1 51825.602907: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.602915: cpu_idle: state=0 cpu_id=6
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.602942: cpu_frequency: state=900000 cpu_id=0
<idle>-0 (-----) [004] dn.1 51825.602989: cpu_idle: state=4294967295 cpu_id=4
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.602994: cpu_frequency: state=900000 cpu_id=1
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.603000: cpu_frequency: state=900000 cpu_id=2
ipi_cpu_dvfs_rt-251 ( 251) [005] .... 51825.603003: cpu_frequency: state=900000 cpu_id=3
<idle>-0 (-----) [005] d..1 51825.603034: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [004] d..1 51825.603100: cpu_idle: state=0 cpu_id=4
<idle>-0 (-----) [004] d..1 51825.607831: cpu_idle: state=4294967295 cpu_id=4
<idle>-0 (-----) [005] dn.1 51825.608429: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] dn.1 51825.608549: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] d..1 51825.608610: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [005] d..1 51825.608615: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [005] d..1 51825.608618: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.608654: cpu_idle: state=0 cpu_id=6
<idle>-0 (-----) [004] d..1 51825.608688: cpu_idle: state=1 cpu_id=4
<idle>-0 (-----) [006] d..1 51825.608974: cpu_idle: state=4294967295 cpu_id=6
<idle>-0 (-----) [005] dn.1 51825.609108: cpu_idle: state=4294967295 cpu_id=5
<idle>-0 (-----) [006] d..1 51825.609129: cpu_idle: state=0 cpu_id=6
<idle>-0 (-----) [005] d..1 51825.609136: cpu_idle: state=0 cpu_id=5
<idle>-0 (-----) [007] d..1 51825.610061: cpu_idle: state=4294967295 cpu_id=7
正如您在电源配置文件中看到的那样,我有 4 个 cpu 核(cpu.clusters.cores=4),但在 Systrace 文件中我有 8 个 cpu 核(cpu_id=0-7) Systrace 文件中的大多数 cpu 频率 (cpu_frequency) 在 powerprofile 文件 (cpu.speeds.cluster0) 中不存在,所以我无法获得消耗的能量, 如果您对此有任何解决方案,请告诉我。
就 CPU 核心数量而言,Systrace 可能就在这里。您可以 运行 adb shell ls /sys/devices/system/cpu
查看您的设备上有多少个内核。
power_profile.xml 由 OEM 提供,因此值可能会关闭。 cpu.clusters.cores
显示集群中的 CPU 个核心(现代移动设备有 big/small 个核心)因此对于典型的 8 核设备,它应该如下所示:
<array name="cpu.clusters.cores">
<value>4</value>
<value>4</value>
</array>
您的 power_profile.xml 中似乎只提供了第一个集群的值。