跳到主要内容

SoC信息

查看总体信息

# 安装工具 neofetch
sudo apt update
sudo apt install neofetch

# 运行命令
neofetch

执行结果如下所示

Board

  1. OS :aarch64 架构的 Debian11 的根文件系统
  2. Host :Rockchip RK3588 TOYBRICK X10 Board
  3. Kernel :5.10.110 的 linux 内核
  4. Uptime :在线时间 21 分钟
  5. Packages :已安装了 1688 个安装包
  6. Shell :使用 bash 5.1.4
  7. Resolution :屏幕显示的分辨率 1536x864
  8. CPU :8 核,由于使用的是大小核架构,不能显示真实的 CPU 的频率
  9. Memory :总共 7920MiB(8G), 目前使用了 784MiB

查看文件系统

# 使用如下命令查看文件系统
toybrick@debian:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 4.4G 23G 16% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 19M 1.6G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/mmcblk0p3 63M 37M 24M 61% /boot
tmpfs 792M 92K 792M 1% /run/user/1000

SoC信息监控

top命令

开发板自带top监控工具,可以查看进程的一些基本信息,按'q'键退出

# 使用top命令
top

top

htop命令

htop 是 Linux 系统中的一个互动的进程查看器,与 Linux 传统的 top 相比,htop 更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

# 使用htop命令
htop

htop

htop的详细使用方法(点击跳转)

查看CPU信息

# 命令cat /proc/cpuinfo 用于查看 CPU 的信息:

cat /proc/cpuinfo

cpuinfo

通过ARM_CPU_PART的定义,可以查看对应的CPU核信息

//ARM_CPU_PART 的定义
#define ARM_CPU_PART_AEM_V8 0xD0F
#define ARM_CPU_PART_FOUNDATION 0xD00
#define ARM_CPU_PART_CORTEX_A57 0xD07
#define ARM_CPU_PART_CORTEX_A72 0xD08
#define ARM_CPU_PART_CORTEX_A53 0xD03
#define ARM_CPU_PART_CORTEX_A73 0xD09
#define ARM_CPU_PART_CORTEX_A75 0xD0A
#define ARM_CPU_PART_CORTEX_A35 0xD04
#define ARM_CPU_PART_CORTEX_A55 0xD05
#define ARM_CPU_PART_CORTEX_A76 0xD0B
#define ARM_CPU_PART_NEOVERSE_N1 0xD0C
#define ARM_CPU_PART_CORTEX_A77 0xD0D
#define ARM_CPU_PART_NEOVERSE_V1 0xD40
#define ARM_CPU_PART_CORTEX_A78 0xD41
#define ARM_CPU_PART_CORTEX_A78AE 0xD42
#define ARM_CPU_PART_CORTEX_X1 0xD44
#define ARM_CPU_PART_CORTEX_A510 0xD46
#define ARM_CPU_PART_CORTEX_A710 0xD47
#define ARM_CPU_PART_CORTEX_X2 0xD48
#define ARM_CPU_PART_NEOVERSE_N2 0xD49
#define ARM_CPU_PART_CORTEX_A78C 0xD4B

查看内存信息

  • 方式1
# 通过/proc/meminfo查看内存相关信息:

cat /proc/meminfo

meminfo

  • 方式2:
# 通过free查看内存相关信息
toybrick@debian:~$ free -h

free

查看SoC频率

查看CPU频率

默认为变频模式,频率的会随当前的应用的变化而变化

# 命令cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq查看当前CPU频率
# 查看CPU频率(合计8个核,具体核顺序可参考cat /proc/cpuinfo)

toybrick@debian:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
816000
816000
816000
816000
408000
408000
408000
408000

修改CPU频率模式,可跳转参考

查看GPU的频率

默认为变频模式,频率的会随当前的应用的变化而变化

# 命令cat /sys/class/devfreq/fb000000.gpu/cur_freq查看当前GPU频率
# GPU 当前的频率为 300MHz

toybrick@debian:~$ cat /sys/class/devfreq/fb000000.gpu/cur_freq
300000000

查看NPU的频率

默认为变频模式,频率的会随当前的应用的变化而变化

# 命令sudo cat /sys/kernel/debug/clk/clk_summary | grep clk_npu_dsu0查看当前NPU的频率
# NPU当前的频率为250MHz(需要超级用户权限)

toybrick@debian:~$ sudo cat /sys/kernel/debug/clk/clk_summary | grep clk_npu_dsu0
clk_npu_dsu0 0 6 0 250000000 0 0 50000

查看DDR的频率

默认为变频模式,频率的会随当前的应用的变化而变化

# 命令cat /sys/class/devfreq/dmc/cur_freq查看当前DDR的频率
# DDR当前的频率为528MHz

toybrick@debian:~$ cat /sys/class/devfreq/dmc/cur_freq
528000000

查看SoC温度

通过thermal进行芯片温度的检测

# 命令ls /sys/class/thermal列出 thermal 的所有的设备

toybrick@debian:~$ ls /sys/class/thermal
cooling_device0 cooling_device3 thermal_zone2 thermal_zone5
cooling_device1 thermal_zone0 thermal_zone3 thermal_zone6
cooling_device2 thermal_zone1 thermal_zone4

可以看到文件里面有四个 cooling_device,7 个 thermal_zone。

