Openharmony5.0性能分析之统一调频失效
一、关键字: CPU;资源调度;统一调频;卡顿; socper 二、问题描述 设备型号:黄鹂 系统版本:OpenHarmony 5.0 代码版本:OpenHarmony-5.0 问题现象:应用冷启动,资源调度统一调频失效,cpu大中小核没有持续锁
·
一、关键字:
CPU;资源调度;统一调频;卡顿; socperf
二、问题描述
设备型号:黄鹂
系统版本:OpenHarmony 5.0
代码版本:OpenHarmony-5.0
问题现象:应用冷启动,资源调度统一调频失效,cpu大中小核没有持续锁定高频点运行。
三、原因分析
3.1 正常机制
应用冷启动阶段,cpu大中小核持续锁定高频点运行。
3.2 异常机制
应用冷启动,资源调度统一调频失效,cpu大中小核没有持续锁定高频点运行。
3.2.1分析trace,发现资源调度子系统有下发应用冷启动场景(cmdID:10000)限频,统一调频插件有执行PerfRequest。
<cmd id="10000" name="app_start">
<Action>
<duration>1000</duration>
<lit_cpu0_min_freq>2002000</lit_cpu0_min_freq>
<lit_cpu4_min_freq>2210000</lit_cpu4_min_freq>
<lit_cpu7_min_freq>2548000</lit_cpu7_min_freq>
</Action>
<Action>
<duration>1500</duration>
<gpu_min_freq>384000000</gpu_min_freq>
</Action>
</cmd>
3.2.2 通过log分析代码,发现在写调频节点时,定制函数判断拦截提前,导致通用写节点方法没有执行ReportToRssExe。
void SocPerfThreadWrap::SendResStatusToPerfSo()
{
SOC_PERF_LOGI("lly SendResStatusToPerfSo");
if (!socPerfConfig_.reportFunc_) {
return;
}
std::vector<int32_t> qosId;
std::vector<int64_t> value;
std::vector<int64_t> endTime;
std::vector<int32_t> qosIdToRssEx;
std::vector<int64_t> valueToRssEx;
std::vector<int64_t> endTimeToRssEx;
for (auto iter = resStatusInfo_.begin(); iter != resStatusInfo_.end(); ++iter) {
int32_t resId = iter->first;
std::shared_ptr<ResStatus> resStatus = iter->second;
if (socPerfConfig_.resourceNodeInfo_.find(resId) != socPerfConfig_.resourceNodeInfo_.end() &&
(resStatus->previousValue != resStatus->currentValue ||
resStatus->previousEndTime != resStatus->currentEndTime)) {
SOC_PERF_LOGI("lly qosId:%{public}d value:%{public}ld endTime:%{public}ld", resId, resStatus->currentValue, resStatus->currentEndTime);
if (socPerfConfig_.resourceNodeInfo_[resId]->persistMode == REPORT_TO_PERFSO)
...
}
}
SOC_PERF_LOGI("lly ReportToPerfSo");
ReportToPerfSo(qosId, value, endTime);
SOC_PERF_LOGI("ReportToRssExe ");
ReportToRssExe(qosIdToRssEx, valueToRssEx, endTimeToRssEx);
}
四、方案优化
把定制socPerfConfig_.reportFunc_函数判断,移到定制SO执行函数前面,保证通用方案可以正常执行。
https://gitee.com/openharmony/resourceschedule_soc_perf/pulls/103
修改后应用冷启动统一调频可以正常调频
更多推荐
已为社区贡献15条内容
所有评论(0)