Skip to main content
Qualcomm® Linux 使用动态电压和频率调节(DVFS)来平衡功耗与性能。CPU 频率调节器(governor)控制当前的 CPU OPP;BWMON 调节器则根据测得的总线流量管理 LLCC 和 DDR 频率。

选择 CPU DVFS 调节器

您可以在更改 CPUfreq 调节器(powersave/performance/schedutil)时选择一个调节器,将系统调优为侧重功耗或性能。默认情况下,Qualcomm® Linux 内核上的 CPU 频率调节器设置为 performance。 表:CPU DVFS 变量 有关 CPUfreq 的更多信息,请参阅 CPU frequency and voltage scaling code in the Linux(TM) kernel。

配置缓存和内存 DVFS 调节器

静态映射 DVFS 调节器将 CPU 工作频率与以下部分对齐:
  • 三级缓存(L3)
  • 末级缓存控制器(LLCC)
  • DDR RAM
如果 CPU 频率处于最高级别(无论是通过将 CPU 频率调节器设置为 performance,还是由于系统负载),那么 L3、LLCC 和 DDR 也会以其最高频率运行。 该调节器的驱动位于 drivers/cpufreq/qcom-cpufreq-hw.c 文件中,静态映射位于 arch/arm64/boot/dts/qcom/sc7280.dtsi 文件中。
对于 Qualcomm SoC,请查看平台特定的 DTSI 文件以获取此信息。
另一个带宽监视器(BWMON)调节器用于根据测得的 CPU 到 LLCC 及 CPU 到 DDR 之间的流量,为 LLCC 和 DDR 频率投票。该调节器的驱动位于 drivers/soc/qcom/icc-bwmon.c 文件中。 CPU 频率与 L3/DDR 频率之间的映射会根据功耗或性能需求进行调整。 在 DTSI 中,每个 CPUx 节点都有一个 operating-points-v2 = <&cpux_opp_table> 条目。cpux_opp_table 保存了 CPU、L3 和 DDR 频率之间的静态映射。 例如:
当 CPU 0 以 300 MHz 运行时,它为 L3 投票 9600000 Hz,换算为 300,000 Hz(9600000/w)的 L3 频率。如果为 DDR 投票 800,000 Hz,则得到 200,000 Hz(800000 / w)的 DDR 频率。 在该等式中,‘w’ 表示单个周期内可写入的字节数:
  • 对于 DDR,‘w’ 为 4(每个通道每周期执行两次事务,每次事务 2 字节)。
  • 对于 L3,‘w’ 为 32(每周期一次事务,每次事务 32 字节)。
对于 DDR,这些值按通道设置,该映射将 CPU 频率与内存控制器(MC)通道带宽关联起来。调整此映射表可能会影响功耗和性能特性。
有关工作性能点(OPP)框架和语法的更多信息,请参阅 Generic OPP (Operating Performance Points) Bindings。\