请问如何测量QCS8550主板的功耗信息,想要了解一下目前是否提供相应的接口/工具/驱动可以获取CPU功耗信息?

weixin_32300281 2025-02-20 13:55:09

请问如何测量QCS8550主板的功耗信息,想要了解一下目前是否提供相应的接口/工具/驱动可以获取CPU功耗信息?

...全文
555 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

一、设备启动及热管理引擎停止
等待设备并获取 root 权限
bash
adb wait-for-device root

重新挂载设备文件系统
bash
adb wait-for-device remount

停止热管理引擎
bash
adb shell stop thermal-engine

二、设置 CPU 频率和核心控制
以将 CPU7 设置为最大频率为例,同时关闭其他核心。需要注意的是,如果要热插拔 CPU0 - 5,应先关闭 CPU1 - 5,再关闭 CPU0。
关闭 CPU1 - 6
bash
adb shell "echo 0 > /sys/devices/system/cpu/cpu1/online"
adb shell "echo 0 > /sys/devices/system/cpu/cpu2/online"
adb shell "echo 0 > /sys/devices/system/cpu/cpu3/online"
adb shell "echo 0 > /sys/devices/system/cpu/cpu4/online"
adb shell "echo 0 > /sys/devices/system/cpu/cpu5/online"
adb shell "echo 0 > /sys/devices/system/cpu/cpu6/online"

关闭 CPU0
bash
adb shell "echo 0 > /sys/devices/system/cpu/cpu0/online"

设置 CPU7 为最大频率
bash
adb shell "echo Fmax > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq"
adb shell "echo Fmax > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq"

三、将 DDR/LLCC 设置为最大频率
挂载 debugfs 文件系统
bash
adb shell mount -t debugfs none /sys/kernel/debug

将所有 CPU 核心的频率调节策略设置为性能模式
bash
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor"
adb shell "echo 'performance' > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor"

设置 DDR 为最大频率
bash
adb shell "echo “Fmax” > /sys/devices/system/cpu/bus_dcvs/DDR/soc:qcom,memlat:ddr:gold/min_freq"
adb shell "echo “Fmax” > /sys/devices/system/cpu/bus_dcvs/DDR/soc:qcom,memlat:ddr:prime/min_freq"
adb shell "cat /sys/devices/system/cpu/bus_dcvs/DDR/hw_max_freq > /sys/devices/system/cpu/bus_dcvs/DDR/boost_freq"
adb shell "cat /sys/devices/system/cpu/bus_dcvs/DDR/cur_freq"
adb shell "cat /d/clk/measure_only_mccc_clk/clk_measure"
adb shell "cat /sys/devices/system/cpu/bus_dcvs/DDRQOS/hw_max_freq > /sys/devices/system/cpu/bus_dcvs/DDRQOS/boost_freq"
adb shell "cat /sys/devices/system/cpu/bus_dcvs/DDRQOS/cur_freq"

设置 LLCC 为最大频率
bash
adb shell "echo “Fmax” > /sys/devices/system/cpu/bus_dcvs/LLCC/soc:qcom,memlat:llcc:gold/min_freq"
adb shell "echo “Fmax” > /sys/devices/system/cpu/bus_dcvs/LLCC/soc:qcom,memlat:llcc:prime/min_freq"

四、记录初始 CPU 传感器温度
在运行 GBV6 之前,记录初始的 CPU 传感器温度,作为后续对比的标准值。
五、运行 GBV6 测试
使用以下命令在指定核心上运行 GBV6 单核心测试:
bash
Taskset ./geekbench_aarch64 –single-core
六、断开 USB 连接并进行功率测量
断开 USB 电缆,关闭屏幕,开始进行功率测量,直到 GB 测试完成。
七、重新连接 USB 并记录 CPU 温度
连接 USB 电缆,记录 CPU 传感器温度。确保 CPU 结温(Tj)不会触发任何热缓解机制,否则会影响性能得分。可以使用以下命令检查温度:
bash
adb shell cat /sys/class/thermal/thermal_zone*/temp
八、获取功率值和 CPU 温度并计算功率
功率计算方法
每 16 个子测试对应一次功率报告。
采用每个子测试时间段内的加权平均功率(并非 16 个子测试的简单平均值)。
仅计算 16 个活跃时间段内的平均功率,不包括空闲时间。
计算公式为:平均功率 =(16 个子测试的能量总和)/(16 个子测试的活跃时间总和)。
示例:
第 1 次测试:平均功率(APC) = 100mW,持续时间 30 秒;
第 2 次测试:平均功率(APC) = 200mW,持续时间 70 秒;
……
第 16 次测试。
平均功率 = (100 * 30 + 200 * 70 + 第 3 次测试能量 + … + 第 16 次测试能量) / (30 秒 + 70 秒 + 第 3 次测试时间 + … + 第 16 次测试时间) = XXXXmW
CPU 核心功率计算
CPU 核心功率 = APC + L1 + L2
CPU 功率 = APCx_CX + APCx_MX + MxA(不考虑 PMIC 损耗)

这是测试一个核心的方法, 重复以上的操作可以测试不同的核心的方法.

3,012

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