OrangePi3588Media/scripts/monitor_hw.sh

57 lines
1.4 KiB
Bash
Executable File

#!/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 ""