Skip to main content
Qualcomm® Linux 提供了用于运行时性能调优的 sysfs 接口、内核参数和设备树控制项。本页介绍 CPU 频率调节、内存子系统调优项、块 I/O 调度、Qualcomm 专有的 DCVS 与 DDR 带宽控制,以及硬件性能剖析。

CPU 性能调优

选择 CPU 频率调节器

Qualcomm Linux 使用 schedutil 作为默认的 CPUFreq 调节器,并为每个 CPU 簇分配一个策略(policy)。簇的数量、CPU 与簇的映射关系以及核心类型均由目标平台决定。 表:各目标平台的 CPU 簇映射
每个目标平台都在其 SoC DTSI 的 CPU 节点中通过 qcom,freq-domain 和 capacity-dmips-mhz 属性定义此映射。有关各目标平台的 DTSI 文件路径,请参阅定位并修改设备树。 读取所有策略的当前调节器:
更改所有策略的调节器:
表:CPUfreq sysfs 频率控制项 路径相对于 /sys/devices/system/cpu/。

调整 schedutil 响应性

rate_limit_us 可调参数可防止 schedutil 以短于指定微秒间隔的频率更改频率。较低的值以更多的频率切换为代价提升响应性:
有关能量感知调度(EAS)、利用率钳制(uclamp)和 CPU 拓扑的详细信息,请参阅 配置调度器。

CPU 隔离与 IRQ 亲和性

对于实时音频或确定性传感器流水线等对延迟敏感的工作负载,请将 CPU 从通用调度器中隔离出来,并将中断重定向到其他 CPU。

在启动时隔离 CPU

在内核命令行中添加以下参数:
isolcpus 是静态的启动时机制。如需在不重启的情况下动态隔离 CPU,请使用 cgroup cpuset。

在运行时配置 IRQ 亲和性

列出所有 IRQ 及其当前的 CPU 亲和性:
将特定 IRQ 移到指定 CPU:
替换以下内容:
  • 将 <irq-number> 替换为 /proc/interrupts 中的中断号。

在隔离的 CPU 上运行进程

替换以下内容:
  • 将 <cpu-list> 替换为以逗号分隔或范围表示的 CPU 列表,例如 6,7 或 4-7。
  • 将 <command> 替换为要执行的进程名称或路径。
更改正在运行进程的 CPU 亲和性:
替换以下内容:
  • 将 <pid> 替换为要修改的进程 ID。

内存性能调优

透明大页(THP)

透明大页(THP)可为内存密集型工作负载降低 TLB 压力。默认的 Qualcomm 内核将 THP 设置为 madvise 模式(应用程序自行选择启用)。
所需 Kconfig:

虚拟内存 sysfs 调优项

表:/proc/sys/vm 关键调优参数 路径相对于 /proc/sys/。

ZRAM 与 CMA

有关 ZRAM 交换配置和 CMA 区域调优,请参阅 配置和管理内存。

块 I/O 调优

选择 I/O 调度器

Qualcomm 平台通常使用带多队列 blk-mq 的 UFS 或 eMMC 存储。查看所有块设备的当前调度器:
表:按存储类型推荐的 I/O 调度器 为某个设备设置调度器:
替换以下内容:
  • 将 <device> 替换为块设备名称,例如 sda。

调整预读(read-ahead)

替换以下内容:
  • 将 <device> 替换为块设备名称,例如 sda。

Qualcomm DCVS 与 DDR 带宽

Qualcomm 动态时钟电压调节(DCVS)管理 L3/LLC 缓存、末级缓存控制器(LLCC)和 DDR 的频率。有两种机制驱动内存频率投票:将 CPU 频率与内存频率绑定的静态 OPP 表,以及基于实测总线流量进行投票的 BWMON 调节器。

静态 CPU 到内存映射

qcom-cpufreq-hw 驱动从 DTSI 中每个 CPU OPP 条目读取 opp-peak-kBps。当 CPU 以某一频率运行时,驱动会为对应的 L3 和 DDR 带宽投票。以下是 QCS6490 DTSI 中的示例条目:
增大 opp-peak-kBps 值可在较低 CPU 频率下投票选择更高的内存频率,以功耗换取更低的内存延迟。驱动源码位于 drivers/cpufreq/qcom-cpufreq-hw.c。

BWMON 调节器

icc-bwmon 驱动(drivers/soc/qcom/icc-bwmon.c)采样 CPU 到 LLCC 和 CPU 到 DDR 的带宽计数器,并据此发出 ICC 带宽投票。可在设备树中调整采样周期和阈值:
在运行时监控当前的 ICC 带宽投票:
有关 DVFS 调节器选择和缓存频率映射的详细信息,请参阅 配置动态电压频率调节(DVFS)调节器。

硬件性能剖析

ARM64 Qualcomm SoC 通过 ARM PMUv3 接口暴露硬件性能计数器。perf 工具利用这些计数器对 CPU 利用率、缓存未命中和内存停顿进行剖析。

所需 Kconfig

采集系统级性能快照

剖析特定进程

替换以下内容:
  • 将 <pid> 替换为要剖析的进程 ID。

Qualcomm L3 PMU 事件

Qualcomm L3 PMU 驱动以 qcom_l3_cache/ 前缀暴露按切片(slice)划分的 L3 缓存事件:

使用 perf top 进行实时剖析