• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Sugars_DJ
博客园    首页    新随笔    联系   管理     

Schedutil调频

只写总结了,哈哈偷懒,代码以前分析的没记录:

  1. 在 各个调用cpufreq_update_util()的路径中,会带有不同的flag,并触发cpu freq调节

  2. cpu util作为计算cpu调节target freq的重要依据,首先会从系统中获取;其原始值对应WALT中:prev_runnable_sum,还根据sched_load_boost、schedtune的boost设置情况,相应变化

  3. 如果是rt/dl class的flag,那么直接调节freq为cpu最大freq。反之则需要用cpu_util计算得出。

  4. 首先遍历该cluster内所有cpu的当前cpu_util,并选择cpu当前util和cpu capacity乘积最大的组合,作为计算参数

  5. 其次,再根据是否设置了io wait boost(flag不同),来调节更新util和cpu capacity

  6. 同时,再通过qcom的tunnable feature:sugov_walt_adjust(),调节util和cpu capacity

  7. 通过schedutil的计算公式,计算得出next_f(会读取cache来过滤与上次相同的freq切换请求),并根据cpu支持的freq table,找到 > next_f的最小值,作为真正要设置的cpu feq

  8. 提交频率切换任务给cpu freq driver来完成频率切换

还在成长。。。
posted @ 2022-07-20 14:19  Sugars_DJ  阅读(771)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3