# 定制

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

定制过程对系统的各个方面进行微调，会显著影响系统的整体性能和功耗。

可以微调的范围包括 CPU 调度器、CPU 频率调节器、DVFS 调节器、perflock 和内存。建议在通过全面分析性能和功耗而对各个方面彻底了解后，再进行调节。

Caution:

任何定制都会影响设备的功耗和性能。因此，在执行任何定制之前，都务必要验证对所有相关用例的影响。

## 定制 CPU 调度器

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

可以定制 CPU 调度器的功能，例如 PELT 和 UCLAMP 调度器。

有关这些功能的更多信息，参见 [CPU 调度器](https://docs.qualcomm.com/doc/80-70014-10Y/topic/2-performance-features.html#cpu-scheduler)。

### 运行时的 PELT 半衰期

PELT 半衰期是 PELT 信号从零负载开始达到 50% 负载所需的时间。默认情况下，内核值设置为 32 毫秒，表示调度器识别出 50% 的任务负载需要 32 毫秒。

选择较小的值会缩短 PELT 加速时间，从而可以缩短信号稳定并准确表达任务需求所需的时间。但该选项也会相应地减少衰减时间。

可以在 layers/meta-qti-bsp/conf/machine/qcm6490.conf 的源代码中通过以下内核命令行参数配置 PELT 乘数。

kernel.sched_pelt_multiplier=[1, 2, 4] Default value: 1 (half life 32msec), 2 (half life 16msec), 4 (half life 8msec)]Copy to clipboard

