12. 查看板卡系统信息#
12.1. 查看总体信息#
1# 安装工具 neofetch
2sudo apt update
3sudo apt install neofetch
4
5# 运行命令
6neofetch
LubanCat-3 debian12系统的效果如下图所示
由上图可以分析出我们目前系统的情况(以LubanCat-3为例)
OS:aarch64架构的Debian12的根文件系统Host:板卡名字 野火LubanCat-3Kernel:6.1.99的linux内核Uptime:在线时间8 minsPackages:已安装了1732个安装包Shell:使用bash 5.2.15Terminal:串口终端/dev/ttyFIQ0CPU:8核,由于使用的是大小核架构,不能显示真实的CPU的频率Memory:总共1957MiB(2G),目前使用了301MiB
12.2. 查看文件系统#
1#使用命令
2df -h
3
4# 实机运行如下
5文件系统 大小 已用 可用 已用% 挂载点
6udev 962M 8.0K 962M 1% /dev
7tmpfs 196M 2.2M 194M 2% /run
8/dev/mmcblk0p3 29G 4.5G 23G 17% /
9tmpfs 979M 0 979M 0% /dev/shm
10tmpfs 5.0M 16K 5.0M 1% /run/lock
11tmpfs 979M 8.0K 979M 1% /tmp
12/dev/mmcblk0p2 124M 55M 64M 47% /boot
13tmpfs 196M 44K 196M 1% /run/user/107
14tmpfs 196M 40K 196M 1% /run/user/0
12.3. 监控工具#
12.3.1. top#
板卡自带的一个监控工具,可以查看进程的一些基本信息
1#使用命令
2top
12.3.2. htop#
htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。 与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
1#使用命令
2htop
htop的一些详细用法(点击跳转链接)
12.3.3. btop#
btop是一款炫酷的性能测试监控分析工具
btop的功能列表包括:
一个受游戏启发的菜单系统
完整的鼠标支持
箭头键选择进程
所选进程的详细统计资料
进程过滤器
轻松地在分类选项之间切换
向所选过程发送信号
通过菜单进行配置
网络I/O的自动缩放图
显示磁盘的IO活动/速度
电池表
自定义预置
1# btop的安装可能需要一定的魔法,如果安装不成功要试试魔法
2
3# 下载源码包
4wget https://github.com/aristocratos/btop/releases/download/v1.2.13/btop-aarch64-linux-musl.tbz
5
6# 解压源码包
7tar xf btop-aarch64-linux-musl.tbz
8
9# 切换目录
10cd btop
11
12# 安装btop
13./install.sh
14
15# 安装成功会像图下所示
注意
btop的运行需要最终端或者窗口支持容纳宽80个字,高24个字,不然会无法使用
1#使用命令
2btop
btop官方用法
btop文档详解(点击跳转链接)
12.4. 查看CPU信息#
/proc/cpuinfo文件存储了CPU的信息,可通过如下命令查看:
1cat /proc/cpuinfo
2
3#3576的查看信息如下图所示
4
5cat@lubancat:~$ cat /proc/cpuinfo
6processor : 0
7BogoMIPS : 2000.00
8Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
9CPU implementer : 0x41
10CPU architecture: 8
11CPU variant : 0x0
12CPU part : 0xd03
13CPU revision : 4
14
15processor : 1
16BogoMIPS : 2000.00
17Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
18CPU implementer : 0x41
19CPU architecture: 8
20CPU variant : 0x0
21CPU part : 0xd03
22CPU revision : 4
23
24processor : 2
25BogoMIPS : 2000.00
26Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
27CPU implementer : 0x41
28CPU architecture: 8
29CPU variant : 0x0
30CPU part : 0xd03
31CPU revision : 4
32
33processor : 3
34BogoMIPS : 2000.00
35Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
36CPU implementer : 0x41
37CPU architecture: 8
38CPU variant : 0x0
39CPU part : 0xd03
40CPU revision : 4
41
42processor : 4
43BogoMIPS : 2000.00
44Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
45CPU implementer : 0x41
46CPU architecture: 8
47CPU variant : 0x1
48CPU part : 0xd08
49CPU revision : 0
50
51processor : 5
52BogoMIPS : 2000.00
53Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
54CPU implementer : 0x41
55CPU architecture: 8
56CPU variant : 0x1
57CPU part : 0xd08
58CPU revision : 0
59
60processor : 6
61BogoMIPS : 2000.00
62Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
63CPU implementer : 0x41
64CPU architecture: 8
65CPU variant : 0x1
66CPU part : 0xd08
67CPU revision : 0
68
69processor : 7
70BogoMIPS : 2000.00
71Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
72CPU implementer : 0x41
73CPU architecture: 8
74CPU variant : 0x1
75CPU part : 0xd08
76CPU revision : 0
77
78Serial : 1570bd4f97d5fb31
1//ARM_CPU_PART的定义
2
3#define ARM_CPU_PART_AEM_V8 0xD0F
4#define ARM_CPU_PART_FOUNDATION 0xD00
5#define ARM_CPU_PART_CORTEX_A57 0xD07
6#define ARM_CPU_PART_CORTEX_A72 0xD08
7#define ARM_CPU_PART_CORTEX_A53 0xD03
8#define ARM_CPU_PART_CORTEX_A73 0xD09
9#define ARM_CPU_PART_CORTEX_A75 0xD0A
10#define ARM_CPU_PART_CORTEX_A35 0xD04
11#define ARM_CPU_PART_CORTEX_A55 0xD05
12#define ARM_CPU_PART_CORTEX_A76 0xD0B
13#define ARM_CPU_PART_NEOVERSE_N1 0xD0C
14#define ARM_CPU_PART_CORTEX_A77 0xD0D
15#define ARM_CPU_PART_NEOVERSE_V1 0xD40
16#define ARM_CPU_PART_CORTEX_A78 0xD41
17#define ARM_CPU_PART_CORTEX_A78AE 0xD42
18#define ARM_CPU_PART_CORTEX_X1 0xD44
19#define ARM_CPU_PART_CORTEX_A510 0xD46
20#define ARM_CPU_PART_CORTEX_A710 0xD47
21#define ARM_CPU_PART_CORTEX_X2 0xD48
22#define ARM_CPU_PART_NEOVERSE_N2 0xD49
23#define ARM_CPU_PART_CORTEX_A78C 0xD4B
由上面的信息,可以看到lbc4的cpu内有8个核心
0-3的核心用的是0xd03,查阅上面的ARM_CPU_PART定义可知该为 CORTEX_A53。
4-7的核心用的是0xd08,查阅上面的ARM_CPU_PART定义可知该为 CORTEX_A72。
可得RK3576系列芯片由4xCORTEX_A72+4xCORTEX_A5相组成
12.5. 查看SOC频率#
查看CPU的频率
默认为变频模式,频率的会随当前的应用的变化而变化
1cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
2
3# 实机运行如下(当前四个小核跑到0.6GHz 四个大核跑到408MHz)
4cat@lubancat:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
5600000
6600000
7600000
8600000
9408000
10408000
11408000
12408000
13cat@lubancat:~$
查看GPU的频率
默认为变频模式,频率的会随当前的应用的变化而变化
1cat /sys/class/devfreq/27800000.gpu/cur_freq
2
3# 实机运行如下(GPU当前的频率为300MHz)
4cat@lubancat:~$ cat /sys/class/devfreq/27800000.gpu/cur_freq
5300000000
查看npu的频率
默认为变频模式,频率的会随当前的应用的变化而变化
1# 查看当前npu频率
2root@lubancat:~# cat /sys/class/devfreq/27700000.npu/cur_freq
3300000000
查看DDR频率
默认为变频模式,频率的会随当前的应用的变化而变化
1cat /sys/class/devfreq/dmc/cur_freq
2
3# 实机运行如下(npu当前的频率为750MHz)
4cat@lubancat:~$ cat /sys/class/devfreq/dmc/cur_freq
5528000000
6cat@lubancat:~$
12.6. 查看SOC温度#
LubanCat-3使用Thermal来对芯片的温度进行监测
1# 列出thermal的所有的设备
2ls /sys/class/thermal
3
4root@lubancat:~# ls /sys/class/thermal/
5cooling_device0 cooling_device3 thermal_zone1 thermal_zone4
6cooling_device1 cooling_device4 thermal_zone2 thermal_zone5
7cooling_device2 thermal_zone0 thermal_zone3
可以看到文件里面有5个cooling_device,6个thermal_zone
cooling_device是当SOC达到温控时,SOC降低自身设备的一些功耗,用于降低温度
cooling_device0对应的SOC的四个小核的降频设备
cooling_device1对应的SOC的四个大核的降频设备
cooling_device2对应的SOC的GPU的降频设备
cooling_device3对应的SOC的DDR的降频设备
cooling_device4对应的SOC的NPU的降频设备
thermal_zone是SOC内部的温度监控点
thermal_zone0对应的是SOC主要的温度监控,cooling_device的启动和关闭都是依赖该设备
thermal_zone1对应的是SOC的其中四个大核的温度监控
thermal_zone2对应的是SOC的其中四个小核的温度监控
thermal_zone3对应的是SOC的DDR的温度监控
thermal_zone4对应的是SOC的NPU的温度监控
thermal_zone5对应的是SOC的GPU的温度监控
1cat /sys/class/thermal/thermal_zone0/temp
2
3# 其他的温控监察点也可以像上面一样操作查看温度
12.7. SOC调度#
12.7.1. CPU调度策略(簇)#
为了方便,这里只讲述lubancat-3的簇的调度策略,单独核心的调度策略类似于簇的,可以照猫画虎
lubancat-3的CPU调度策略(簇)不是单独控制每个个核心变频的,我们将8个核心分为2簇
1# 可以看到共分为3簇,分别对应上面的核心配置
2ls /sys/devices/system/cpu/cpufreq/
3policy0 policy4
四个CORTEX_A53核心 -- policy0
四个CORTEX_A72核心 -- policy4
这样的话控制就方便很多,通过控制簇来实现对SOC整体性能的控制.
配置这些簇定频的方法很简单:
1# 查看当前的SOC的调度策略
2cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
3
4# 实机运行如下(当前SOC的调频策略为ondemand)
5cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
6ondemand
7cat@lubancat:~$
8
9# 查看SOC所有的调度策略
10cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
11
12# 实机运行如下(有7种)
13cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
14interactive conservative ondemand userspace powersave performance schedutil
15cat@lubancat:~$
conservative:根据 CPU 负载动态调频,按一定的比例平滑的升高或降低频率。
ondemand:根据 CPU 负载动态调频,调频幅度比较大,可直接调到最高频或最低频。
interactive:根据 CPU 负载动态调频,相比 ondemand,响应时间更快,可配置参数更多,更灵活。
userspace:提供相应接口供用户态应用程序调整频率。
powersave:功耗优先,始终将频率设置在最低值。
performance:性能优先,始终将频率设置为最高值。
schedutil:EAS 使用 governor。EAS(Energy Aware Scheduling)是新一代的任务调度策略, 结合 CPUFreq和 CPUIdle 的策略, 在为某个任务选择运行 CPU 时, 同时考虑了性能和功耗, 保证了系统能耗最低,并且不会对性能造成影响。 Schedutil 调度策略就是专门给 EAS 使用的 CPU 调频策略
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 查看支持的调度策略
6cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
7
8# 调整为你需要要的调度策略(以performance为例)
9echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 将策略调整为 ``userspace``
6echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
7
8# 查看 CPU 可用频率
9cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
10
11# 实机运行如下(有9种)
12cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
13408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000
14cat@lubancat:~$
15
16# 设置频率(设置为600MHz)
17echo 600000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
12.7.2. GPU调度策略#
1# 查看当前的GPU的调度策略
2cat /sys/class/devfreq/27800000.gpu/governor
3
4# 查看支持的GPU的调度策略
5cat /sys/class/devfreq/27800000.gpu/asvailable_governors
6
7# 实机运行如下(有7种)
8cat@lubancat:~$ cat /sys/class/devfreq/27800000.gpu/available_governors
9rknpu_ondemand dmc_ondemand vop2_ondemand userspace powersave performance simple_ondemand
10cat@lubancat:~$
rknpu_ondemand: 针对 Rockchip NPU,动态调整频率以应对负载变化。
dmc_ondemand: 调整内存控制器频率,根据需求优化内存带宽。
vop2_ondemand: 调整视频输出处理器的频率,以应对视频负载。
userspace: 允许用户直接控制频率。
powersave: 最低频率,节省功耗。
performance: 最大频率,提升性能。
simple_ondemand: 简化版的按需调整频率策略。
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 调整为你需要的调度策略(以performance为例)
6echo performance > /sys/class/devfreq/27800000.gpu/governor
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 将策略调整为 ``userspace``
6echo userspace > /sys/class/devfreq/27800000.gpu/governor
7
8# 查看 CPU 可用频率
9cat /sys/class/devfreq/27800000.gpu/available_frequencies
10
11# 实机运行如下(支持7个频率)
12cat@lubancat:~$ cat /sys/class/devfreq/27800000.gpu/available_frequencies
13900000000 800000000 700000000 600000000 500000000 400000000 300000000
14cat@lubancat:~$
15
16# 设置频率(设置为400MHz)
17echo 400000000 > /sys/class/devfreq/27800000.gpu/userspace/set_freq
12.7.3. DDR调度#
1#列出DDR当前的调度模式
2cat /sys/class/devfreq/dmc/governor
3
4# 实机运行如下
5cat@lubancat:~$ cat /sys/class/devfreq/dmc/governor
6dmc_ondemand
7cat@lubancat:~$
8
9
10#列出DDR支持的调度模式
11cat /sys/class/devfreq/dmc/available_governors
12
13# 实机运行如下
14cat@lubancat:~$ cat /sys/class/devfreq/dmc/available_governors
15rknpu_ondemand dmc_ondemand vop2_ondemand userspace powersave performance simple_ondemand
16cat@lubancat:~$
rknpu_ondemand: 针对 Rockchip NPU,动态调整频率以应对负载变化。
dmc_ondemand: 调整内存控制器频率,根据需求优化内存带宽。
vop2_ondemand: 调整视频输出处理器的频率,以应对视频负载。
userspace: 允许用户直接控制频率。
powersave: 最低频率,节省功耗。
performance: 最大频率,提升性能。
simple_ondemand: 简化版的按需调整频率策略。
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 调整为你需要的调度策略(以performance为例)
6echo performance > /sys/class/devfreq/dmc/governor
1# 该配置需要使用root用户进行操作
2su root
3# 输入你的密码(默认为"root")
4
5# 将策略调整为 ``userspace``
6echo userspace > /sys/class/devfreq/dmc/governor
7
8# 查看 CPU 可用频率
9cat /sys/class/devfreq/dmc/available_frequencies
10
11# 实机运行如下(支持4个频率)
12cat@lubancat:~$ cat /sys/class/devfreq/dmc/available_frequencies
13528000000 1068000000 1560000000 2112000000
14cat@lubancat:~$
15
16# 设置频率(设置为1560MHz)
17echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq
12.7.4. npu定频#
1# 查看NPU查看可用的频率
2cat /sys/class/devfreq/27700000.npu/available_frequencies
3
4#手动切换 userspace模式
5echo userspace > /sys/class/devfreq/27700000.npu/governor
6
7#设置频率900Mhz
8echo 900000000 > /sys/class/devfreq/27700000.npu/userspace/set_freq
9
10查看频率是否成功设置
11cat /sys/class/devfreq/27700000.npu/cur_freq
提示
以上是临时生效,重启失效,如果需要永久固定,可以在/etc/init.d/boot_init.sh末尾添加以上命令。