CPU
查看当前CPU频率
/* 方法一:cpufreq 的用户态接口 */
watch -n 1 cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq /* 小核频率*/
watch -n 1 cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq /* 大核频率*/
/* 方法二:clock debug 接口 */
watch -n 1 cat /sys/kernel/debug/clk/armclkl/clk_rate /* 小核频率 */
watch -n 1 cat /sys/kernel/debug/clk/armclkb/clk_rate /* 大核频率 */
查看当前CPU电压
/* 不一定是vdd_core_l和vdd_core_b,根据实际的regulator配置修改*/
watch -n 1 cat /sys/kernel/debug/regulator/vdd_core_l/voltage /* 小核电压*/
watch -n 1 cat /sys/kernel/debug/regulator/vdd_core_b/voltage /* 大核电压*/
查看CPU温度
watch -n 1 cat /sys/class/thermal/thermal_zone0/temp
查看频率电压表
watch -n 1 cat /sys/kernel/debug/opp/opp_summary
CPU定频
/* 切换小核governor到userspace */
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
/* 设置小核216MHz */
echo 216000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
/* 切换大核governor到userspace */
echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
/* 设置大核408MHz */
echo 408000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed
GPU
查看当前GPU频率
/* 方法一:devfreq的用户态接口,不一定是ff400000.gpu,根据不同的平台修改*/
watch -n 1 cat /sys/class/devfreq/fb000000.gpu/cur_freq
/* 方法二:clock debug接口,不一定是aclk_gpu,根据实际的clock配置修改*/
watch -n 1 cat /sys/kernel/debug/clk/scmi_clk_gpu/clk_rate
查看当前GPU电压
/* 不一定是vdd_logic,根据实际的regulator配置修改 */
watch -n 1 cat /sys/kernel/debug/regulator/vdd_gpu_s0/voltage
查看GPU利用率
/*不一定是fb000000.gpu,根据不同的平台修改 */
watch -n 1 cat /sys/devices/platform/fb000000.gpu/devfreq/fb000000.gpu/load
查看GPU温度
watch -n 1 cat /sys/class/thermal/thermal_zone1/temp
输出:
Every 1.0s: cat /sys/class/thermal/thermal_zone1/temp lubancat: Sat Dec 28 16:40:00 2024
30538
GPU定频
/* 切换到userspace,不一定是ff400000.gpu,根据不同的平台修改*/
echo userspace > /sys/class/devfreq/ff400000.gpu/governor
/* 设置400MHz */
echo 400000000 > /sys/class/devfreq/ff400000.gpu/userspace/set_freq
/* 查看当前频率 */
cat /sys/class/devfreq/ff400000.gpu/cur_freq
单独调频调压
注意:升频需要先调压再调频, 降频需要先调频再调压
/* 关闭自动变频,不一定是ff400000.gpu,根据不同的平台修改 */
echo userspace > /sys/class/devfreq/ff400000.gpu/governor
/* 调频,不一定是aclk_gpu,根据实际的clock配置修改 */
echo 400000000 > /sys/kernel/debug/clk/aclk_gpu/clk_rate
cat /sys/kernel/debug/clk/aclk_gpu/clk_rate
/* 调压,不一定是vdd_logic,根据实际的regulator配置修改 */
echo 1000000 > /sys/kernel/debug/regulator/vdd_logic/voltage
cat /sys/kernel/debug/regulator/vdd_logic/voltage
NPU
查看NPU频率
cat /sys/class/devfreq/fdab0000.npu/cur_freq
cat /sys/kernel/debug/clk/clk_summary | grep npu
查询NPU利用率
watch -n 1 cat /sys/kernel/debug/rknpu/load
输出如下:
Every 1.0s: cat /sys/kernel/debug/rknpu/load lubancat: Sat Dec 28 16:44:42 2024
NPU load: Core0: 0%, Core1: 0%, Core2: 0%,
NPU定频
/*不一定是fdab0000.npu,根据不同的平台修改 */
echo userspace > /sys/class/devfreq/fdab0000.npu/governor
echo 1000000000 > /sys/class/devfreq/fdab0000.npu/userspace/set_freq
cat /sys/class/devfreq/fdab0000.npu/cur_freq
查询NPU驱动版本
cat /sys/kernel/debug/rknpu/version
查询NPU电源状态
cat /sys/kernel/debug/rknpu/power
打开/关闭NPU电源
echo on/of > /sys/kernel/debug/rknpu/power
查询NPU工作电压
cat /sys/kernel/debug/rknpu/volt
查询 NPU 动态开关电源,电源延迟关闭时间(单位: ms)
cat /sys/kernel/debug/rknpu/delayms
设置 NPU 动态开关电源,电源延迟关闭时间(单位: ms)
echo 2000 > /sys/kernel/debug/rknpu/delayms
VPU
查看VPU是否有工作
# 启动调试
echo 0x0100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug
# 查看输出
dmesg -w
如果能看到如下信息,说明正在工作:
[ 220.830446] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3644 us
[ 220.873302] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3646 us
[ 220.889479] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3595 us
[ 220.928104] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3595 us
[ 220.966875] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3605 us
[ 220.993482] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3633 us
[ 221.035330] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3638 us
[ 221.063925] rk_vcodec: fdbd0000.rkvenc-core:0 session 11179:1 time: 3645 us
查询VPU驱动版本
cat /proc/mpp_service/version
查看VPU帧率
watch -n 1 cat /proc/mpp_service/sessions-summary
运行时才会显示下面的数据
session iova range dump:
0: 0x00000000ffe00000..0x00000000ffffdfff ( 2040 KiB)
1: 0x00000000ff3c0000..0x00000000ff5bdfff ( 2040 KiB)
2: 0x00000000fdfa0000..0x00000000fe19dfff ( 2040 KiB)
3: 0x00000000fe690000..0x00000000feb75fff ( 5016 KiB)
4: 0x00000000febb0000..0x00000000feec2fff ( 3148 KiB)
5: 0x00000000ff5f0000..0x00000000ff902fff ( 3148 KiB)
6: 0x00000000feb80000..0x00000000feba1fff ( 136 KiB)
7: 0x00000000ff5c0000..0x00000000ff5e1fff ( 136 KiB)
session: pid=40224 index=3
device: fdbd0000.rkvenc-core
memory: 17 MiB
------------------------------------------------------------------------------------------------------------
| session| device| width| height| format| fps_in| fps_out| rc_mode| bitrate|gop_size| profile|
| 3| RKVENC| 1920| 1080| h264| 65535| 65535| fixqp| 2000000| 100| high|
修改频率
echo 600000000 > /proc/mpp_service/rkvenc/clk_core
打开性能模式
echo performance | tee $(find /sys/ -name *governor);
RGA
查询RGA频率
cat /sys/kernel/debug/clk/clk_summary | grep rga //查询rga频率,其中的aclk的频率
结果如下
hclk_rga3_0 0 4 0 198000000 0 0 50000
hclk_rga2 0 2 0 198000000 0 0 50000
hclk_rga3_root 0 1 0 198000000 0 0 50000
hclk_rga3_1 0 4 0 198000000 0 0 50000
clk_rga3_0_core 0 1 0 750000000 0 0 50000
clk_rga2_core 0 1 0 750000000 0 0 50000
aclk_rga3_0 0 4 0 750000000 0 0 50000
aclk_rga2 0 2 0 750000000 0 0 50000
aclk_rga3_root 0 1 0 750000000 0 0 50000
aclk_rga3_1 0 4 0 750000000 0 0 50000
clk_rga3_1_core 0 1 0 750000000 0 0 50000
RGA驱动版本查询
cat /sys/kernel/debug/rkrga/driver_version
查询librga库版本号
strings /usr/lib/aarch64-linux-gnu/librga.so | grep rga_api | grep version
RGA负载查询
watch -n 1 cat /sys/kernel/debug/rkrga/load
RGA内存管理器查询
watch -n 1 cat /sys/kernel/debug/rkrga/mm_session
RGA任务请求查询
watch -n 1 cat /sys/kernel/debug/rkrga/request_manager
打印如下
rga internal request dump:
request count = 1
===============================================================
------------------ request: 24414 ------------------
set cmd num: 1, finish job: 0, failed job: 0, flags = 0x0, ref = 1
cmd dump:
rotate_mode = 1
src: y = d uv = 0 v = c99000 aw = 3840 ah = 2160 vw = 3840 vh = 3440
src: xoff = 0, yoff = 0, format = 0x1e, rd_mode = 1
dst: y=e uv=0 v=1fa400 aw=1920 ah=1080 vw=1920 vh=1080
dst: xoff = 0, yoff = 0, format = 0xa, rd_mode = 1
mmu: mmu_flag=80000521 en=1
alpha: rop_mode = 0
yuv2rgb mode is 0
set core = 3, priority = 0, in_fence_fd = -1
RGA硬件信息查询
cat /sys/kernel/debug/rkrga/hardware
打印如下
===================================
rga3_core0, core 1: version: 3.0.76831
input range: 68x2 ~ 8176x8176
output range: 68x2 ~ 8128x8128
scale limit: 1/8 ~ 8
byte_stride_align: 16
max_byte_stride: 32768
csc: RGB2YUV 0xf YUV2RGB 0xf
feature: 0x4
mmu: RK_IOMMU
-----------------------------------
rga3_core1, core 2: version: 3.0.76831
input range: 68x2 ~ 8176x8176
output range: 68x2 ~ 8128x8128
scale limit: 1/8 ~ 8
byte_stride_align: 16
max_byte_stride: 32768
csc: RGB2YUV 0xf YUV2RGB 0xf
feature: 0x4
mmu: RK_IOMMU
-----------------------------------
rga2, core 4: version: 3.2.63318
input range: 2x2 ~ 8192x8192
output range: 2x2 ~ 4096x4096
scale limit: 1/16 ~ 16
byte_stride_align: 4
max_byte_stride: 32768
csc: RGB2YUV 0x3 YUV2RGB 0x7
feature: 0x205f
mmu: RGA_MMU
-----------------------------------
DDR
查看DDR频率
cat /sys/class/devfreq/dmc/cur_freq
DDR定频
echo userspace > /sys/class/devfreq/dmc/governor
cat /sys/class/devfreq/dmc/available_frequencies
echo 1560000000 > /sys/class/devfreq/dmc/userspace/set_freq
查看DDR带宽利用率
cat /sys/class/devfreq/dmc/load
统计DDR带宽
/* 需要找FAE申请DDR带宽统计工具rk-msch-probe,包含32位和64位对应不同平台 */
./rk-msch-probe-for-user-32bit -c rv1126 -f 924
/* -c rv1126 表示当前芯片为1126, -f 表示当前频率为 924M ,可通过-h 参考具体的命令 */
查看内存信息
cat /proc/meminfo
查看虚拟内存使用情况
cat /proc/vmallocinfo
查看DMA buffer信息
watch -n 1 cat /sys/kernel/debug/dma_buf/bufinfo