# 配置 CPU、GPU 和内存

在开始性能分析之前，必须调整设备的基本配置设置。这些设置对设备的性能起着重要作用。您可以配置 CPU、GPU 和内存设置。

Caution

任何配置更改都会影响设备的功耗和性能。在进行修改前，务必先对所有相关用例的影响进行确认。

## 配置 CPU

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

Note

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

Note

QCS5430 FP1 不支持包含 `policy7` 的命令。

要为 Qualcomm Dragonwing^™^ IQ-9075、Qualcomm Dragonwing^™^ IQ-8275 和 Qualcomm Dragonwing^™^ IQ-615 配置 CPU，请参阅相应的附录。以下指南可供具有授权访问权限的许可用户使用：

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

表：配置 CPU 的命令

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

## 配置 GPU

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

Note

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

表：用于配置 GPU 的命令

| 命令 | 目的 |
| --- | --- |
| cat /sys/class/kgsl/kgsl-3d0/gpuclk<br>    Copy to clipboard | 读取当前 GPU 频率。 |
| cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies<br>    Copy to clipboard | 读取支持的 GPU 频率。 |
| cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq<br>    Copy to clipboard | 读取 GPU 最低频率。 |
| echo <GPU freq in Hz> > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq<br>    Copy to clipboard | 设置 GPU 最低频率。更换 `<GPU freq in Hz>` 所需的频率（以 Hz 为单位）并运行命令。 |
| cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq<br>    Copy to clipboard | 读取 CPU 最高频率。 |
| echo <GPU freq in Hz> /sys/class/kgsl/kgsl-3d0/devfreq/max_freq<br>    Copy to clipboard | 设置 GPU 最高频率。更换 `<GPU freq in Hz>` 所需的频率（以 Hz 为单位）并运行命令。 |
| cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage<br>    Copy to clipboard | 读取 GPU 的使用百分比。 |
| 例如，要将 GPU 频率设置为 600000000 Hz，可运行以下命令：<br><br><br>echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq<br>    Copy to clipboard<br><br><br>echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq<br>    Copy to clipboard | 要将 GPU 频率设置为所需级别，应将 `min_freq` 和 `max_freq` 应设置为相同的频率级别。 |
| cat /sys/class/kgsl/kgsl-3d0/max_pwrlevel<br>    Copy to clipboard<br><br><br>cat /sys/class/kgsl/kgsl-3d0/min_pwrlevel<br>    Copy to clipboard | 读取 GPU 功耗级别。<br><br><br><br>> <br>> <br>> 级别 0 对应于最大 GPU 时钟频率。级别越高，GPU 时钟频率越低。 |
| echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel<br>    Copy to clipboard | 将 GPU 频率设置为最高频率。 |

## 配置内存

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

### 设置 ZRAM 磁盘大小

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

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

例如，请在设备上运行以下命令，将 RAM 大小为 2 GB 的 ZRAM 磁盘大小配置为 1 GB：

swapoff /dev/zram0
    Copy to clipboard

echo 1 > /sys/block/zram0/reset
    Copy to clipboard

echo 1073741824 > /sys/block/zram0/disksize
    Copy to clipboard

mkswap /dev/zram0
    Copy to clipboard

swapon /dev/zram0
    Copy to clipboard

cat /proc/meminfo | grep -i "swap"
    Copy to clipboard

以下是命令输出：

SwapCached: 0 kB

SwapTotal: 1048572 kB

SwapFree: 1048572 kB

您可以通过修改以下路径源代码中的 `zram-swap-init-update` bash 脚本中的 `-s` 参数值来在编译时配置 ZRAM 磁盘大小

`layers/meta-qcom-hwe/dynamic-layers/openembedded-layer/recipes-extended/zram/zram`

要在脚本中更改磁盘大小，请更新 `<size>` 参数：

zramctl -a ${ZRAM_ALGORITHM} -s <size> $device
    Copy to clipboard

以下示例显示了将 ZRAM 大小设置为 1 GB：

zramctl -a ${ZRAM_ALGORITHM} -s 1048576KB $device
    Copy to clipboard

### 启用/禁用主动内存压缩

压缩进程可将所有空闲空间以内存碎片的形式收集到一个大内存块中。主动压缩决定了后台内存压缩的执行强度。 取值范围为  0 到 100 之间的值，默认值设为 20。

当节点的碎片分数超过阈值上限时，相应的 kcompactd 线程启动主动压缩过程。

压缩进程会一直工作，直到节点的碎片分值降至低于阈值下限为止。

主动内存压缩的阈值如下：

- 下限 = 100 - 主动程度
- 上限 = 下限 + 10%

例如，如果阈值下限为 80，则阈值上限为 90。

请在设备上运行以下命令，以便启用主动压缩：

echo 20 > /proc/sys/vm/compaction_proactiveness
    Copy to clipboard

请在设备上运行以下命令，以便禁用主动压缩（这也会关闭定期的 kcompactd 唤醒）：

echo 0 > /proc/sys/vm/compaction_proactiveness
    Copy to clipboard

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

### Swappiness 参数

交换空间是辅助存储空间，其作用类似于主内存或 RAM。交换空间的主要参数是 swappiness。

- 该参数用来确定相对于系统页面缓存而言，内核 swap 后台程序 (kswapd) 换出 [anonymous memory](https://www.kernel.org/doc/html/latest/admin-guide/mm/concepts.html#anonymous-memory) 的优先程度。
- 该参数取值范围为 0 到 200。增大该值将增加交换出的匿名内存量。配置的值为 100，表示均等回收匿名内存和缓存内存。

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

echo 100 > /proc/sys/vm/swappiness
    Copy to clipboard

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

## 后续步骤

- [为性能调优而定制](https://docs.qualcomm.com/doc/80-70022-10SC/topic/18-customize.html#customize)

Last Published: Nov 02, 2025

[Previous Topic
性能分析工具](https://docs.qualcomm.com/bundle/publicresource/80-70022-10SC/topics/13-performance_tools.md) [Next Topic
为性能调优而定制](https://docs.qualcomm.com/bundle/publicresource/80-70022-10SC/topics/18-customize.md)