Qualcomm Linux(QCS6490/QCS5430) 性能指南(四)

Configure

在开始任何性能分析之前,调整设备的基本配置设置是至关重要的。这些设置对设备的性能有着重要影响。

注意: 如果修改了 CPU、GPU 和内存设置,设备的功耗和性能可能会受到影响。在进行任何修改之前,确保对所有相关的使用案例进行了影响验证。

配置 CPU

您可以使用以下指定的命令来检查和修改 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
cat /sys/devices/system/cpu/cpufreq/policy7/scaling_cur_freq
读取CPU当前频率,单位为KHz。
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_available_frequencies
cat /sys/devices/system/cpu/cpufreq/policy7/scaling_available_frequencies
读取CPU支持的频率,单位为KHz。
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq
cat /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
读取CPU的最低频率,单位为KHz。
echo > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
echo > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq
echo > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
设置 CPU 的最小频率。将 替换为目标频率(以 KHz 为单位),然后运行命令。
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq
cat /sys/devices/system/cpu/cpufreq/policy7/scaling_max_freq
要设置 CPU 的最大频率,请将 替换为目标频率(以 KHz 为单位),然后运行命令。
cat /sys/devices/system/cpu/cpufreq/policy0/stats/trans_table
cat /sys/devices/system/cpu/cpufreq/policy4/stats/trans_table
cat /sys/devices/system/cpu/cpufreq/policy7/stats/trans_table
读取CPU默认频率,单位为KHz。
echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
echo 1516800 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
要将 CPU 频率设置为所需的水平,scaling_min_freq 和 scaling_max_freq 都应设置为相同的频率。

配置GPU

您可以使用下表中指定的命令检查和修改 GPU 设置:

注意: 对于这些特定于 GPU 配置的命令,输出值的单位为 Hz。

命令目的
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 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq设置 GPU 的最小频率。将 <GPU 频率(单位:Hz)> 替换为目标频率(单位:Hz)并运行该命令。
cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq读取GPU的最大频率。
echo /sys/class/kgsl/kgsl-3d0/devfreq/max_freq设置 GPU 的最大频率。将 <GPU 频率(单位:Hz)> 替换为目标频率(单位:Hz)并运行该命令。
cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage读取 GPU 百分比利用率。
例如,要将 GPU 频率设置为 600000000 Hz,请运行以下命令:
echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
echo 600000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
将 GPU 频率设置为所需的级别,min_freq 和 max_freq 都应设置为相同的频率级别。
cat /sys/class/kgsl/kgsl-3d0/max_pwrlevel
cat /sys/class/kgsl/kgsl-3d0/min_pwrlevel
读取 GPU 的功率级别。级别 0 映射到最大 GPU 时钟。级别越高,GPU 时钟越低。
echo 0 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel将 GPU 频率设置为 FMAX。

配置内存

内存配置是一个关键过程,有助于节省内存,为进程腾出空间,并在物理内存达到极限时平衡现有数据在 RAM 中的分布。

设置 ZRAM 磁盘大小

ZRAM 是用于交换内存空间的 RAM 分区。它以压缩形式在 RAM 中存储不活跃的匿名页,以节省内存。
ZRAM 磁盘大小表示可以从 RAM 交换到 ZRAM 的最大内存量。
建议将 ZRAM 磁盘大小设置为 RAM 大小的一半。
例如,要将 ZRAM 磁盘大小设置为 1 GB(对于 2 GB 或更大的 RAM),运行以下命令:

swapoff /dev/zram0
echo 1 > /sys/block/zram0/reset
echo 1073741824 > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
cat /proc/meminfo | grep -i "swap" 

前述命令的输出如下:

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

你可以在编译时通过修改源码路径 meta-qcom-hwe/tree/kirkstone/dynamic-layers/openembedded-layer/recipes-extended/zram/zram/ 中 zram-swap-init-update bash 脚本的 -s 参数值来配置 ZRAM 磁盘大小。

要在脚本中更改大小,请运行以下命令:

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

例如,要将 ZRAM 大小设置为 1 GB,运行以下命令:

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

启用/禁用主动压缩

压缩是将所有自由内存空间以碎片形式收集到一个大内存块的过程。主动压缩决定了后台压缩的积极程度。它的值介于 0 到 100 之间,默认值设置为 20。

当节点的碎片得分超过高阈值时,其对应的 kcompactd 线程将启动主动压缩过程。

压缩过程将保持活动状态,直到节点的得分降至低于低阈值。

主动压缩的阈值如下:

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

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

要启用主动压缩,运行以下命令:

echo 20 > /proc/sys/vm/compaction_proactiveness

要禁用主动压缩(这也会关闭周期性的 kcompactd 唤醒),运行以下命令:

echo 0 > /proc/sys/vm/compaction_proactiveness

有关更多信息,请参阅 内核的主动压缩

Swappiness

交换空间是一种类似于主内存或 RAM 的辅助存储。交换空间的主要参数是交换性。

此参数决定了内核交换守护程序(kswapd)相对于系统页缓存交换匿名内存的积极程度。
此参数的值介于 0 到 200 之间。增加值会增加匿名交换的数量。配置的值设置为 100,表示匿名内存和缓存内存被等量回收。
要调整交换性值,运行以下命令:

echo 100 > /proc/sys/vm/swappiness

有关内存参数的更多信息,请参阅 内核内存参数文档

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值