当前位置:   article > 正文

RK3566底层CPU接口部分_/sys/kernel/debug/opp

/sys/kernel/debug/opp

Linux内核CPU控制框架

Linux内核中的CPU控制框架是一个用于管理和控制处理器调度和功耗的机制。它提供了一种方式来管理系统中的处理器资源,以便实现性能优化、功耗管理和平衡负载。下面是Linux内核中的一些主要CPU控制框架和概念:

  1. 调度器(Scheduler): Linux内核使用调度器来决定哪个任务在特定时刻运行在哪个CPU核心上。常见的调度器包括CFS(Completely Fair Scheduler)和实时调度器。调度器的目标是公平地分配CPU时间片,以优化系统的整体性能。

  2. CPU频率调整(CPU Frequency Scaling): Linux支持通过改变处理器频率来节省功耗。这可以通过动态地调整CPU的频率来实现,以便在需要更多性能时提高频率,在负载较低时降低频率。

  3. CPU C-states: CPU C-states指的是不同的处理器电源管理状态,包括C0(正常运行状态)到C6(深度睡眠状态)。在较低的C-states,CPU可以进入更低功耗的状态,从而节省能源。

  4. CPU P-states: CPU P-states指的是不同的处理器性能状态,它们对应于不同的频率和电压设置。通过切换P-states,可以在性能和功耗之间进行权衡。

  5. 任务迁移(Task Migration): 任务迁移是将任务从一个CPU核心迁移到另一个CPU核心的过程。这可以通过调度器自动进行,以实现负载均衡和优化性能。

  6. IRQ Affinity: IRQ(中断请求)亲和性是指将特定的中断与特定的CPU核心关联起来,以减少中断处理的开销。

  7. CPU绑定(CPU Pinning): CPU绑定是指将特定的任务绑定到特定的CPU核心,以提供更精确的控制和性能。

  8. 热插拔(Hotplug): CPU热插拔是指在运行时添加或移除CPU核心的能力。Linux内核支持通过热插拔机制来动态地添加或移除处理器资源。

这些概念和框架共同构成了Linux内核中的CPU控制机制,使系统能够更好地管理处理器资源,以实现性能、功耗和负载的平衡。

RK3566 CPU接口详解

CPU温度

CPU温度:cat /sys/class/thermal/thermal_zone0/temp    
GPU温度:cat /sys/class/thermal/thermal_zone1/temp
  • 1
  • 2

CPU电压

cat /sys/kernel/debug/regulator/vdd_cpu/voltage
查看CPU电压
  • 1
  • 2
cat /sys/kernel/debug/regulator/vdd_cpu/cpu0-cpu/min_uV
#查看最低电压
cat /sys/kernel/debug/regulator/vdd_cpu/cpu0-cpu/max_uV
#查看最高电压
  • 1
  • 2
  • 3
  • 4
设置电压
echo 1150000 > /sys/kernel/debug/regulator/vdd_cpu/voltage 
电压单位:uV
  • 1
  • 2
  • 3

注意:升频时,先升压再升频,降频时,先降频再降压。

cat /sys/kernel/debug/opp/opp_summary
查看频率-电压对照表
  • 1
  • 2
具体某个Hz下的target min max 电压可以通过
/sys/kernel/debug/opp/XXX/opp:XXX/supply-0
接口下的u_volt_max、u_volt_min、u_volt_target进行查询
  • 1
  • 2
  • 3

CPU频率

查看当前CPU频率
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq或者cpuinfo_cur_freq
  • 1
  • 2
查看CPU最大频率
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq或者cpuinfo_max_freq
  • 1
  • 2
查看CPU最小频率
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq或者cpuinfo_min_freq
单位 KHz
  • 1
  • 2
  • 3
查看CPU支持的频率列表
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
  • 1
  • 2
  • 3

设置CPU定频
可以通过设备树中的&cpu0_opp_table 控制

开机后通过命令定频
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo 1800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspe
注意:通过 cpufreq 节点设置 CPU 频率时,通常电压也会被改变。
  • 1
  • 2
  • 3
  • 4
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
关闭CPU自动变频
echo 216000000 > /sys/kernel/debug/clk/armclk/clk_rate /* 设置频率 */ 
cat /sys/kernel/debug/clk/armclkl/clk_rate /* 查看频率 */ 
单位 HZ
echo XXX > /sys/kernel/debug/regulator/vdd_cpu/voltage /*调压*/
cat  /sys/kernel/debug/regulator/vdd_cpu/voltage
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意:升频时,先升压再升频,降频时,先降频再降压。

查看CPU调频策略

内核当前使用的调度策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • 1
  • 2
内核所支持的调用策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
  • 1
  • 2
调用策略使用效果
conservative保守 动态调频
ondemand激进 动态调频 幅度较大
userspace用户态策略 可以使用cpufrequtils 工具
powersave频率始终保持在最低
performance频率始终保持在最高
interactive动态调频 快升慢降 为高性能需求响应服务
schedutilEAS新一代策略 大小核上使用非常合适
定频和测压实践

在这里插入图片描述

CPUFreq参数

在这里插入图片描述
在这里插入图片描述

Interactive策略参数

在这里插入图片描述

功耗高级优化

关闭部分CPU
echo 0 > /sys/devices/system/cpu/cpu2/online /*关闭cpu2*/
  • 1
  • 2
限制频率
echo 1608000 > /sys/devices/system/cpy/cpufreq/policy0/scaling_max_freq  /*限制cpu0最高频率*/
  • 1
  • 2
绑定线程号到指定核

在这里插入图片描述

限制任务带宽

在这里插入图片描述

温度电压限制

在这里插入图片描述

DDR优化

场景变频:不同场景配置不同DDR频率
在这里插入图片描述

  • 负载变频:监控负载,自动调整 DDR 频率,负载变频可能会导致性能下降,可以结合场景变频,
    在某些场景下,固定 DDR 频率。
    在这里插入图片描述
温控设置
关温控

需要 CONFIG_THERMAL_GOV_USER_SPACE=y
如果需要默认关温控,可以打开CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE=y

echo user_space > /sys/class/thermal/thermal_zone0/policy 
  • 1
echo disabled > /sys/class/thermal/thermal_zone0/mode
  • 1

在这里插入图片描述

开启温控trace日志
echo 1 > /sys/kernel/debug/tracing/events/thermal/enable
echo 1 > /sys/kernel/debug/tracing/events/thermal_power_allocator/enable
echo 1 > /sys/kernel/debug/tracing/tracing_on

查看trace
cat /sys/kernel/debug/tracing/trace
停止trace
echo 0 > /sys/kernel/debug/tracing/tracing_on
echo 0 > /sys/kernel/debug/tracing/trace
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
CPU功耗计算公式

动态功耗公式:
C是常量, V是电压, F是频率
P(d)= C * V^2 * F
注:温度是影响功耗的一个重要参数,所以测量功耗的同时需要实时记录温度
获取温度的命令如下:

cat /sys/class/thermal/thermal_zone0/temp
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/457048
推荐阅读
相关标签
  

闽ICP备14008679号