CPU performance tuning
Select the CPU frequency governor
Qualcomm Linux usesschedutil as the default CPUfreq governor, with one policy per CPU cluster. On QCS6490 there are three clusters: little (cpu0–cpu3, Cortex-A55), big (cpu4–cpu6, Cortex-A78), and prime (cpu7, Cortex-A78). On IQ-9075 there are four clusters.
Read the current governor for all policies:
Paths are relative to
/sys/devices/system/cpu/.
Tune schedutil responsiveness
Therate_limit_us tunable prevents schedutil from changing frequency more often than the specified interval in microseconds. Lower values improve responsiveness at the cost of more frequency transitions:
CPU isolation and IRQ affinity
For latency-sensitive workloads such as real-time audio or deterministic sensor pipelines, isolate CPUs from the general scheduler and redirect interrupts away from them.Isolate CPUs at boot
Add the following parameters to the kernel command line:isolcpus is a static boot-time mechanism. For dynamic CPU isolation without a reboot, use cgroup cpuset.Configure IRQ affinity at runtime
List all IRQs with their current CPU affinity:<irq-number>by the interrupt number from/proc/interrupts.
Run processes on isolated CPUs
<cpu-list>by comma-separated or range CPU list, for example6,7or4-7.<command>by the process name or path to execute.
<pid>by the process ID to modify.
Memory performance tuning
Transparent Huge Pages (THP)
Transparent Huge Pages (THP) reduce TLB pressure for memory-intensive workloads. The default Qualcomm kernel sets THP tomadvise mode (application opt-in).
Virtual memory sysfs knobs
Table: Key /proc/sys/vm tuning parameters
Paths are relative to
/proc/sys/.
ZRAM and CMA
For ZRAM swap configuration and CMA region tuning, see Configure and manage memory.Block I/O tuning
Select the I/O scheduler
Qualcomm platforms typically use UFS or eMMC storage with multi-queue blk-mq. View the current scheduler for all block devices:
Set the scheduler for a device:
<device>by the block device name, for examplesda.
Tune read-ahead
<device>by the block device name, for examplesda.
Qualcomm DCVS and DDR bandwidth
Qualcomm Dynamic Clock and Voltage Scaling (DCVS) manages the frequency of the L3/LLC cache, Last Level Cache Controller (LLCC), and DDR. Two mechanisms drive memory frequency votes: a static OPP table that ties CPU frequency to memory frequencies, and the BWMON governor that votes based on measured bus traffic.Static CPU-to-memory mapping
Theqcom-cpufreq-hw driver reads opp-peak-kBps from each CPU OPP entry in the DTSI. When the CPU runs at a given frequency, the driver votes for the corresponding L3 and DDR bandwidth. Example entry from a QCS6490 DTSI:
opp-peak-kBps values votes for higher memory frequencies at lower CPU frequencies, trading power for lower memory latency. The driver source is drivers/cpufreq/qcom-cpufreq-hw.c.
BWMON governor
Theicc-bwmon driver (drivers/soc/qcom/icc-bwmon.c) samples CPU-to-LLCC and CPU-to-DDR bandwidth counters and casts ICC bandwidth votes accordingly. Tune the sampling period and thresholds in the device tree:
Hardware performance profiling
ARM64 Qualcomm SoCs expose hardware performance counters through the ARM PMUv3 interface. Theperf tool uses these to profile CPU utilization, cache misses, and memory stalls.
Required Kconfig
Collect a system-wide performance snapshot
Profile a specific process
<pid>by the process ID to profile.
Qualcomm L3 PMU events
The Qualcomm L3 PMU driver exposes per-slice L3 cache events with theqcom_l3_cache/ prefix:

