> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 配置 CPU、GPU 和内存

在分析系统性能之前，必须先配置设备的基本设置。这些设置对设备的性能有重要影响。您可以配置 CPU、GPU 和内存设置。

<Warning>
  任何配置更改都可能影响设备的功耗和性能。在进行任何修改之前，请确保在所有相关用例中验证其影响。
</Warning>

## **配置 CPU**

您可以使用下表中指定的命令检查和修改 CPU 配置：

<Note>
  下表中指定的命令应在设备上运行。这些命令输出值的单位为 KHz。
</Note>

<Note>
  包含 `policy7` 的命令在 QCS5430 FP1 上不受支持。
</Note>

**表：为 QCS6490、QCS5430 FP2、FP2.5、FP3 配置 CPU 的命令**

| 命令                                                                                                                                                                                                                                                                    | 用途                                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `cat /sys/devices/system/cpu/online`                                                                                                                                                                                                                                  | 检查在线的 CPU 核心。                                                                  |
| `echo 1 > /sys/devices/system/cpu/cpuX/online`                                                                                                                                                                                                                        | 开启一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                                       |
| `echo 0 > /sys/devices/system/cpu/cpuX/online`                                                                                                                                                                                                                        | 关闭一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                                       |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy7/scaling_cur_freq`                                                                | 读取当前 CPU 频率。                                                                   |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies`<br />`cat /sys/devices/system/cpu/cpufreq/policy4/scaling_available_frequencies`<br />`cat /sys/devices/system/cpu/cpufreq/policy7/scaling_available_frequencies`                         | 读取支持的 CPU 频率。                                                                  |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq`                                                                | 读取最小 CPU 频率。                                                                   |
| `echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq` | 设置最小 CPU 频率。将 `<cpu freq in KHz>` 替换为所需频率并运行命令。                                |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy7/scaling_max_freq`                                                                | 读取最大 CPU 频率。                                                                   |
| `echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy7/scaling_max_freq` | 设置最大 CPU 频率。将 `<cpu freq in KHz>` 替换为所需频率并运行命令。                                |
| `cat /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table`<br />`cat /sys/devices/system/cpu/cpufreq/policy4/stats/trans_table`<br />`cat /sys/devices/system/cpu/cpufreq/policy7/stats/trans_table`                                                             | 检查 CPU 驻留情况。                                                                   |
| 例如，要将 Silver 核心的 CPU 频率设置为 1.5 GHz，请运行以下命令：<br />`echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq`                                                             | 设置 CPU 频率。将 `scaling_min_freq` 和 `scaling_max_freq` 设置为相同的频率，以将 CPU 频率保持在所需水平。 |

您可以使用下表中指定的命令检查和修改 Qualcomm Dragonwing<sup>™</sup> IQ-615 的 CPU 配置：

**表：为 Dragonwing IQ-615 配置 CPU 的命令**

| 命令                                                                                                                                                                                                        | 用途                                                                    |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `cat /sys/devices/system/cpu/online`                                                                                                                                                                      | 检查在线的 CPU 核心。                                                         |
| `echo 1 > /sys/devices/system/cpu/cpuX/online`                                                                                                                                                            | 开启一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                              |
| `echo 0 > /sys/devices/system/cpu/cpuX/online`                                                                                                                                                            | 关闭一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                              |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy6/scaling_cur_freq`                                                                        | 读取 CPU 的当前频率。                                                         |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies`<br />`cat /sys/devices/system/cpu/cpufreq/policy6/scaling_available_frequencies`                                              | 读取 CPU 支持的频率。                                                         |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq`                                                                        | 读取 CPU 的最小频率。                                                         |
| `echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq`                              | 设置 CPU 的最小频率。将 `<cpu freq in KHz>` 替换为所需频率并运行命令。                      |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq`<br />`cat /sys/devices/system/cpu/cpufreq/policy6/scaling_max_freq`                                                                        | 读取 CPU 的最大频率。                                                         |
| `echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq`<br />`echo <cpu freq in KHz> > /sys/devices/system/cpu/cpufreq/policy6/scaling_max_freq`                              | 要设置 CPU 的最大频率，请将 `<cpu freq in KHz>` 替换为所需频率并运行命令。                    |
| `cat /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table`<br />`cat /sys/devices/system/cpu/cpufreq/policy6/stats/trans_table`                                                                      | 检查 CPU 驻留情况。                                                          |
| 例如，要将 Silver 核心的 CPU 频率设置为 1.5 GHz，请运行以下命令：<br />`echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq`<br />`echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq` | 要将 CPU 频率设置在所需水平，应将 `scaling_min_freq` 和 `scaling_max_freq` 设置为相同的频率。 |

**表：为 Dragonwing IQ-9075 配置 CPU 的命令**

| 命令                                                                                                                                                                                               | 用途                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| `cat /sys/devices/system/cpu/online`                                                                                                                                                             | 检查在线的 CPU 核心。                                                     |
| `echo 1 \> /sys/devices/system/cpu/cpuX/online`                                                                                                                                                  | 开启一个 CPU 核心。在 cpuX 中，X 表示核心编号（0 到 7）。                             |
| `echo 0 \> /sys/devices/system/cpu/cpuX/online`                                                                                                                                                  | 关闭一个 CPU 核心。在 cpuX 中，X 表示核心编号（0 到 7）。                             |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_cur\_freq` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_cur\_freq`                                                                | 读取当前 CPU 频率。                                                      |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_available\_frequencies` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_available\_frequencies`                                      | 读取支持的 CPU 频率。                                                     |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_min\_freq` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq`                                                                | 读取最小 CPU 频率。                                                      |
| `echo \<cpu freq in KHz\> \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_min\_freq` `echo \<cpu freq in KHz\> \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq`                | 设置最小 CPU 频率。将 `<cpu freq in KHz>` 替换为所需的值。                        |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_max\_freq` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq`                                                                | 读取最大 CPU 频率。                                                      |
| `echo \<cpu freq in KHz\> \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_max\_freq` `echo \<cpu freq in KHz\> \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq`                | 设置最大 CPU 频率。将 `<cpu freq in KHz>` 替换为所需的值。                        |
| `cat /sys/devices/system/cpu/cpufreq/policy0/stats/trans\_table` `cat /sys/devices/system/cpu/cpufreq/policy4/stats/trans\_table`                                                                | 检查 CPU 驻留情况。                                                      |
| 例如，要将 Gold 核心的 CPU 频率设置为 1.5 GHz：<br />`echo 1516800 \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_min\_freq` `echo 1516800 \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_max\_freq` | 设置 CPU 频率。将 `scaling_min_freq` 和 `scaling_max_freq` 设置为相同的值以锁定频率。 |

**表：为 Dragonwing IQ-8275 配置 CPU 的命令**

| 命令                                                                                                                                                                                                                                                                         | 用途                                                                             |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| `cat /sys/devices/system/cpu/online`                                                                                                                                                                                                                                       | 检查在线的 CPU 核心。                                                                  |
| `echo 1 \> /sys/devices/system/cpu/cpuX/online`                                                                                                                                                                                                                            | 开启一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                                       |
| `echo 0 \> /sys/devices/system/cpu/cpuX/online`                                                                                                                                                                                                                            | 关闭一个 CPU 核心。在 cpuX 中，X 表示核心编号，范围为 0 到 7。                                       |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_cur\_freq` `cat /sys/devices/system/cpu/cpufreq/policy2/scaling\_cur\_freq` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_cur\_freq`                                                                         | 读取 CPU 的当前频率。                                                                  |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_available\_frequencies` <br />`cat /sys/devices/system/cpu/cpufreq/policy2/scaling\_available\_frequencies` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_available\_frequencies`                            | 读取 CPU 支持的频率。                                                                  |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_min\_freq` `cat /sys/devices/system/cpu/cpufreq/policy2/scaling\_min\_freq` `cat /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq`                                                                         | 读取 CPU 的最小频率。                                                                  |
| `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_min\_freq` `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy2/scaling\_min\_freq` `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq` | 设置 CPU 的最小频率。将 `<cpu freq in kHz>` 替换为所需频率并运行命令。                               |
| `cat /sys/devices/system/cpu/cpufreq/policy0/scaling\_max\_freq` `cat /sys/devices/system/cpu/cpufreq/policy2/scaling\_max\_freq` `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq`                                                 | 读取 CPU 的最大频率。                                                                  |
| `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy0/scaling\_max\_freq` `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy2/scaling\_max\_freq` `echo \<cpu freq in kHz\> \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq` | 设置 CPU 的最大频率。将 `<cpu freq in kHz>` 替换为所需频率并运行命令。                               |
| `cat /sys/devices/system/cpu/cpufreq/policy0/stats/trans\_table` `cat /sys/devices/system/cpu/cpufreq/policy2/stats/trans\_table` `cat /sys/devices/system/cpu/cpufreq/policy4/stats/trans\_table`                                                                         | 检查 CPU 驻留情况。                                                                   |
| 例如，要将 Silver 核心的 CPU 频率设置为 1.5 GHz，请运行以下命令：<br /><br />`echo 1574400 \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq` `echo 1574400 \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq`                                                           | 设置 CPU 频率。将 `scaling_min_freq` 和 `scaling_max_freq` 设置为相同的频率，以将 CPU 频率保持在所需水平。 |
| 例如，要将 Silver 核心的 CPU 频率设置为 1.5 GHz，请运行以下命令：<br /><br />`echo 1574400 \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_min\_freq` `echo 1574400 \> /sys/devices/system/cpu/cpufreq/policy4/scaling\_max\_freq`                                                           | 设置 CPU 频率。将 `scaling_min_freq` 和 `scaling_max_freq` 设置为相同的频率，以将 CPU 频率保持在所需水平。 |

## **配置 GPU**

您可以使用下表中指定的命令在设备上检查和修改 GPU 配置：

<Note>
  下表中指定的命令应在设备上运行。这些命令输出值的单位为 Hz。
</Note>

**表：配置 GPU 的命令**

| 命令                                                                                                                                                                        | 用途                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| `cat /sys/class/kgsl/kgsl-3d0/gpuclk`                                                                                                                                     | 读取当前 GPU 频率。                                          |
| `cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies`                                                                                                                  | 读取支持的 GPU 频率。                                         |
| `cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq`                                                                                                                           | 读取最小 GPU 频率。                                          |
| `echo <GPU freq in Hz> > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq`                                                                                                       | 设置最小 GPU 频率。将 `<GPU freq in Hz>` 替换为所需频率（Hz）并运行命令。    |
| `cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq`                                                                                                                           | 读取最大 GPU 频率。                                          |
| `echo <GPU freq in Hz> > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq`                                                                                                       | 设置最大 GPU 频率。将 `<GPU freq in Hz>` 替换为所需频率（Hz）并运行命令。    |
| `cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage`                                                                                                                        | 读取 GPU 使用百分比。                                         |
| 例如，要将 GPU 频率设置为 600000000 Hz，请运行以下命令：<br />`echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq`<br />`echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq` | 将 GPU 频率设置在所需水平；`min_freq` 和 `max_freq` 都应设置为相同的频率水平。 |
| `cat /sys/class/kgsl/kgsl-3d0/max_pwrlevel`<br />`cat /sys/class/kgsl/kgsl-3d0/min_pwrlevel`                                                                              | 读取 GPU 功率级别。功率级别 0 对应最大 GPU 时钟频率。功率级别值越大，GPU 时钟频率越低。  |
| `echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel`                                                                                                                          | 将 GPU 频率设置为最大频率。                                      |

## **配置内存**

当物理内存达到极限时，内存配置对于节省内存、为进程腾出空间以及平衡 RAM 中的现有数据至关重要。

### **设置 ZRAM 磁盘大小**

ZRAM 是用于交换内存空间的 RAM 分区。它将不活动的匿名页面以压缩形式存储在 RAM 中，以节省内存。

ZRAM 磁盘大小表示可以从 RAM 交换到 ZRAM 的最大内存量。建议将 ZRAM 磁盘大小设置为 RAM 大小的一半。

在 Qualcomm<sup>®</sup> Linux<sup>®</sup> 构建中，ZRAM 默认启用。默认情况下，通过 `post_boot_common.sh` 脚本中的 `/sys/block/zram*/mem_limit` 参数，将 50% 的 RAM 配置为 ZRAM 内存限制。

要重新配置 ZRAM 内存限制，请修改设备上位于 `/etc/urm/initscripts/post_boot/` 的 `post_boot_common.sh` 脚本中的 `/sys/block/zram*/mem_limit` 参数值。

有关引导后脚本的更多信息，请参阅 [Post-boot init scripts](https://github.com/qualcomm/userspace-resource-manager-extensions/blob/main/docs/08-post-boot-init-scripts.md)。

### **启用/禁用主动内存规整**

内存规整（compaction）是将碎片形式的所有空闲内存空间收集为大内存块的过程。主动规整决定了后台内存规整的激进程度。它接受 0 到 100 之间的值，默认值为 20。

当节点的碎片化得分超过高阈值时，相应的 kcompactd 线程会启动主动规整过程。

规整过程会持续进行，直到节点的得分降至低阈值以下。

主动规整的阈值如下：

* 低阈值 = 100 - 主动性
* 高阈值 = 低阈值 + 10%

例如，如果低阈值为 80，则高阈值为 90。

要启用主动规整，请在设备上运行以下命令：

```text theme={null}
echo 20 > /proc/sys/vm/compaction_proactiveness
```

要禁用主动规整（同时也会关闭 kcompactd 的定期唤醒），请在设备上运行以下命令：

```text theme={null}
echo 0 > /proc/sys/vm/compaction_proactiveness
```

有关更多信息，请参阅 [Proactive compaction for the kernel](https://lwn.net/Articles/817905/)。

### **Swappiness**

交换空间（swap space）是一种功能类似于主内存或 RAM 的辅助存储。交换空间的主要参数是 swappiness。

* 该参数决定了内核交换守护进程（kswapd）相对于系统页面缓存换出[匿名内存](https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html#anonymous-memory)的激进程度。
* 该参数可以取 0 到 200 之间的值。增大该值会增加匿名内存的交换量。配置值为 100，表示匿名内存和缓存内存被同等回收。

要调整 swappiness 值，请在设备上运行以下命令：

```text theme={null}
echo 100 > /proc/sys/vm/swappiness
```

有关内存参数的更多信息，请参阅 [Documentation for /proc/sys/vm/](https://www.kernel.org/doc/Documentation/admin-guide/sysctl/vm.rst)。

## **后续步骤**

* [针对性能调优进行定制](./customize-for-performance-tuning)