有关 PELT 半衰期的更多信息，参见 [sched/plet：在运行时更改 PELT 半衰期](https://lwn.net/Articles/906375/)。

### UCLAMP

UCLAMP 是一种调度器功能，允许用户空间来管理任务性能要求。

它是一种提示机制，可帮助调度器了解任务的性能需求和限制，从而帮助调度器做出明智的决策。

当使用 `schedutil` CPU 频率调节器时，UCLAMP 还会影响 CPU 频率选择。UCLAMP 值范围为 0 至 1024。

可以为 UCLAMP 定制以下参数：

- `sched_util_clamp_min` – 该参数设置单个任务和任务组可接受的最低性能级别，确保任务获得足够的资源以有效运行，即使在需求低时也是如此。 
    任务请求的任何 `uclamp.min` 值均不得超出 `sched_util_clamp_min`。

    - 对调度器而言，它相当于 PELT 信号的下限，用于跟踪任务利用率。
    - 对于 CPU 频率，它指示调节器选择一个能够满足任务性能需求的频率，从而确保响应度和效率。

Qualcomm 调整值为 1024。可通过运行以下命令设置此参数：

        echo 1024 > /proc/sys/kernel/sched_util_clamp_minCopy to clipboard
- `sched_util_clamp_max` – 该参数设置单个任务和任务组可接受的最高性能级别。它确保任务不会消耗过多资源，防止出现资源争用和系统不稳定的情况。
    任务请求的任何 `uclamp.max` 值均不得超出 `sched_util_clamp_max`。

    - 对调度器而言，它相当于 PELT 信号的上限，用于跟踪任务利用率。
    - 对于 CPU 频率，如果任务需求超过可用频率，则调节器可调整频率以防止功耗过度。

Qualcomm 调整值为 1024。可通过运行以下命令设置此参数：

        echo 1024 > /proc/sys/kernel/sched_util_clamp_maxCopy to clipboard
- `sched_util_clamp_min_rt_default` – 默认情况下，RT 任务始终以最高频率和最高 CPU 容量运行。使用该参数可以更改使用 UCLAMP 时 RT 任务的默认行为。 
    它可以调整 RT 任务的最佳值，无需将其推至最大性能点即可提供良好的性能，从而满足了系统要求，不需要消耗功耗，也不需要始终以最大性能点运行。Qualcomm 调整值为 128。

    可通过运行以下命令设置此参数：

        echo 128 > /proc/sys/kernel/sched_util_clamp_min_rt_defaultCopy to clipboard

有关 UCLAMP 的更多信息，可访问 [https://docs.kernel.org/scheduler/sched-util-clamp.html](https://docs.kernel.org/scheduler/sched-util-clamp.html)。

## 定制 CPU 频率调节器

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

可以使用 `scaling_governor` 设置 CPU 调节器频率，以增强 CPU 性能。

Table : 定制 CPU 频率调节器的命令

| 命令 | 用途 |
| --- | --- |
| echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | 设置 CPU 调节器以增强系统性能。 |
| cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    cat /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    cat /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | 验证 CPU 频率调节器。 |
| echo schedutil > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo schedutil > /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo schedutil > /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | 将 CPU 频率调节器设置为 `schedutil`。 |
| echo 1000 > /sys/devices/system/cpu/cpufreq/policyX/schedutil/rate_limit_usCopy to clipboard | 定制 `rate_limit_us`。<br><br><br>                            <br>policyX 中 X 的值对应于群集 0、4 和 7。<br><br><br>                            <br>是 `schedutil` 调节器的一个参数。它包含以微秒为单位的值。调节器对负载进行一次评估后，会等待 `rate_limit_us` 的时间，再重新评估负载。Qualcomm 调整值为 1000。 |

## 定制 DVFS 调节器

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

可以根据功耗和性能要求，使用 DTSI 文件定制静态映射 DVFS 调节器和 BWMON 调节器。

### 定制静态映射 DVFS 调节器

可以根据功耗和性能要求通过 kernel\_platform/kernel/arch/arm64/boot/dts/qcom/sc7280.dtsi 文件定制 CPU 频率与 L3/DDR 频率之间的映射。

在该 DTSI 文件中，每个 CPU 节点都有一个条目包含 `operating-points-v2 = <&cpux_opp_table>`，其中的 `cpux_opp_table` 保存 CPU 频率与 L3 和 DDR 频率之间的静态映射。

例如，以下条目指示 CPU 0 在 300 MHz 频率下运行：

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

当 CPU 0 以 300 MHz 运行时，会执行以下操作：
- 将 L3 表决为 9600000，即 9600000/w (=32) = 300,000，对应于 300 MHz
- 将 DDR 表决为 800000，即 800000/w (=4) = 200,000，对应于 200 MHz

在本例中，w 表示可以在一个周期内写入的字节数。

- 对于 L3，该值为 32，表示每周期一个事务，每事务 32 字节。
- 对于双通道 DDR，该值为 4。每个通道每周期可执行两个事务（因为是 DDR 内存），每个事务 2 字节。

有关工作性能点框架的更多信息，参见[通用 OPP（工作性能点）绑定](https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt)。

这些表中 DDR 的值按通道指定。这意味着 CPU 频率与每个内存控制器通道的带宽之间存在对应关系。

Caution:

如果更改这些 .dtsi 文件，则设备的功耗和性能会受到影响。在更改任何节点前，确保对所有相关用例的影响进行了验证。

### 定制 BWMON 调节器

可以根据功耗和性能要求通过 dtsi kernel\_platform/kernel/arch/arm64/boot/dts/qcom/sc7280.dtsi 文件定制 `bwmon_opp_table` 以进行 LLCC 和 DDR 表决。

该表包含 DDR 和 LLCC 频率级别，每个级别都根据流量折算为 LLCC 和 DDR 表决值。

例如，以下 DTSI 条目根据 LLCC 与 DDR 之间的 CPU 流量投票给 DDR，相当于 200 MHz，因为 800000/w（其中 w = 4）等于 200,000。

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

以下 DTSI 条目根据 CPU 与 LLCC 之间的 CPU 流量投票给 LLCC，相当于 150 MHz，因为 2400000/w（其中 w = 16）等于 150,000：

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

在该例中，w 表示在一个周期内可以写入的字节数。

- 对于 DDR，该值为 4。每个通道每周期可执行两个事务（DDR 内存），每个事务 2 个字节。
- 对于 LLCC，该值为 16。

## 定制 perflock

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

可以运行 perflock API、使用不同的调节参数执行用例，以及调试 perflock 问题。

### Perflock API

要从用户空间软件使用 perflock API，按以下步骤操作：

1. 在源文件中加入动态链接头： `#include <dlfcn.h>`.
2. 使用 `dlopen` 加载 `library(libqti-perfd-client.so)`。使用 `ro.vendor.extension_library` 系统属性。
3. 使用 `dlsym` 加载 perf\_lock\_acq() 和 perf\_lock\_rel() 符号。
4. 声明一个整数变量，用来存储 perf\_lock\_acq() 的返回值。
5. 定义具有所需资源操作码和值对的 `perf_lock_opts`。
6. 使用 perf\_lock\_acq() 获取具有指定优化的锁。
7. 使用 perf\_lock\_rel() 释放锁。
8. 清理时使用 `dlclose` 卸载库。

以下示例代码说明了 perflock API 的用法。

    #include <dlfcn.h>
    static void *qcopt_handle;
    static int (*perf_lock_acq)(int handle, int duration, int list[], int numArgs);
    static int (*perf_lock_rel)(int handle);
    static int perf_lock_handle;
    char opt_lib_path[PATH_MAX] = {0};
    if (property_get("ro.vendor.extension_library", opt_lib_path, NULL) != 0) {if ((qcopt_handle = dlopen(opt_lib_path, RTLD_NOW)) == NULL) {	error_out();} else {	perf_lock_acq =  (int (*)(int, int, int *, int))dlsym(qcopt_handle, "perf_lock_acq");	perf_lock_rel = (int (*)(int))dlsym(qcopt_handle, "perf_lock_rel");}
    }
    int perf_lock_opts[2] = {MPCTLV3_MIN_ONLINE_CPU_CLUSTER_BIG, 0x2};
    perf_lock_handle = perf_lock_acq(perf_lock_handle, 0, perf_lock_opts, 2); 
    :
    :
    // Code requiring perflock
    :
    :
    :
    perf_lock_rel(perf_lock_handle);
    Copy to clipboard

### Perflock native 测试

perflock native 测试是专为评估特定 perflock 操作码组合的有效性而设计的工具。

该工具位于 /usr/bin/ 中。

可以将此工具作为试验不同 `<resource, opcode>` 调节参数的用例来运行。确认所需的性能改进后，perflock 代码即可集成到软件中。

以下代码说明了语法：

`perflock_native_test --acq <handle> <duration> <resource opcode, value, resource opcode, value,...>`

以下是如何使用该工具的示例：
- 要获取小核群集的 perflock，且最小频率设置为 1958400 KHz，持续 30 秒，可运行以下命令：

        perflock_native_test --acq 0 30000 0x44008100,1958400Copy to clipboard
- 要验证小核群集的最小频率，可运行以下命令：

        cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freqCopy to clipboard
- 要验证 syslog 中的 perflock 日志，可运行以下命令：

        cat /var/log/syslogCopy to clipboard

        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: initialize() 60: NRP: lib name libqti-perfd-client.soCopy to clipboard

        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: main() 502: NRP: resource_list[0] = 44008100 //silver core min frequency opcodeCopy to clipboard

        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: main() 502: NRP: resource_list[1] = 7a6 // silver core min freq in hexCopy to clipboard

### 调试 perflock

以下是调试 perflock 问题的日志机制的一些示例：

- 要验证 PerfHAL 服务是否可用，可运行以下命令：

        ls /usr/bin | grep perf Copy to clipboard
- 要验证 PerfHAL 服务的运行状态，可运行以下命令：

        systemctl status perf-halCopy to clipboard
- 要在 /var/log/syslog 中启用 perflock 日志和跟踪，可运行以下命令：

        echo debug.trace.perf=1 >> /etc/build.propCopy to clipboard

        echo vendor.debug.trace.perf=1 >> /etc/build.propCopy to clipboard

        rebootCopy to clipboard

## 定制内存

Source: [https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70014-10Y/topic/18-customize.html)

可以使用 kswapd 管理虚拟内存，使用 watermark 调节系统内存，以及通过内存划分为特定子系统定义内存区域。

### Kswapd

Kswapd 是管理虚拟内存的内核线程。当系统空闲内存不足时，Kswapd 会被激活以回收内存，方法是从文件缓存中找出不常用的页面，并将其移至交换空间 (ZRAM)。

Kswapd 执行以下操作：

- 监测系统的内存使用情况。
- 在后台执行交换活动，以使可用内存保持在最佳水平。

Figure : 使用 Kswapd 时 CPU 利用率与性能对比
                    ![](data:image/jpeg;base64,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)

### 水位

水位是针对内存参数设置的一个阈值或限值，可帮助调节系统内存的分配和利用率。

Table : 水位参数

| 参数 | 说明 |
| --- | --- |
| `/proc/sys/vm/min_free_kbytes` | <ul class="ul" id="memory_1__ul_n1t_4zy_gbc_sshewale_05-03-24-1454-30-329"><br>                                    <li class="li">该参数决定系统在所有区域必须保留的最小空闲内存量。</li><br><br>                                    <li class="li">它可确保对无法等待内存回收的关键操作（例如处理原子级分配）仍有一定的内存储备。</li><br><br>                                    <li class="li">每个区域中预留的空闲页面的数量与其大小成正比。</li><br><br>                                </ul> |
| `/proc/sys/vm/watermark_scale_factor` | <ul class="ul" id="memory_1__ul_udm_szy_gbc_sshewale_05-03-24-1455-35-986"><br>                                    <li class="li">该系数控制 Kswapd 的优先程度。</li><br><br>                                    <li class="li">它定义 Kswapd 被唤醒前，系统剩余的内存量，以及 Kswapd 需要在空闲内存量达到多少时进入休眠状态。</li><br><br>                                    <li class="li">单位为万分之一。</li><br><br>                                    <li class="li">默认值 10 表示水位之间的间隔为节点或系统中可用内存的 0.1%；最大值 1000，或内存的 10%。</li><br><br>                                </ul> |
| `/proc/sys/vm/watermark_boost_factor` | <ul class="ul" id="memory_1__ul_drl_11z_gbc_sshewale_05-03-24-1457-56-265"><br>                                    <li class="li">该系数用于优化内存碎片，方法是为内存管理区域临时提供一个高水位值，以使 Kswapd 能回收更多的内存。</li><br><br>                                    <li class="li">单位为万分之一。</li><br><br>                                    <li class="li">默认值 15000 表示在遇到因碎片导致页块混合的情况下，最多回收高水位的 150%。</li><br><br>                                    <li class="li">回收级别由最近发生的碎片事件数量所决定。如果 boost 系数为 0，则禁用该功能。</li><br><br>                                </ul> |

如需了解更多信息，参见 [Documentation for /proc/sys/vm/](https://www.kernel.org/doc/Documentation/admin-guide/sysctl/vm.rst)。

### 内存划分

内存划分是指内核无法寻址的特定内存区域，称为无映射区域。这些区域仅供特定子系统（如 Modem、摄像头、aDSP、cDSP 和 TrustZone 等）使用，Linux 内核无法访问这些区域。

这些划分区域在 arch/arm64/boot/dts/qcom/qcm6490.dtsi 的源代码中定义。

它们在 `reserved-memory` 节点下，可以进行配置。

以下代码显示了 cDSP、摄像头、Modem 和 TrustZone 子系统的无映射区域：

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

可以根据产品要求调整预留的内存划分区域。
包括删除 Modem 划分区域或减小 TrustZone 应用程序内存划分区域的大小。

例如，以下代码片段说明如何禁用 Modem 内存划分以进行内存优化：

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

在此代码中：

- 0x8b800000 是 Modem 区域的基址。
- 0xf600000 是 Modem 区域的大小，为 246 MB。
- 添加 `status= disabled`，使 Linux 内核可以使用该区域。

以下示例代码片段说明了如何将 TrustZone 受信任应用程序的内存划分大小从 28 MB (0x1c00000) 减小到 20 MB (0x1400000)：

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

Last Published: Aug 20, 2024

[Previous Topic
配置](https://docs.qualcomm.com/bundle/publicresource/80-70014-10Y/topics/14-configure.md) [Next Topic
故障排除](https://docs.qualcomm.com/bundle/publicresource/80-70014-10Y/topics/24-debug.md)