cooling_device 是当 SOC 达到温控时,SOC 降低自身设备的一些功耗,用于降低温度

  1. cooling_device0 对应的 SOC 的四个小核的降频设备
  2. cooling_device1 对应的 SOC 的其中两个大核的降频设备
  3. cooling_device2 对应的 SOC 的另外两个大核的降频设备
  4. cooling_device3 对应的 SOC 的 GPU 的降频设备

thermal_zone 是 SOC 内部的温度监控点

  1. thermal_zone0 对应的是 SOC 主要的温度监控,cooling_device 的启动和关闭都是依赖该设备
  2. thermal_zone1 对应的是 SOC 的其中两个大核的温度监控
  3. thermal_zone2 对应的是 SOC 的另外两个大核的温度监控
  4. thermal_zone3 对应的是 SOC 的四个小核的温度监控
  5. thermal_zone4 对应的是芯片中心温度监控
  6. thermal_zone5 对应的是 SOC 的 GPU 的温度监控
  7. thermal_zone6 对应的是 SOC 的 npu 的温度监控
# 命令cat /sys/class/thermal/thermal_zone0/temp查看当前SoC主要的温度监控
# 当前温度39.769℃

toybrick@debian:~$ cat /sys/class/thermal/thermal_zone0/temp
39769

# 其他的温控监察点也可以像上面一样操作查看温度

SoC调度

CPU 调度策略 (簇)

CPU 调度策略 (簇) 不是单独控制每个个核心变频的,我们将 8 个核心分为 3 簇

# 可以看到共分为 3 簇,分别对应上面的核心配置
ls /sys/devices/system/cpu/cpufreq/
policy0 policy4 policy6
  1. 四个 CORTEX_A55 核心–policy0
  2. 两个 CORTEX_A76 核心–policy4
  3. 两个 CORTEX_A76 核心–policy6

通过控制簇来实现对 SOC 整体性能的控制

# 查看当前的 SOC 的调度策略
# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
# 当前 SOC 的调频策略为schedutil

toybrick@debian:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
schedutil

# 查看 SOC 所有的调度策略
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors

# 总共有7种调度策略
interactive conservative ondemand userspace powersave performance schedutil
说明
  • conservative:根据 CPU 负载动态调频,按一定的比例平滑的升高或降低频率
  • ondemand:根据 CPU 负载动态调频,调频幅度比较大,可直接调到最高频或最低频
  • interactive:根据 CPU 负载动态调频,相比 ondemand,响应时间更快,可配置参数更多,更灵活
  • userspace:提供相应接口供用户态应用程序调整频率
  • powersave:功耗优先,始终将频率设置在最低值
  • performance:性能优先,始终将频率设置为最高值
  • schedutil:EAS 使用 governor。EAS(Energy Aware Scheduling)是新一代的任务调度策略,结合 CPUFreq 和 CPUIdle 的策略,在为某个任务选择运行 CPU 时,同时考虑了性能和功耗,保证了系统能耗最低,并且不会对性能造成影响。Schedutil 调度策略就是专门给 EAS 使用的 CPU 调频策略

如下列举一些CPU簇调度相关的设置:

  • 簇调度策略的设置
# 簇调度策略的设置
# 需要用root权限
sudo -s
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
# 调整为你需要要的调度策略(以 performance 为例)
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
  • 簇定频策略设置 (以 policy0 为例)
# 需要用root权限
sudo -s

# 将策略调整为 ``userspace``
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

# 查看 CPU 可用频率
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies

GPU调度

# 查看当前的 GPU 的调度策略
cat /sys/class/devfreq/fb000000.gpu/governor

# 查看支持的 GPU 的调度策略
cat /sys/class/devfreq/fb000000.gpu/asvailable_governors

# GPU调度策略有如下5种
dmc_ondemand userspace powersave performance simple_ondemand
说明
  • simple ondemand:根据负载动态调频。
  • userspace:提供相应接口供用户态应用程序调整频率。
  • powersave:功耗优先,始终将频率设置在最低值。
  • performance:性能优先,始终将频率设置为最高值。
  • dmc_ondemand:simple ondemand 的基础上,增加场景变频的支持,DDR 变频专用。

NPU调度

# 查看当前NPU的频率
cat /sys/class/devfreq/fdab0000.npu/cur_freq

# 查看当前NPU调度的模式
cat /sys/class/devfreq/fdab0000.npu/governor

# 手动切换 userspace 模式
echo userspace > /sys/class/devfreq/fdab0000.npu/governor

# 设置频率 1GHz
echo 1000000000 > /sys/class/devfreq/fdab0000.npu/userspace/set_freq

DDR调度

# 列出 DDR 当前的调度模式
cat /sys/class/devfreq/dmc/governor

# 列出 DDR 支持的调度模式
cat /sys/class/devfreq/dmc/available_governors

# 查看 DDR 当前的频率
cat /sys/class/devfreq/dmc/cur_freq

# DDR调度策略有如下5种
dmc_ondemand userspace powersave performance simple_ondemand
说明
  • simple ondemand:根据负载动态调频。
  • userspace:提供相应接口供用户态应用程序调整频率。
  • powersave:功耗优先,始终将频率设置在最低值。
  • performance:性能优先,始终将频率设置为最高值。
  • dmc_ondemand:simple ondemand 的基础上,增加场景变频的支持,DDR 变频专用。