11. 查看板卡系统信息

11.1. 查看总体信息

1
2
3
4
5
6
# 安装工具 neofetch
sudo apt update
sudo apt install neofetch

# 运行命令
neofetch
  • debian11系统的效果如下图所示

../../_images/neofetch.png

由上图可以分析出我们目前系统的情况

  1. OS :aarch64架构的Debian11的根文件系统

  2. Host :板卡名字 野火LubanCat-4

  3. Kernel :5.10.160的linux内核

  4. Uptime :在线时间16小时40分钟

  5. Packages :已安装了1636个安装包

  6. Shell :使用bash 5.1.4

  7. Resolution :屏幕显示的分辨率1920x1080

  8. CPU :8核,由于使用的是大小核架构,不能显示真实的CPU的频率

  9. Memory :总共7918MiB(8G),目前使用了535MiB

11.2. 查看文件系统

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#使用命令
df -h

# 实机运行如下
root@lubancat:~# df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            3.9G  8.0K  3.9G    1% /dev
tmpfs           792M  1.8M  791M    1% /run
/dev/mmcblk0p3   58G  4.2G   51G    8% /
tmpfs           3.9G     0  3.9G    0% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G  8.0K  3.9G    1% /tmp
/dev/mmcblk0p2  124M   56M   62M   48% /boot
tmpfs           792M   60K  792M    1% /run/user/1000
tmpfs           792M   44K  792M    1% /run/user/0
root@lubancat:~#

11.3. 监控工具

11.3.1. top

LBC4自带的一个监控工具,可以查看进程的一些基本信息

1
2
#使用命令
top
../../_images/top.png

11.3.2. htop

htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。 与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

1
2
#使用命令
htop
../../_images/htop.png

htop的一些详细用法(点击跳转链接)

11.3.3. btop

btop是一款炫酷的性能测试监控分析工具

btop的功能列表包括:

  • 一个受游戏启发的菜单系统

  • 完整的鼠标支持

  • 箭头键选择进程

  • 所选进程的详细统计资料

  • 进程过滤器

  • 轻松地在分类选项之间切换

  • 向所选过程发送信号

  • 通过菜单进行配置

  • 网络I/O的自动缩放图

  • 显示磁盘的IO活动/速度

  • 电池表

  • 自定义预置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# btop的安装可能需要一定的魔法,如果安装不成功要试试魔法

# 下载源码包
wget https://github.com/aristocratos/btop/releases/download/v1.2.13/btop-aarch64-linux-musl.tbz

# 解压源码包
tar xf btop-aarch64-linux-musl.tbz

# 切换目录
cd btop

# 安装btop
./install.sh

# 安装成功会像图下所示
../../_images/btop_install.png

注意

btop的运行需要最终端或者窗口支持容纳宽80个字,高24个字,不然会无法使用

1
2
#使用命令
btop
../../_images/btop.png

btop官方用法

../../_images/btop_usage.png

btop文档详解(点击跳转链接)

11.4. 查看CPU信息

/proc/cpuinfo文件存储了CPU的信息,可通过如下命令查看:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
cat /proc/cpuinfo

#3588s的查看信息如下图所示

cat@lubancat:~$ cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x2
CPU part        : 0xd05
CPU revision    : 0

processor       : 1
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x2
CPU part        : 0xd05
CPU revision    : 0

processor       : 2
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x2
CPU part        : 0xd05
CPU revision    : 0

processor       : 3
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x2
CPU part        : 0xd05
CPU revision    : 0

processor       : 4
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x4
CPU part        : 0xd0b
CPU revision    : 0

processor       : 5
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x4
CPU part        : 0xd0b
CPU revision    : 0

processor       : 6
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x4
CPU part        : 0xd0b
CPU revision    : 0

processor       : 7
BogoMIPS        : 48.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x4
CPU part        : 0xd0b
CPU revision    : 0

Serial          : cee3557a7891ec2b
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//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

