了解 CPU 拓扑和 EAS
Qualcomm SoC 具有异构 CPU 拓扑,以 EAS 中使用的 CPU 算力(capacity)指标加以区分。 EAS 使用_算力_的概念来区分具有不同计算能力的 CPU。CPU 的算力表示其以最高频率运行时相对于系统中最强 CPU 所能完成的工作量。算力值以 1024 为范围进行归一化(最强大的 CPU/集群配置为 1024)。 EAS 根据 CPU 节点中指定的 Dhrystone 每秒百万指令数(DMIPS)值以及集群支持的最大频率来构建集群的算力。 以下是 CPU 拓扑和算力的sysfs 节点:
表:CPU 拓扑和算力
有关调度器如何使用 CPU 算力的更多信息,请参阅 Capacity Aware Scheduling。
更改默认 CPU 频率调节器
CPU 频率调节器可以在运行时更改,也可以在构建编译期间静态设置。- Kconfig 配置:要设置 CPU 频率调节器,请在内核 defconfig 文件中启用相应的驱动。
要将
PERFORMANCE调节器设置为默认的 CPU 频率调节器,请在 defconfig 文件中设置CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y。 - 内核命令行:要覆盖内核配置选项,请在 SoC 特定机器包含文件中的 kas 基础配置文件
ci/base.yml的KERNEL_CMDLINE_EXTRA中,向内核命令行添加cpufreq.default_governor=performance参数。 例如,在meta-qcom/conf/machine/include/qcom-<SoC>.inc文件中设置合适的 CPU 频率调节器。
配置 SchedUtil 调节器
SchedUtil CPU 频率调节器是 Qualcomm Linux 内核中的默认调节器。SchedUtil 根据 CPU 利用率预测最优工作点(OPP),保持频率请求与能耗预测之间的一致性。 SchedUtil CPU 频率调节器与 EAS 绑定,它尝试预测所有 CPU 接下来将运行在哪个 OPP,以估算其能耗。 有关更多信息,请参阅 SchedUtil。配置利用率钳制(UCLAMP)
利用率钳制是一项调度器特性,允许用户空间管理任务的性能需求。 要执行钳制,请配置以下参数:UCLAMP_MIN:如果设置为任何> 0的值,则任务需求始终大于或等于该值。如果实际任务需求大于该值,则使用实际需求信号;但如果实际任务需求低于该值,则将UCLAMP_MIN报告为任务需求。UCLAMP_MAX:如果设置为任何> 0的值,则任务需求始终小于或等于该值。如果实际任务需求小于该值,则使用实际需求信号;但如果实际任务需求大于该值,则将UCLAMP_MAX报告为任务需求。
UCLAMP_MAX > UCLAMP_MINUCLAMP_MAX),以促使调度器将任务放置在小核集群上。同样,将重要/前台/活跃任务钳制到较高值(较高的 UCLAMP_MIN),以促使调度器将任务放置在大核集群上。
UCLAMP 还允许调度器控制频率引导。
为满足任务的快速升频需求,请将任务钳制到较高的需求(UCLAMP_MIN)值。较高的钳制有助于提升集群频率,以满足任务的性能需求。
UCLAMP 操作允许从用户空间对任务/任务组进行性能管理。
UCLAMP 允许放置任务或任务组,并允许提供性能提示或约束。该机制用于影响调度器的放置决策或影响集群的频率引导。
有关更多信息,请参阅 UCLAMP;有关接口和配置,请参阅 Utilization Clamping。
