news 2026/10/17 17:54:24

【瑞芯微平台实时Linux方案系列】第二十二篇 - 瑞芯微平台实时Linux监控体系构建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【瑞芯微平台实时Linux方案系列】第二十二篇 - 瑞芯微平台实时Linux监控体系构建

一、简介:为什么必须“看得见”实时性?

  • 工业视觉、运动控制对延迟<1 ms零容忍,但“能跑”≠“实时”。

  • 客户现场常出现:偶发卡顿→无数据→靠猜→通宵调试。

  • 轻量化监控 = 实时采集延迟/CPU/内存→秒级告警,问题复现率↑90%,定位时间↓80%。

掌握本文方案,即可为瑞芯微平台打造“边缘实时之眼”,让SIL/CE认证审核有数据可追。


二、核心概念:5 个关键词先搞懂

关键词一句话瑞芯微场景
PREEMPT_RTLinux 实时补丁,将中断、自旋锁可抢占化RK3568 官方 SDK 已合入
cyclictest测量“ timer → 线程唤醒”延迟的黄金工具用于验证监控数据准确性
kmon轻量级内核日志守护,支持阈值告警替代 rsyslog,资源 <1 MB
sysfs内核导出指标接口,如/sys/kernel/debug/rt_latency零开销采集
MQTT轻量消息队列,边缘→云端上报4G/以太网均适用

三、环境准备:10 分钟搭好实验台

1. 硬件

  • RK3568 开发板(2 GB RAM)(RK3588 同理)

  • SD 卡 ≥16 GB,千兆网线,TTL 串口线

2. 软件

组件版本获取方式
瑞芯微Linux SDKv1.2.0a官方 Gitee
实时内核linux-5.10-rtSDK 已集成
  • 主机交叉编译器:aarch64-linux-gnu-gcc 9.3

  • 一键装依赖(Ubuntu 20.04 主机):

sudo apt install gcc-aarch64-linux-gnu build-essential \ git cmake ninja-build

3. 烧录 & 启动

# SDK 自带脚本 ./build.sh kernel && ./build.sh firmware sudo upgrade_tool ul MiniLoaderAll.bin sudo upgrade_tool di -k rt-boot.img

串口出现PREEMPT_RT字样即成功。


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

某饮料厂产线 600 瓶/分钟,每瓶拍摄 3 张图,AI 推理要求总延迟 ≤ 200 ms。

  • 硬件:RK3568 + USB3.0 相机 + 4G 模块

  • 软件:PREEMPT_RT + OpenCV + Tengine
    痛点:偶发拍照重影,怀疑 AI 延迟合格但图像触发信号延迟抖动。
    方案:本文监控体系实时采集:

  1. GPIO 触发→用户态时间戳差(<1 ms 为 OK)

  2. cyclictest 后台采样,每 1 s 上报 Max 延迟

  3. 延迟 > 800 μs 触发 MQTT 告警,云端推送到手机
    上线 1 周即定位到USB 驱动在 82 ℃ 时 rt_latency 突增 3 ms,通过降频+散热解决,重影率从 0.3% 降至 0.01%。


五、实际案例与步骤:30 分钟搭完“边缘实时之眼”

所有脚本放~/rt-monitor,路径统一,可复制即用。


5.1 步骤 1 - 采集层:cyclictest 常驻服务

# 创建服务文件 sudo tee /etc/systemd/system/rt-latency.service <<'EOF' [Unit] Description=RT latency logger After=network.target [Service] ExecStart=/usr/bin/cyclictest -p95 -m -Sp90 -i200 -d0s \ -l /var/log/rt-latency.log Restart=always CPUAffinity=3 # 绑定大核 [Install] WantedBy=multi-user.target EOF sudo systemctl enable --now rt-latency.service

验证:

tail /var/log/rt-latency.log # T: 0 ( 1234) P:95 I:200 C: 10000 Min: 8 Act: 14 Avg: 16 Max: 38

5.2 步骤 2 - 系统指标:sysfs + awk 零开销

# cpu_usage.sh #!/bin/sh while true; do grep -w cpu /proc/stat | awk '{printf "%.1f\n", ($2+$3+$4)/($2+$3+$4+$5)*100}' \ >> /var/log/cpu.log sleep 1 done

后台运行:

chmod +x cpu_usage.sh nohup ./cpu_usage.sh &

5.3 步骤 3 - 内核日志阈值告警:kmon

# 交叉编译 kmon (ARM64) git clone https://github.com/rgoliveira/kmon.git cd kmon && cargo build --release --target aarch64-unknown-linux-gnu # 拷贝到板子 scp target/aarch64-unknown-linux-gnu/release/kmon root@192.168.1.10:/usr/bin/

配置阈值:

sudo kmon set-threshold "sched:.*latency.*>1000" # 单位 μs sudo kmon start --mqtt-broker tcp://mqtt.example.com:1883

5.4 步骤 4 - MQTT 上报(本地→云端)

