# 配置

Source: [https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html](https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html)

在开始性能分析之前，必须调节设备的基本配置设置。这些设置对设备的性能起着重要作用。

Caution:

如果修改 CPU、GPU 和内存的设置，设备的功耗和性能可能会受到影响。在进行修改前，务必先对所有相关用例的影响进行确认。

## 配置 CPU

Source: [https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html](https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html)

可使用下表列出的命令查看和修改 GPU 配置：

Note: QCS9075 不支持包含 `policy7` 的命令。

Note: 应在设备上运行下表列出的命令。这些命令的输出值单位为 KHz。

Table : 配置 CPU 的命令

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

## 配置 GPU

Source: [https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html](https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html)

可使用下表列出的命令查看和修改设备上的 GPU 配置：

Note: 应在设备上运行下表列出的命令。这些命令的输出值单位为 Hz。

Table : 配置 GPU 的命令

| 命令 | 用途 |
| --- | --- |
| cat /sys/class/kgsl/kgsl-3d0/gpuclkCopy to clipboard | 读取 GPU 的当前频率。 |
| cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequenciesCopy to clipboard | 读取支持的 GPU 频率。 |
| cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freqCopy to clipboard | 读取 GPU 的最小频率。 |
| echo <GPU freq in Hz> > /sys/class/kgsl/kgsl-3d0/devfreq/min_freqCopy to clipboard | 设置 GPU 的最小频率。将 `<GPU freq in Hz>` 替换为所需频率并运行命令。 |
| cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freqCopy to clipboard | 读取 GPU 的最大频率。 |
| echo <GPU freq in Hz> /sys/class/kgsl/kgsl-3d0/devfreq/max_freqCopy to clipboard | 设置 GPU 的最大频率。将 `<GPU freq in Hz>` 替换为所需频率并运行命令。 |
| cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentageCopy to clipboard | 读取 GPU 使用率（百分比）。 |
| 例如，要将 GPU 频率设置为 600000000 Hz，可运行以下命令：<br><br>    echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freqCopy to clipboard<br><br><br><br>    echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freqCopy to clipboard | 要将 GPU 频率设置为所需级别，应将 `min_freq` 和 `max_freq` 设置为相同的频率级别。 |
| cat /sys/class/kgsl/kgsl-3d0/max_pwrlevelCopy to clipboard<br><br><br>                            <br><br>    cat /sys/class/kgsl/kgsl-3d0/min_pwrlevelCopy to clipboard | 读取 GPU 的 power level。<br><br><br>                            <br>级别 0 对应于最大 GPU 时钟频率。级别越高，GPU 时钟频率越低。 |
| echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevelCopy to clipboard | 将 GPU 频率设置为最大频率。 |

## 配置内存

Source: [https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html](https://docs.qualcomm.com/doc/80-70015-10SC/topic/14-configure.html)

内存配置至关重要，它可以节省内存，为进程腾出空间，并能在物理内存达到限值时对 RAM 中的现有数据进行平衡。

### 设置 ZRAM 磁盘大小

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

ZRAM 磁盘大小表示可以从 RAM 交换到 ZRAM 的最大内存量。

建议将 ZRAM 磁盘大小设置为 RAM 大小的一半。

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

swapoff /dev/zram0Copy to clipboard

    echo 1 > /sys/block/zram0/resetCopy to clipboard

    echo 1073741824 > /sys/block/zram0/disksizeCopy to clipboard

    mkswap /dev/zram0Copy to clipboard

    swapon /dev/zram0Copy to clipboard

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

以下是命令输出：

- SwapCached: 0 kB
- SwapTotal: 1048572 kB
- SwapFree: 1048572 kB

可以在编译时配置 ZRAM 磁盘大小，方法是在以下位置的`zram-swap-init-update` bash 脚本源代码中修改
                    `-s` 参数值。

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

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

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

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

`zramctl -a ${ZRAM_ALGORITHM} -s 1048576KB $device`

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

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

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

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

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

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

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

要启用主动内存压缩，可在设备上运行以下命令：

    echo 20 > /proc/sys/vm/compaction_proactivenessCopy to clipboard

要禁用主动内存压缩（禁用的同时会关闭定期 kcompactd 唤醒），可在设备上运行以下命令：

    echo 0 > /proc/sys/vm/compaction_proactivenessCopy to clipboard

如需了解更多信息，参见[内核的主动内存压缩](https://lwn.net/Articles/817905/)。

### swappiness 参数

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

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

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

    echo 100 > /proc/sys/vm/swappinessCopy to clipboard

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

Last Published: Nov 28, 2024

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