news 2026/3/9 6:58:32

【瑞芯微平台实时Linux方案系列】第二十六篇 - 瑞芯微平台实时Linux系统性能测试方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【瑞芯微平台实时Linux方案系列】第二十六篇 - 瑞芯微平台实时Linux系统性能测试方案

一、简介:为什么必须“测过”才能量产?

  • 背景:瑞芯微 RK3568/RK3588 凭借四核 A55+A76、PCIe 3.0、ISP 2.0,已成为国产边缘视觉盒子、PLC 控制器首选 SOC。

  • 痛点:官方 SDK 默认 Android/Linux 内核非实时,打 PREEMPT_RT 补丁后,延迟、抖动、CPU 负载、IO 吞吐到底好不好?没有数据,甲方不敢签字。

  • 价值:本文给出标准化测试流程 + 脚本模板 + 结果判据,30 分钟生成 PDF 报告,直接用于 SIL/PL 认证审厂,缩短客户导入周期 20 天。


二、核心概念:5 个指标看懂实时性能

指标定义合格线(工业 SIL2)工具
最大延迟 (Max Latency)中断到任务唤醒最长时间≤ 100 μscyclictest
调度延迟 (Sched Latency)任务就绪→获得 CPU 时间≤ 50 μsperf sched
CPU 负载满负荷下 idle < 5%稳定无掉核top / mpstat
IO 吞吐SATA/SSD 连续写≥ 400 MB/sfio
网络抖动1 Gbps 满负载 64 Byte 帧≤ 10 μsnetperf

三、环境准备:10 分钟搭好“瑞芯微性能实验室”

1. 硬件

  • RK3568 核心板(4×A55@1.8 GHz)或 RK3588 开发板(4×A76+4×A55@2.4 GHz)

  • 散热片+风扇(持续压测 CPU 80 ℃ 以上)

  • SSD(M.2 SATA/NVMe)+ 千兆网线 + 串口线(115200)

2. 软件

组件版本获取方式
实时内核linux-5.10.y-rt52瑞芯微 github 分支
Buildroot2022.02.x官方 bsp
测试套件rt-tests 2.4、fio 3.28、netperf 2.7.0下文一键编译
报告模板LibreOffice Writer导出 PDF

3. 一键编译 rt-tests(可复制)

#!/bin/bash # build_rt_tests.sh git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git cd rt-tests make -j$(nproc) make install DESTDIR=$PWD/out tar -czf rt-tests.tar.gz -C out .

rt-tests.tar.gz拷贝到板子/opt/并解压即可。


四、应用场景:边缘视觉质检盒案例(300 字)

某食品厂部署 RK3568 边缘盒子,运行 YOLOv5 + PREEMPT_RT 内核,对传送带罐头进行实时缺陷检测。

  • 需求:检测周期 ≤ 25 ms(相机 40 fps),机械臂剔除延迟 ≤ 50 ms,全年停机 ≤ 8 h → 需 SIL 2 证书。

  • 挑战:AI 推理 15 ms,图像 DMA 5 ms,留给调度抖动 < 5 ms;若 Max Latency > 100 μs,累积到 25 帧周期即丢包。

  • 测试价值:用本文脚本每日自动跑 cyclictest + fio,生成 PDF 插入 MES 系统,向客户证明“实时性可追踪”,一次审厂通过。


五、实际案例与步骤:从“跑分”到“报告”全流程

所有脚本放/opt/rk-tests/,可直接chmod +x运行。


5.1 实时延迟测试:cyclictest

#!/bin/bash # run_cyclic.sh CPU_LIST="0-3" # 四核全压 DURATION=300s # 5 分钟 PRIORITY=95 echo "Starting cyclictest on RK3568..." taskset -c $CPU_LIST cyclictest -p$PRIORITY -m -Sp90 -i200 -d$DURATION -q > cyclic.log awk '/Max/ {print "Max Latency = "$3 " us"}' cyclic.log

结果判据
Max ≤ 100 μs 且 StdDev ≤ 10 μs → PASS。


5.2 调度性能:perf sched

#!/bin/bash # run_sched.sh echo "Recording 10 s sched events..." perf sched record -C 0-3 sleep 10 perf sched latency | tee sched.log # 提取最大调度延迟 awk '/sched_max/ {print $3}' sched.log

判据:sched_max ≤ 50 μs → PASS。


5.3 CPU 满载测试:stress-ng + mpstat

#!/bin/bash # run_cpu.sh stress-ng --cpu 4 --timeout 60s & mpstat -P ALL 1 60 > cpu.log # 检查 idle 均值 awk '/Average/ && $12 ~ /[0-9]/ {idle+=$12} END {print "Avg idle = " idle/4 "%"}' cpu.log

判据:Avg idle < 5% 且无明显掉核 → PASS。


5.4 IO 吞吐:fio(SATA SSD)

#!/bin/bash # run_fio.sh fio --name=write --ioengine=libaio --rw=write --bs=1M \ --size=4G --numjobs=4 --runtime=60 --time_based \ --direct=1 --group_reporting > fio.log awk '/WRITE/ && /BW=/ {print $5}' fio.log

判据:连续写 ≥ 400 MB/s → PASS。


5.5 网络抖动:netperf

#!/bin/bash # run_net.sh # PC 端作 server:netserver -p 12865 netperf -H <PC_IP> -t UDP_RR -l 60 -p 12865 -- -r 64 | tee net.log awk '/Latency/ {print $4}' net.log # 单位 us

判据:平均抖动 ≤ 10 μs → PASS。


5.6 一键综合脚本:生成 CSV+PDF

#!/bin/bash # run_all.sh ./run_cyclic.sh ./run_sched.sh ./run_cpu.sh ./run_fio.sh ./run_net.sh # 汇总到 csv echo "Test,Result,Unit" > result.csv echo "Max Latency,$(awk '/Max/ {print $3}' cyclic.log),us" >> result.csv echo "Sched Max,$(awk '/sched_max/ {print $3}' sched.log),us" >> result.csv echo "IO BW,$(awk '/WRITE/ && /BW=/ {print $5}' fio.log),MB/s" >> result.csv # 使用 LibreOffice 模板导出 PDF libreoffice --convert-to pdf --headless template.odt

PDF 含公司 Logo、日期、签名栏,直接附在出货报告中。


六、常见问题与解答(FAQ)

问题现象解决
cyclictest Max > 200 μs未关超线程 / 电源管理BIOS 关闭 Turbo、C-State;内核加nohz_full=1-3
fio 带宽低仅 150 MB/s确认 SATA 模式为 AHCI,换 NVMe SSD
netperf 报“connect failed”防火墙未放行iptables -F或放行 12865/udp
测试过程温升高核心 90 ℃ 降频加风扇,使用thermal_zone0/temp监控
结果波动大每次差 30%固定 CPU 频率:echo performance > scaling_governor

七、实践建议与最佳实践

  1. 每日自动化
    run_all.sh加入 crontab(凌晨 2 点),结果 push 到 GitLab Pages,客户扫码即可看。

  2. 温升与实时联合监控
    同时记录thermal_zone0/temp,建立“温度-延迟”散点图,提前发现散热瓶颈。

  3. 版本锁定
    测试报告首页注明:内核哈希、Buildroot 配置、工具链版本,确保复现。

  4. 故障注入复核
    每月人工插入一次echo c > /proc/sysrq-trigger看看 watchdog 能否在 100 ms 内重启。

  5. 可视化面板
    使用 Grafana + InfluxDB,把 cyclictest 每 1 s 的延迟时序入库,设置 Max>80 μs 告警。

  6. 分客户模板
    视觉质检、PLC、网关三类场景,分别保存template_vision.odttemplate_plc.odt,导出时 1 键切换。


八、总结:一张脑图带走全部要点

瑞芯微实时性能测试 ├─ 环境:RK3568/RK3588 + 5.10-rt + Buildroot ├─ 工具:cyclictest + perf + fio + netperf ├─ 指标:Max Latency≤100 μs, IO≥400 MB/s, Jitter≤10 μs ├─ 脚本:一键 run_all.sh → CSV → PDF └─ 落地:每日自动化 + Grafana 大屏 + 客户审厂

测过,才敢卖;有报告,才有钱。
把本文脚本 clone 到你的 RK 板子,今晚就跑第一次全项测试,明天把 PDF 甩给客户——国产芯 + 实时 Linux,一样可以做到毫秒级、可量产、可认证!祝你测试顺利,性能一路狂飙。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/9 3:21:09

《你真的了解C++吗》No.033:SFINAE原则——替换失败不是错误

《你真的了解C吗》No.033&#xff1a;SFINAE原则——替换失败不是错误 导言&#xff1a;编译器的“温柔” 在正常的 C 逻辑中&#xff0c;如果编译器尝试编译一段错误的代码&#xff0c;它会立即报错并罢工。但在模板参数推导的过程中&#xff0c;为了找到最合适的匹配&#xf…

作者头像 李华
网站建设 2026/3/8 4:16:23

LangGraph 实战:用 Python 打造有状态智能体

LangGraph 实战&#xff1a;用 Python 打造有状态智能体 LangGraph 是一个专为构建有状态、多节点执行流程的 AI 智能体系统设计的 Python 框架&#xff0c;它将状态机&#xff08;State Machine&#xff09;与图结构&#xff08;Graph&#xff09;相结合&#xff0c;使得开发…

作者头像 李华
网站建设 2026/3/1 0:39:11

学长亲荐8个降AI率平台,千笔AI帮你彻底解决降AIGC难题

AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 在当前学术写作中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;的广泛应用带来了新的挑战。许多学生在使用AI辅助写作时&#xff0c;往往忽视了AI痕迹的残留问题&#xff0c;导致论文被检测出高AIGC率&#xff0…

作者头像 李华
网站建设 2026/3/3 3:16:18

学长亲荐10个降AIGC网站,千笔·降AIGC助手帮你轻松降AI率

AI降重工具&#xff0c;帮你轻松应对论文查重难题 在如今的学术环境中&#xff0c;越来越多的学生开始使用AI工具辅助写作&#xff0c;但随之而来的AIGC率过高、查重率超标等问题也让不少同学感到头疼。如何在保持原文语义和逻辑的前提下&#xff0c;有效降低AI痕迹和重复率&am…

作者头像 李华
网站建设 2026/3/6 5:07:16

Windows程序设计第六版 pdf下载,Win32 API经典教程电子书

对于许多Windows平台的开发者而言&#xff0c;《Windows程序设计》是一本经典的技术书籍&#xff0c;其第六版涵盖了从基础消息循环到高级图形界面的核心知识。作为一本深度指南&#xff0c;它系统性地讲解了Win32 API的使用方法&#xff0c;是理解Windows操作系统底层运行机制…

作者头像 李华