# mqtt_upload.py import paho.mqtt.client as mqtt import json, time client = mqtt.Client() client.username_pw_set("user", "pass") client.connect("mqtt.example.com", 1883, 60) while True: lat = int(open('/var/log/rt-latency.log').readlines()[-1].split()[-1]) cpu = float(open('/var/log/cpu.log').readlines()[-1]) msg = json.dumps({"lat_us": lat, "cpu": cpu}) client.publish("rk3568/monitor", msg) time.sleep(1)

后台运行:

python3 mqtt_upload.py &

5.5 步骤 5 - Grafana 快速可视化

  • 云侧 Docker 一键启动:

docker run -d -p 3000:3000 \ -e GF_SECURITY_ADMIN_PASSWORD=admin \ grafana/grafana
  • 添加 MQTT 数据源(插件:MQTT-datasource)

  • 导入仪表盘 JSON(文末仓库提供),5 分钟出图。


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

问题现象解决
cyclictest Max > 1 ms未关 CPU 变频BIOS 关闭turbo;内核加intel_pstate=disable
kmon 报 “No such file or directory”缺少/dev/kmsg权限chmod 444 /dev/kmsg或加 udev 规则
MQTT 断线后数据丢失网络抖动在 Python 脚本加on_disconnect重连 + 本地环形缓存
串口大量日志影响实时延迟突刺关闭console=ttyS0,115200或提高loglevel=4
监控自身占用 CPU > 5%采集太频繁降低采样周期至 2 s;使用 sysfs 接口替代/proc解析

七、实践建议与最佳实践

  1. 大核绑采集
    CPU3 专门跑 cyclictest & mqtt,不与业务抢占。

  2. 环形缓存 + 压缩
    本地日志logrotate按小时切割,gzip 压缩,保留 7 天。

  3. 阈值分级告警

    • Max > 200 μs:INFO(记录)

    • 500 μs:WARN(短信)

    • 1000 μs:CRITICAL(停机检查)

  4. 监控也要“安全”
    MQTT 使用 TLS + 证书,防止被注入假数据。

  5. 版本化配置
    把 systemd 服务、Python 脚本、Grafana JSON 全部 Git 管理,Tag 随软件一起发布。


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

瑞芯微实时监控体系 ├─ 采集:cyclictest + sysfs + kmon ├─ 传输:MQTT + TLS ├─ 展示:Grafana + 手机告警 ├─ 告警:分级阈值 + 环形缓存 └─ 管理:Git 版本 + systemd 服务

实时监控不是“锦上添花”,而是实时 Linux 的“生命线”。
当你把本文脚本推送到 RK3568 板子,看到 Grafana 曲线稳稳趴在 50 μs 以下时,你会由衷感叹——“实时性,原来真的可以看得见!”

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

仓储透视化空间模型中人员与车辆动态行为表达技术——基于视频空间解算的人车行为可视化与安全态势表达方法

仓储透视化空间模型中人员与车辆动态行为表达技术——基于视频空间解算的人车行为可视化与安全态势表达方法摘要在仓储安全与运行管理中&#xff0c;人员与车辆的动态行为是事故发生、效率波动与风险积累的直接诱因。然而&#xff0c;传统视频监控系统受限于二维画面表达方式&a…

作者头像 李华
网站建设 2026/10/5 5:08:04

学术导航仪:书匠策AI如何用六大“黑科技”重塑期刊论文写作

在学术江湖中&#xff0c;期刊论文是研究者攀登高峰的“通关文牒”&#xff0c;但选题撞车、逻辑混乱、查重焦虑、格式错漏等问题&#xff0c;常让学者们陷入“论文地狱”。如今&#xff0c;一款名为书匠策AI的智能工具横空出世&#xff0c;它像一台精密的“学术导航仪”&#…

作者头像 李华
网站建设 2026/10/15 18:06:56

set_current_state()和schedule()

schedule() 和 set_current_state() 结合使用的场景与逻辑&#xff0c;这是 Linux 内核中进程主动休眠的核心组合&#xff0c;二者配合实现了 “进程主动放弃 CPU 并进入休眠状态&#xff0c;等待特定事件唤醒” 的核心功能&#xff0c;也是驱动、内核同步机制中最常用的休眠方…

作者头像 李华
网站建设 2026/10/15 19:26:39

第21届全国大学生智能汽车竞赛提问于回答(总入口)

第二十一届全国大学生智能汽车竞赛比赛规则 01 提问与回答 为了便于大家查找同学们在准备第21届全国大学生智能汽车竞赛过程中提问和建议对应的回答。 下面将在 2026年2月1日之后的回复按照组别进行整理成不同的文档&#xff0c; 并持续更新到 6月15日。 大家提问除了乐意在 CS…

作者头像 李华
网站建设 2026/10/13 5:33:38

TIGM绿微 LMV324/LMV358/LMV321 SOP 运算放大器

特性低功耗轨到轨输入和输出&#xff0c;典型0.8mV的Vos单位增益稳定增益带宽积1.1MHz低输入偏置电流&#xff1a;10pA级&#xff0c;<1nA2.1V~5.5V的工作电压低工作电流&#xff1a;45uA每通道小型封装LMV321适用于SOT23 - 5&#xff0c;LMV358适用于SOP - 8和DIP - 8&…

作者头像 李华