CPU 性能调优
选择 CPU 频率调速器
Qualcomm Linux 使用schedutil 作为默认的 CPUfreq 调速器,每个 CPU 簇一个策略。QCS6490 有三个簇:小核(cpu0–cpu3,Cortex-A55)、大核(cpu4–cpu6,Cortex-A78)和超大核(cpu7,Cortex-A78)。IQ-9075 有四个簇。
读取所有策略的当前调速器:
路径相对于
/sys/devices/system/cpu/。
调优 schedutil 响应性
rate_limit_us 可调参数防止 schedutil 以短于指定间隔(微秒)的频率更改频率。较低的值以更多的频率切换为代价提高响应性:
CPU 隔离与 IRQ 亲和性
对于实时音频或确定性传感器管线等延迟敏感的工作负载,可以将 CPU 从通用调度器中隔离出来,并将中断重定向到其他 CPU。在启动时隔离 CPU
在内核命令行中添加以下参数:isolcpus 是静态的启动时机制。要在不重启的情况下动态隔离 CPU,请使用 cgroup cpuset。在运行时配置 IRQ 亲和性
列出所有 IRQ 及其当前的 CPU 亲和性:- 将
<irq-number>替换为/proc/interrupts中的中断编号。
在隔离的 CPU 上运行进程
- 将
<cpu-list>替换为逗号分隔或范围形式的 CPU 列表,例如6,7或4-7。 - 将
<command>替换为要执行的进程名称或路径。
- 将
<pid>替换为要修改的进程 ID。
内存性能调优
透明大页(THP)
透明大页(THP)可为内存密集型工作负载减少 TLB 压力。默认的 Qualcomm 内核将 THP 设置为madvise 模式(由应用程序选择启用)。
虚拟内存 sysfs 调节项
表:关键的 /proc/sys/vm 调优参数
路径相对于
/proc/sys/。
ZRAM 与 CMA
有关 ZRAM 交换配置和 CMA 区域调优,请参阅配置与管理内存。块 I/O 调优
选择 I/O 调度器
Qualcomm 平台通常使用带多队列 blk-mq 的 UFS 或 eMMC 存储。查看所有块设备的当前调度器:
为设备设置调度器:
- 将
<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 带宽投票。在设备树中调优采样周期和阈值:
硬件性能分析
ARM64 Qualcomm SoC 通过 ARM PMUv3 接口暴露硬件性能计数器。perf 工具利用这些计数器分析 CPU 利用率、缓存未命中和内存停顿。
所需的 Kconfig
采集系统级性能快照
分析特定进程
- 将
<pid>替换为要分析的进程 ID。
Qualcomm L3 PMU 事件
Qualcomm L3 PMU 驱动以qcom_l3_cache/ 前缀暴露按切片(per-slice)的 L3 缓存事件:

