Skip to main content
Qualcomm® Linux exposes sysfs interfaces, kernel parameters, and device tree controls for tuning runtime performance. This page covers CPU frequency scaling, memory subsystem knobs, block I/O scheduling, Qualcomm-specific DCVS and DDR bandwidth controls, and hardware performance profiling.

CPU performance tuning

Select the CPU frequency governor

Qualcomm Linux uses schedutil 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:
Change the governor for all policies:
Table: CPUfreq sysfs frequency controls Paths are relative to /sys/devices/system/cpu/.

Tune schedutil responsiveness

The rate_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:
For Energy Aware Scheduling (EAS), utilization clamping (uclamp), and CPU topology details, see Configure the scheduler.

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:
Move a specific IRQ to a designated CPU:
Replace the following:
  • <irq-number> by the interrupt number from /proc/interrupts.

Run processes on isolated CPUs

Replace the following:
  • <cpu-list> by comma-separated or range CPU list, for example 6,7 or 4-7.
  • <command> by the process name or path to execute.
Change the CPU affinity of a running process:
Replace the following:
  • <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 to madvise mode (application opt-in).
Required Kconfig:

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:
Table: Recommended I/O schedulers by storage type Set the scheduler for a device:
Replace the following:
  • <device> by the block device name, for example sda.

Tune read-ahead

Replace the following:
  • <device> by the block device name, for example sda.

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

The qcom-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:
Increasing 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

The icc-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:
Monitor active ICC bandwidth votes at runtime:
For DVFS governor selection and cache frequency mapping details, see Configure the dynamic voltage and frequency scaling (DVFS) governors.

Hardware performance profiling

ARM64 Qualcomm SoCs expose hardware performance counters through the ARM PMUv3 interface. The perf tool uses these to profile CPU utilization, cache misses, and memory stalls.

Required Kconfig

Collect a system-wide performance snapshot

Profile a specific process

Replace the following:
  • <pid> by the process ID to profile.

Qualcomm L3 PMU events

The Qualcomm L3 PMU driver exposes per-slice L3 cache events with the qcom_l3_cache/ prefix:

Live profiling with perf top