#!/bin/bash # RK3588 硬件资源监控脚本 echo "========== RK3588 Hardware Monitor ==========" echo "Time: $(date '+%Y-%m-%d %H:%M:%S')" echo "" # NPU负载 echo "--- NPU Load ---" cat /proc/rknpu/load 2>/dev/null || echo "N/A" echo "" # 温度 echo "--- Temperatures ---" for f in /sys/class/thermal/thermal_zone*/temp; do [ -f "$f" ] || continue zone=$(echo $f | grep -o 'thermal_zone[0-9]*') type=$(cat $(dirname $f)/type 2>/dev/null || echo "unknown") temp=$(cat $f 2>/dev/null) [ -n "$temp" ] && printf "%s (%s): %3d°C\n" "$zone" "$type" $((temp/1000)) done echo "" # MPP编码器会话 echo "--- MPP Encoder Sessions ---" grep -A2 "RKVENC" /proc/mpp_service/sessions-summary 2>/dev/null | grep -E "session|RKVENC|fps_calc" | head -20 echo "" # CPU使用率 (3秒采样) echo "--- CPU Usage (3s avg) ---" # 第一次采样 read cpu_a user_a nice_a sys_a idle_a rest < /proc/stat total_a=$((user_a+nice_a+sys_a+idle_a)) sleep 3 # 第二次采样 read cpu_b user_b nice_b sys_b idle_b rest < /proc/stat total_b=$((user_b+nice_b+sys_b+idle_b)) total_d=$((total_b-total_a)) idle_d=$((idle_b-idle_a)) if [ $total_d -gt 0 ]; then usage=$((100*(total_d-idle_d)/total_d)) echo "Total CPU: ${usage}%" else echo "Total CPU: N/A" fi echo "" # 内存 echo "--- Memory ---" free -h | grep -E "Mem|Swap" echo "" # DDR频率 echo "--- DDR Frequency ---" cat /sys/kernel/debug/clk/clk_summary 2>/dev/null | grep -E "ddr" | head -3 echo ""