针对您的问题,直接运行 bpu_os_test 工具并不能完全实现“榨干算力 + 测试温升”的完整目标。该工具主要用于基础功能验证,而非极限压力测试。
要实现满载算力测试并监控温升,建议采用以下组合方案:
推荐方案:多线程推理 + 实时监控
1. 满载 BPU 算力(压力测试)
通过多线程并发运行模型推理来占满 BPU 资源:
# 示例:启动多个线程运行 YOLO 模型(以 RDK X5 为例)
# 方法 A: 使用 hrt_model_exec 多实例
for i in {1..8}; do
hrt_model_exec perf --model yolov8n.bin --thread_num 2 &
done
# 方法 B: 使用官方 demo 多进程
# 修改示例代码中的 thread_num 参数,启动多个进程
关键点:
- 单模型单线程通常无法跑满 BPU,需多模型或多线程并发
- RDK X5 双 BPU 核心,建议
thread_num ≥ 4才能接近满载- 参考社区案例:RDK X5 BPU 负载测试
2. 实时监控 BPU 负载
使用 hrut_somstatus 或读取系统文件:
# 方法 1: 使用官方工具(推荐)
watch -n 1 hrut_somstatus
# 方法 2: 直接读取 BPU 负载百分比
watch -n 1 'cat /sys/devices/system/bpu/bpu0/ratio; cat /sys/devices/system/bpu/bpu1/ratio'
注意:
ratio值范围是 0-100,代表 BPU 利用率百分比
3. 监控温度变化
# 查看 CPU 温度(BPU 无独立温度传感器,通常参考 SoC 温度)
watch -n 1 'cat /sys/class/thermal/thermal_zone*/temp'
# 或使用 RDK Studio 一键诊断工具
device_diagnose
完整测试脚本示例
#!/bin/bash
# bpu_stress_test.sh
echo "=== 开始 BPU 压力测试 ==="
# 1. 启动 8 个推理线程
for i in {1..8}; do
hrt_model_exec perf --model /path/to/your/model.bin --thread_num 2 > /dev/null 2>&1 &
echo "启动线程 $i"
done
# 2. 监控负载和温度
echo "监控中... (按 Ctrl+C 停止)"
while true; do
clear
echo "=== BPU 负载 ==="
cat /sys/devices/system/bpu/bpu0/ratio 2>/dev/null || echo "BPU0: N/A"
cat /sys/devices/system/bpu/bpu1/ratio 2>/dev/null || echo "BPU1: N/A"
echo -e "\n=== 温度 (°C) ==="
cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null | awk '{printf "SoC: %.1f°C\n", $1/1000}'
sleep 2
done
注意事项
- 散热条件:长时间满载可能导致降频,建议加散热片或风扇
- 电源稳定:确保供电充足(特别是 USB 供电场景)
- 版本差异:
- RDK X3/X5:使用
hrut_somstatus - RDK S100:部分命令可能不同,需查阅对应文档
- RDK X3/X5:使用
- bpu_os_test 局限性:该工具主要用于验证 BPU 基础功能,不适合长时间压力测试
相关资源
建议将测试结果(温度曲线、负载稳定性)整理后发布到社区,帮助其他开发者参考!