# Customize for performance tuning

Customization is a process that includes fine-tuning various aspects of the system, which can significantly affect the overall performance and power of the system.

The CPU scheduler, CPU frequency governor, dynamic voltage and frequency scaling (DVFS) governor, Userspace Resource Manager (URM), and memory can be fine-tuned. It's recommended to undertake any tuning only after gaining a thorough understanding through extensive performance and power analysis.

Caution

Any customization can impact the power and the performance of the device.
Therefore, it's crucial to verify the impact across all the relevant
use cases before performing any customization.

## Customize CPU scheduler

You can customize features of the CPU scheduler, such as utilization clamping (UCLAMP or util clamp) schedulers.

For more information, see [CPU scheduler](https://docs.qualcomm.com/doc/80-80021-10/topic/2-performance-features.html#cpu-scheduler).

### UCLAMP

UCLAMP is a scheduler feature that allows user space to manage the task
performance requirements.

It's a hinting mechanism that helps the scheduler understand the
performance demands and limitations of tasks, as a result, it assists
the scheduler in making informed decisions.

When the `schedutil` CPU frequency governor is used, UCLAMP determines
the CPU frequency selection. The UCLAMP value ranges from 0 to 1024.

The following parameters can be customized for UCLAMP:

- `sched_util_clamp_min`: This parameter sets the minimum acceptable
performance level for individual tasks and task groups, ensuring that
tasks receive sufficient resources to operate, even
during periods of low demand.

    Any requested `uclamp.min` value for a task can't exceed
`sched_util_clamp_min`.

    - For the scheduler, it acts as a lower bound on the per entity load tracking (PELT) signal, which tracks task usage.
    - For the CPU frequency, it instructs the governor to select a
frequency that can meet the performance requirements of the task,
thus ensuring responsiveness and efficiency. The Qualcomm-tuned
value is 1024. To set this parameter, run the following command on
the device:

echo 1024 > /proc/sys/kernel/sched_util_clamp_min
        Copy to clipboard
- `sched_util_clamp_max`: This parameter sets the maximum acceptable
performance level for individual tasks and task groups. It ensures
that tasks don't consume excessive resources, preventing resource
contention and system instability.

    Any requested `uclamp.max` value for a task can't exceed
`sched_util_clamp_max`.

    - For the scheduler, it acts as a ceiling on the PELT signal, which
tracks the task usage.
    - For the CPU frequency, if the task demands exceed the available
frequency, the governor may adjust the frequency to prevent
excessive power consumption. The Qualcomm-tuned value is 1024. To
set this parameter, run the following command on the device:

echo 1024 > /proc/sys/kernel/sched_util_clamp_max
        Copy to clipboard
- `sched_util_clamp_min_rt_default`: By default, the real-time (RT) tasks always
run at the highest frequency and highest CPU capacity. This parameter
allows you to change the default behavior of an RT task when UCLAMP
is being used.

    It allows tuning the best value for an RT task, offering good
performance without pushing it to the maximum performance point. This
behavior addresses the system requirement without burning power and
running at the maximum performance point all the time. The
Qualcomm-tuned value is 128.

    To set this parameter, run the following command on the device:

echo 128 > /proc/sys/kernel/sched_util_clamp_min_rt_default
        Copy to clipboard

For more information, see [Utilization Clamping](https://docs.kernel.org/scheduler/sched-util-clamp.html).

## Customize CPU frequency governor

You can configure a CPU frequency governor using the
`scaling_governor` node to enhance CPU performance.

Note

The commands containing `policy7` aren't supported on QCS5430 FP1.

To customize a frequency governor for Qualcomm Dragonwing^™^ IQ-9075, Qualcomm Dragonwing^™^ IQ-8275, and Qualcomm Dragonwing^™^ IQ-615, see the corresponding addendum. The following guides are available to licensed users with authorized access:

- [Qualcomm Linux Performance Guide - Addendum for Qualcomm Dragonwing IQ-9075](https://docs.qualcomm.com/bundle/resource/topics/80-80021-10A/overview.html)
- [Qualcomm Linux Performance Guide - Addendum for Qualcomm Dragonwing IQ-8275](https://docs.qualcomm.com/bundle/resource/topics/80-80021-10B/overview.html)
- [Qualcomm Linux Performance Guide - Addendum for Qualcomm Dragonwing IQ-615](https://docs.qualcomm.com/bundle/resource/topics/80-80021-10C/overview.html)

Note

The commands specified in the following table should be run on the device.

Table : Commands to customize the CPU frequency governor

| Command | Purpose |
| --- | --- |
| echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor<br>    Copy to clipboard<br><br><br>echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor<br>    Copy to clipboard<br><br><br>echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor<br>    Copy to clipboard | Sets the CPU governor to enhance the system performance. |
| cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor<br>    Copy to clipboard<br><br><br>cat /sys/devices/system/cpu/cpufreq/policy4/scaling_governor<br>    Copy to clipboard<br><br><br>cat /sys/devices/system/cpu/cpufreq/policy7/scaling_governor<br>    Copy to clipboard | Verifies the CPU frequency governor. |
| echo schedutil > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor<br>    Copy to clipboard<br><br><br>echo schedutil > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor<br>    Copy to clipboard<br><br><br>echo schedutil > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor<br>    Copy to clipboard | Sets the CPU frequency governor to `schedutil`. |
| echo 1000 > /sys/devices/system/cpu/cpufreq/policyX/schedutil/rate_limit_us<br>    Copy to clipboard | Customizes `rate_limit_us`.<br><br><br>The value of `X` in `policyX` corresponds to clusters 0,<br>4, and 7.<br><br><br>This is a `schedutil` governor parameter. It contains the<br>value in microseconds. The governor waits for<br>`rate_limit_us` time to re-evaluate the load. The Qualcomm-tuned value is 1000. |

## Customize DVFS governor

You can customize the static map DVFS governor and bandwidth monitoring (BWMON) governor using DTSI files according to both the power and the performance requirements of your device.

### Customize static map DVFS governor

You can customize the mapping between the CPU frequency and the L3/DDR
frequency according to both, the power and the performance requirements from the
`arch/arm64/boot/dts/qcom/<target>.dtsi` file in the source code.

In the DTSI file, for each CPU node, there is an entry with
`operating-points-v2 = <&cpux_opp_table>`, where `cpux_opp_table`
holds the static mapping between the CPU frequency, and the L3 and the
DDR frequencies.

For example, the following entry indicates that the CPU 0 frequency
operates at 300 MHz:

cpu0_opp_300mhz: opp-300000000 {
                    opp-hz = /bits/ 64 <300000000>;
                    pp-peak-kBps = <800000 9600000>;
                    };
    Copy to clipboard

When CPU 0 operates at 300 MHz, it performs the following actions:

- Votes L3 to 9600000, which is 9600000/w (where w = 32) = 300,000,
which corresponds to 300 MHz
- Votes DDR to 800000, which is 800000/w (where w = 4) = 200,00, which
corresponds to 200 MHz

In this example, 'w' represents the number of bytes you can write in a single cycle.

- For L3, this value is 32, which means one transaction per cycle at
32 bytes per transaction.
- For dual-channel DDR, this value is 4. Each channel can perform two
transactions per cycle (because it's the DDR memory), and each
transaction is of 2 bytes.

For more information, see [Generic OPP (Operating Performance Points)
Bindings](https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt).

The tables specify the per channel DDR values. This implies that the mapping is between the CPU frequency and the bandwidth of each memory controller channel.

Caution

If you change the DTSI files, it impacts the power and the performance of the device. Ensure that you verify the impact across all the relevant use cases before changing any nodes.

### Customize BWMON governor

You can customize `bwmon_opp_table` for the last level cache controller (LLCC) and DDR voting according to both the power and the performance requirements from the
`arch/arm64/boot/dts/qcom/<target>.dtsi` file in the source code.

The following code samples contain the DDR frequency level and the LLCC frequency level,
and each level translates to LLCC and DDR voting based on the traffic.

The following DTSI entry votes to DDR based on the CPU traffic between
LLCC to DDR, which corresponds to 200 MHz. In this example, 800000/w
(where w = 4) equals 200000:

llcc_bwmon_opp_table: opp-table {
            compatible = "operating-points-v2";
            opp-0 {
                     opp-peak-kBps = <800000>;
             };
    Copy to clipboard

The following DTSI entry votes to LLCC based on the CPU traffic between
CPU and LLCC, which corresponds to 150 MHz. In this example, 2400000/w
(where w = 16) equals 150000:

cpu_bwmon_opp_table: opp-table {
           compatible = "operating-points-v2";
           opp-0 {
                    opp-peak-kBps = <2400000>;
             };
    Copy to clipboard

In these examples, 'w' represents the number of bytes that you can write
in a single cycle.

- For DDR, this value is 4. Each channel can perform two transactions
per cycle (DDR memory), and each transaction is of 2 bytes.
- For LLCC, this value is 16.

## Customize URM using extensions

URM extensions host Qualcomm chipset‑specific configurations and use case–specific customizations. These extensions enable additional configurations and extension modules to be integrated at runtime, allowing flexible tuning and policy customization without modifying the core URM implementation.

### Customize per‑application tuning

Per‑application tuning for Qualcomm‑specific chipsets is defined in `userspace-resource-manager-extensions/Configs/PerApp.yaml`.

The following sample code shows the usage of per-application tuning for the GST and cyclic test applications:

PerAppConfigs:
    - App: "gst-launch-"
       Threads:
          - {"cam-server": "FOCUSED_CGROUP_IDENTIFIER"}
          - {"gst-launch-": "FOCUSED_CGROUP_IDENTIFIER"}
    
    - App: "cyclictest"
       Threads:
          - {"cyclictest": "FOCUSED_CGROUP_IDENTIFIER"}
       Configurations: ["0x00800001"]
    Copy to clipboard

Chipset‑specific tuning configurations are defined in `userspace-resource-manager-extensions/Configs/<target-specific>`.

### Customize signal settings

Signal configurations for Qualcomm‑specific chipsets are defined in the `userspace-resource-manager-extensions/Configs/SignalsConfig.yaml` configuration file.

The following sample code shows the usage of signal settings for the application launches:

SignalConfigs:
    - SigId: "0x0001"
       Category: "0x01"
       Name: URM_APP_OPEN
       Enable: true
       Permissions: ["system", "third_party"]
       Resources:
          - {ResCode: "RES_CGRP_RUN_CORES", Values: [2, 0,1,2,3]}
          - {ResCode: "RES_CGRP_CPU_LATENCY", Values: [4, -20]}
    
    - SigId: "0x0001"
       Category: "0x80"
       Name: RT_TRIGGER
       Enable: true
       Permissions: ["system", "third_party"]
       Resources:
          - {ResCode: "0x00800000", Values: [0]}
          - {ResCode: "0x00800001", Values: [0]}
          - {ResCode: "0x00800002", Values: [0]}
          - {ResCode: "0x00030003", Values: [-1]}
          - {ResCode: "0x00040003", ResInfo: "0x00000000", Values: [1]}
          - {ResCode: "0x00040004", ResInfo: "0x00000100", Values: [1]}
          - {ResCode: "0x00040005", ResInfo: "0x00000200", Values: [1]}
    Copy to clipboard

Chipset‑specific `SignalsConfig.yaml` files are provided under `userspace-resource-manager-extensions/Configs/<target-specific>`, which override the common signal tuning.

### Customize resource configuration

Resource configurations for common Qualcomm‑specific chipsets are defined in `userspace-resource-manager-extensions/Configs/ResourcesConfig.yaml`.

The following sample code shows the customization of the resources configuration:

ResourceConfigs:
    - ResType: "0x05"
       ResID: "0x0003"
       Name: "RES_KGSL_DEF_PWRLEVEL"
       Path: "/sys/class/kgsl/kgsl-3d0/default_pwrlevel"
       Supported: true
       LowThreshold: 0
       Permissions: "third_party"
       Modes: ["display_on", "doze"]
       Policy: "lower_is_better"
       ApplyType: "global"
    
    - ResType: "0x05"
       ResID: "0x0004"
       Name: "RES_KGSL_DEVFREQ_MAX"
       Path: "/sys/class/kgsl/kgsl-3d0/devfreq/max_freq"
       Supported: true
       Permissions: "third_party"
       Modes: ["display_on", "doze"]
       Policy: "lower_is_better"
       ApplyType: "global"
    Copy to clipboard

The chipset‑specific `ResourcesConfig.yaml` files are provided under `userspace-resource-manager-extensions/Configs/<target-specific>`, which override the common resource configurations.

### Customize initialization configuration

Initialization configurations for all common Qualcomm‑specific chipsets are defined in `userspace-resource-manager-extensions/Configs/InitConfig.yaml`.

The following example shows how the initialization configuration can be customized:

InitConfigs:
    - IRQConfigs:
       - AffineIRQToCluster: [-1, 0]
    Copy to clipboard

Chipset‑specific `InitConfig.yaml` files are provided under `e-manager-extensions/Configs/<target-specific>`.

### Extend URM with custom plugins and resources

URM provides an extension framework that enables the integration of custom resources and plugins to support platform or use case‑specific requirements.

For example, the following code segment registers custom resources such as `0x00800000` (governor change resource) and `0x00800002` (workqueue affinity resource). It also implements an extension to refine signal handling for the cyclictest application.

URM_REGISTER_RES_APPLIER_CB(0x00800000, governorApplierCallback)
    URM_REGISTER_RES_APPLIER_CB(0x00800002, workqueueApplierCallback)
    URM_REGISTER_RES_TEAR_CB(0x00800000, governorTearCallback)
    
    static void postProcessCallback(void* context) {
       if(context == nullptr) {
          return;
       }
    
       PostProcessCBData* cbData = static_cast<PostProcessCBData*>(context);
       if(cbData == nullptr) {
          return;
       }
    
       // Match to our usecase
       cbData->mSigId = CONSTRUCT_SIG_CODE(0x80, 0x0001);
       cbData->mSigType = DEFAULT_SIGNAL_TYPE;
    }
    
    URM_REGISTER_POST_PROCESS_CB("cyclictest", postProcessCallback)
    Copy to clipboard

For more information about extensions and customization, see [Userspace Resource Manager Extensions](https://github.com/qualcomm/userspace-resource-manager-extensions/blob/main/docs/README.md/).

## Customize memory

You can manage virtual memory using Kswapd, regulate system memory using
watermark, and define memory regions for specific subsystems through
memory carveouts.

### Kswapd

Kswapd is a kernel thread that manages the virtual memory. When the
system is low on free memory, Kswapd is activated to reclaim memory by
identifying less frequently used pages from the file cache and moving
them to the swap space (ZRAM).

Kswapd does the following:

- Monitors the memory usage of the system
- Performs swapping activities in the background to maintain an optimal
level of free memory

![../../_images/cpu_usage_performance_using_kswapd.png](data:image/png;base64,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)

**Figure : CPU usage vs. performance using Kswapd**

### Watermark

A watermark is a threshold or limit set on memory parameters that helps
regulate the allocation and usage of system memory.

Table : Watermark parameters

| Parameter | Description |
| --- | --- |
| `/proc/sys/vm/min_free_kbytes` | <ul class="simple"><br><li><p>This parameter determines the minimum amount of free<br>memory that the system must maintain across all zones.</p></li><br><li><p>It ensures that a certain reserve of memory remains<br>available for critical operations, such as handling<br>atomic allocations, which can't wait for memory<br>reclamation.</p></li><br><li><p>The number of reserved free pages in each zone is<br>proportional to its size.</p></li><br></ul> |
| `/proc/sys/vm/watermark_scale_factor` | <ul class="simple"><br><li><p>This factor controls the aggressiveness of Kswapd.</p></li><br><li><p>It defines the amount of memory left in a system before<br>Kswapd is woken up, and the amount of free memory<br>required before Kswapd goes back to sleep.</p></li><br><li><p>The unit is in fractions of 10,000.</p></li><br><li><p>The default value of 10 means that the distance between<br>the watermarks is 0.1% of the available memory in the<br>node or system. The maximum value is 1000, or 10% of<br>memory.</p></li><br></ul> |
| `/proc/sys/vm/watermark_boost_factor` | <ul class="simple"><br><li><p>This factor is used to optimize memory fragmentation by<br>temporarily providing a high-watermark for the memory<br>management area, which allows Kswapd to reclaim more<br>memory.</p></li><br><li><p>The unit is in fractions of 10,000.</p></li><br><li><p>The default value of 15,000 means that up to 150% of the<br>high watermark is reclaimed in the event of a pageblock<br>being mixed due to fragmentation.</p></li><br><li><p>The number of fragmentation events that have occurred in<br>the recent past determine the level of reclaim. A boost<br>factor of 0 disables the feature.</p></li><br></ul> |

For more information, see [Documentation for /proc/sys/vm/](https://www.kernel.org/doc/Documentation/admin-guide/sysctl/vm.rst).

### Memory carveout

Memory carveouts refer to specific memory regions that the kernel can't
address, known as no-map regions. Specific subsystems such as modem, camera, aDSP, cDSP, and Qualcomm^®^ Trusted Execution Environment (TEE)/TrustZone (TZ) use these regions exclusively and hence those are inaccessible to the Linux kernel.

These carveouts are defined in the source code at
`arch/arm64/boot/dts/qcom/<target>.dtsi`.

They fall under the `reserved-memory` node and can be configured.

The following code shows the no-map regions for the cDSP, camera, modem,
and QTEE/TrustZone (TZ) subsystems:

reserved-memory {
            cdsp_secure_heap_mem: cdsp-secure-heap@81800000 {
                reg = <0x0 0x81800000 0x0 0x1e00000>;
                no-map;
            };
    
            camera_mem: camera@84300000 {
                reg = <0x0 0x84300000 0x0 0x500000>;
                no-map;
            };
            adsp_mem: adsp@86100000 {
                reg = <0x0 0x86100000 0x0 0x2800000>;
                no-map;
            };
            cdsp_mem: cdsp@88900000 {
                reg = <0x0 0x88900000 0x0 0x1e00000>;
                no-map;
            };
            mpss_mem: mpss@8b800000 {
                reg = <0x0 0x8b800000 0x0 0xf600000>;
                no-map;
            };
    
            tz_stat_mem: tz-stat@c0000000 {
                reg = <0x0 0xc0000000 0x0 0x100000>;
                no-map;
            };
            tags_mem: tags@c0100000 {
                reg = <0x0 0xc0100000 0x0 0x1200000>;
                no-map;
            };
    Copy to clipboard

You can adjust the reserved memory carveout regions based on your
product requirements. This adjustment can include removing a modem
carveout region or reducing the size of QTEE/TrustZone (TZ) application memory
carveout regions.

For example, the following code snippet shows how to disable the modem
memory carveout for memory optimization:

reserved-memory {
            mpss_mem: mpss@8b800000 {
                reg = <0x0 0x8b800000 0x0 0xf600000>;
                no-map;
                        status = "disabled";
            };
    Copy to clipboard

In this code:

- `0x8b800000` is the base address of the modem region.
- `0xf600000` is the size of the modem region, which is 246 MB.
- Add `status = disabled` to make this region available for the Linux kernel.

The following example snippets show how to reduce the memory carveout
size of the QTEE/TrustZone (TZ) applications from 28 MB (`0x1c00000`) to
20 MB (`0x1400000`):

| - Before:<br>    - reserved memory {<br>                     trusted_apps_mem: trusted_apps@c1800000 {<br>                     reg = <0x0 0xc1800000 0x0 0x1c00000>;<br>                     no-map;<br>       };<br>    Copy to clipboard | - After:<br>    - reserved memory {<br>                  trusted_apps_mem: trusted_apps@c1800000 {<br>                  reg = <0x0 0xc1800000 0x0 0x1400000>;<br>                  no-map;<br>    };<br>    Copy to clipboard |
| --- | --- |

## Next steps

- [Troubleshoot performance issues](https://docs.qualcomm.com/doc/80-80021-10/topic/24-debug.html#debug)

Last Published: Mar 16, 2026

[Previous Topic
Configure CPU, GPU, and memory](https://docs.qualcomm.com/bundle/publicresource/80-80021-10/topics/14-configure.md) [Next Topic
Troubleshoot performance issues](https://docs.qualcomm.com/bundle/publicresource/80-80021-10/topics/24-debug.md)