由上面的信息,可以看到lbc4的cpu内有8个核心

  • 0-3的核心用的是0xD05,查阅上面的ARM_CPU_PART定义可知该为 CORTEX_A55。

  • 4-7的核心用的是0xD0B,查阅上面的ARM_CPU_PART定义可知该为 CORTEX_A76

  • 可得RK3588系列芯片由4xCORTEX_A76+4xCORTEX_A55相组成

11.5. 查看SOC频率

  • 查看CPU的频率

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

# 实机运行如下(四个小核跑到1.2GHz 四个大核跑到408MHz)
cat@lubancat:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1200000
1200000
1200000
1200000
408000
408000
408000
408000
cat@lubancat:~$
  • 查看GPU的频率

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

1
2
3
4
5
6
cat /sys/class/devfreq/fb000000.gpu/cur_freq

# 实机运行如下(GPU当前的频率为300MHz)
cat@lubancat:~$ cat /sys/class/devfreq/fb000000.gpu/cur_freq
300000000
cat@lubancat:~$
  • 查看npu的频率

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

1
2
3
4
5
6
sudo cat /sys/kernel/debug/clk/clk_summary | grep clk_npu_dsu0

# 实机运行如下(npu当前的频率为750MHz)
cat@lubancat:~$ sudo cat /sys/kernel/debug/clk/clk_summary | grep clk_npu_dsu0
clk_npu_dsu0                0        3        0   750000000          0     0  50000
cat@lubancat:~$
  • 查看DDR频率

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

1
2
3
4
5
6
cat /sys/class/devfreq/dmc/cur_freq

# 实机运行如下(npu当前的频率为750MHz)
cat@lubancat:~$ cat /sys/class/devfreq/dmc/cur_freq
528000000
cat@lubancat:~$

11.6. 查看SOC温度

LubanCat-4使用Thermal来对芯片的温度进行监测

1
2
3
4
5
6
7
# 列出thermal的所有的设备
ls /sys/class/thermal

root@lubancat:~# 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的温度监控

查看SOC主要的温度监控
1
2
3
cat /sys/class/thermal/thermal_zone0/temp

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

11.7. SOC调度

11.7.1. CPU调度策略(簇)

为了方便,这里只讲述LubanCat-4的簇的调度策略,单独核心的调度策略类似于簇的,可以照猫画虎

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

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

  2. 两个CORTEX_A76核心 – policy4

  3. 两个CORTEX_A76核心 – policy6

这样的话控制就方便很多,通过控制簇来实现对SOC整体性能的控制

配置这些簇定频的方法很简单

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 查看当前的SOC的调度策略
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

# 实机运行如下(当前SOC的调频策略为ondemand)
cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
ondemand
cat@lubancat:~$

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

# 实机运行如下(有7种)
cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
interactive conservative ondemand userspace powersave performance schedutil
cat@lubancat:~$
  • conservative:根据 CPU 负载动态调频,按一定的比例平滑的升高或降低频率。

  • ondemand:根据 CPU 负载动态调频,调频幅度比较大,可直接调到最高频或最低频。

  • interactive:根据 CPU 负载动态调频,相比 ondemand,响应时间更快,可配置参数更多,更灵活。

  • userspace:提供相应接口供用户态应用程序调整频率。

  • powersave:功耗优先,始终将频率设置在最低值。

  • performance:性能优先,始终将频率设置为最高值。

  • schedutil:EAS 使用 governor。EAS(Energy Aware Scheduling)是新一代的任务调度策略, 结合 CPUFreq和 CPUIdle 的策略, 在为某个任务选择运行 CPU 时, 同时考虑了性能和功耗, 保证了系统能耗最低,并且不会对性能造成影响。 Schedutil 调度策略就是专门给 EAS 使用的 CPU 调频策略

簇调度策略设置(以policy0为例)
1
2
3
4
5
6
7
8
9
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

# 查看支持的调度策略
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors

# 调整为你需要要的调度策略(以performance为例)
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
簇定频策略设置(以policy0为例)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

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

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

# 实机运行如下(有8种)
cat@lubancat:~$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
408000 600000 816000 1008000 1200000 1416000 1608000 1800000
cat@lubancat:~$

# 设置频率(设置为600MHz)
echo 600000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed

11.7.2. GPU调度策略

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 查看当前的GPU的调度策略
cat /sys/class/devfreq/fb000000.gpu/governor

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

# 实机运行如下(有7种)
cat@lubancat:~$ cat /sys/class/devfreq/fb000000.gpu/available_governors
dmc_ondemand userspace powersave performance simple_ondemand
cat@lubancat:~$
  • simple ondemand:根据负载动态调频。

  • userspace:提供相应接口供用户态应用程序调整频率。

  • powersave:功耗优先,始终将频率设置在最低值。

  • performance:性能优先,始终将频率设置为最高值。

  • dmc_ondemand:simple ondemand 的基础上,增加场景变频的支持,DDR 变频专用。

GPU调度策略设置
1
2
3
4
5
6
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

# 调整为你需要的调度策略(以performance为例)
echo performance > /sys/class/devfreq/fb000000.gpu/governor
GPU定频策略设置
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

# 将策略调整为 ``userspace``
echo userspace > /sys/class/devfreq/fb000000.gpu/governor

# 查看 CPU 可用频率
cat /sys/class/devfreq/fb000000.gpu/available_frequencies

# 实机运行如下(支持8个频率)
cat@lubancat:~$ cat /sys/class/devfreq/fb000000.gpu/available_frequencies
1000000000 900000000 800000000 700000000 600000000 500000000 400000000 300000000
cat@lubancat:~$

# 设置频率(设置为400MHz)
echo 400000000 > /sys/class/devfreq/fb000000.gpu/userspace/set_freq

11.7.3. DDR调度

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#列出DDR当前的调度模式
cat /sys/class/devfreq/dmc/governor

# 实机运行如下
cat@lubancat:~$ cat /sys/class/devfreq/dmc/governor
dmc_ondemand
cat@lubancat:~$


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

# 实机运行如下
cat@lubancat:~$ cat /sys/class/devfreq/dmc/available_governors
dmc_ondemand userspace powersave performance simple_ondemand
cat@lubancat:~$
  • simple ondemand:根据负载动态调频。

  • userspace:提供相应接口供用户态应用程序调整频率。

  • powersave:功耗优先,始终将频率设置在最低值。

  • performance:性能优先,始终将频率设置为最高值。

  • dmc_ondemand:simple ondemand 的基础上,增加场景变频的支持,DDR 变频专用。

DDR调度策略设置
1
2
3
4
5
6
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

# 调整为你需要的调度策略(以performance为例)
echo performance > /sys/class/devfreq/dmc/governor
DDR定频策略设置
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 该配置需要使用root用户进行操作
su root
# 输入你的密码(默认为"root")

# 将策略调整为 ``userspace``
echo userspace > /sys/class/devfreq/dmc/governor

# 查看 CPU 可用频率
cat /sys/class/devfreq/dmc/available_frequencies

# 实机运行如下(支持4个频率)
cat@lubancat:~$ cat /sys/class/devfreq/dmc/available_frequencies
528000000 1068000000 1560000000 2112000000
cat@lubancat:~$

# 设置频率(设置为1560MHz)
echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq

11.7.4. npu定频

手动切换 userspace模式
1
2
3
4
5
6
7
8
#手动切换 userspace模式
echo userspace > /sys/class/devfreq/fdab0000.npu/governor

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

查看频率是否成功设置
cat /sys/class/devfreq/fdab0000.npu/cur_freq

提示

以上是临时生效,重启失效,如果需要永久固定,可以在/etc/init.d/boot_init.sh末尾添加以上命令。

11.8. FAQs