前言:在工业控制、智能设备等领域,处理器的实时性表现直接决定了设备的响应速度与运行稳定性。眺望电子基于RK3576评估板,通过RT补丁实现微秒级精准响应,延迟7us、满载抖动<10 us的实测数据证明它的硬核实力!

一、测试环境

1.1  RK3576 核心板介绍

本次测试的主角是Core-RK3576J V1.1 核心板,搭载 Rockchip 新一代旗舰 RK3576 处理器:

  • 先进 8nm 制程工艺,4核 Cortex-A72+4 核 Cortex-A53 架构,主频高达 2.2GHz;

  • 核心板采用高速板对板连接器,集成处理器、LPDDR4、EMMC、PMIC等关键器件。

图片

图 1  Core-RK3576核心板正反面图

1.2  测试步骤

步骤 1:运行实时性测试程序

在评估板终端输入指令,执行 100 万次循环测试,记录任务调度延迟数据:

root@rk3576-ubuntu:/# cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q > 测试结果文件
  • 参数解析:-l 1000000(测试 100 万次)、-m(锁定内存,避免交换影响)、-Sp99(任务优先级 99)、--policy=fifo(FIFO 调度策略)、-h 25000(迭代间隔 25 微秒)。

步骤 2:模拟 CPU 压力(负载测试场景)

使用 stress-ng 工具让 CPU 满载运行,模拟高负载环境:

root@rk3576-ubuntu:/# stress-ng -c 8 --cpu-method fft --timerfd-freq 1000000 -t 24h &
  • 参数解析:-c 8(占用 8 核 CPU)、--cpu-method fft(用 FFT 算法模拟负载)、-t 24h(持续 24 小时)。

步骤 3:数据可视化与分析

将测试结果文件传输至 Ubuntu 系统,使用 gnuplot 生成延迟分布图,直观呈现实时性表现:

# 安装可视化工具
sudo apt install gnuplot -y
# 运行脚本生成图表
./rt_createpng.sh 测试结果文件 输出图表.png

二、指令解析

2.1  cyclictest指令

cyclictest是一个用于测试系统中周期性任务调度的工具。它可以测量系统在不同负载下的实时性能,并提供有关任务调度延迟和抖动的信息。

root@rk3576-ubuntu:/#cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q >output-rk3576-nort

参数解析:

  • -l 1000000:指定测试运行的迭代次数为1000000次

  • -m:启用内存锁定,以避免测试过程中的内存交换影响实时性

  • -Sp99:设置测试任务的优先级为99

  • --policy=fifo:设置测试任务的调度策略为FIFO(先进先出)

  • -h 25000:设置每个测试迭代之间的延迟时间为25000纳秒(25微秒)

  • -q:禁止输出额外的信息,只输出测试结果

  • && tail -n 11 output-cpu-rt:在cyclictest测试完毕后打印最后的总结数据

2.2  stress-ng指令

stress-ng是一个用于模拟系统负载的工具,可以测试系统的稳定性和性能

root@rk3576-ubuntu:/#stress-ng -c 4 --cpu-method fft --timerfd-freq 1000000 -t 24h &

参数解析:

  • -c 4:表示使用4个CPU核心进行测试

  • –cpu-method fft:指定使用FFT算法进行CPU负载测试

  • –timerfd-freq 1000000:设置定时器频率为1000000,用于控制测试的时间间隔。

  • -t 24h:设置测试时间为24小时

  • &:在后台运行该命令

三、数据实测

我们分别在无 preempt-rt 补丁和打 preempt-rt 补丁两种场景下,测试了 “空载”和 “CPU 满载”(8 核高负载)状态的实时性,操作如下:

3.1  未打入RT实时补丁

3.1.1 空载运行测试

在终端输入如下指令进行测试:

root@rk3576-ubuntu:/#cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q >output-kong-nort

root@rk3576-ubuntu:/# tail -n 11 output-kong-nort

    图片

    图 3-1 实时性测试(nort-空载)

    生成数据统计图如下:

    图片

    图 3-2CPU实时性数据统计图(nort-空载运行)

    3.1.2 CPU压力测试

    使用FFT算法对CPU进行负载测试:

    root@rk3576-ubuntu:/#stress-ng -c 8 --cpu-method fft --timerfd-freq 1000000 -t 24h &
      root@rk3576-ubuntu:/#cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q >output-cpu-nort
        root@rk3576-ubuntu:/#tail -n 11 output-cpu-nort

        图片

        图 3-3 实时性测试(nort-CPU满载)

        生成数据统计图如下:

        图片

        图 3-4 CPU实时性数据统计图(nort-满载运行)

        3.2  打入RT实时补丁

        3.2.1 空载运行

        在终端输入如下指令进行测试:

        root@rk3576-ubuntu:/# cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q > output-kong-rt
          root@rk3576-ubuntu:/# tail -n 12output-kong-rt

          图片

          图片

          图 3-5 实时性测试(rt-空载)

          生成数据统计图如下:

          图片

          图 3-6 CPU实时性数据统计图(rt-空载运行)

          3.2.2 CPU压力测试

          使用FFT算法对CPU进行24小时负载测试:

          root@rk3576-ubuntu:/#stress-ng -c 8 --cpu-method fft --timerfd-freq 1000000 -t 24h &
            root@rk3576-ubuntu:/#cyclictest -l 1000000 -m -Sp99 --policy=fifo -h 25000 -q >output-cpu-rt
              root@rk3576-ubuntu:/#tail -n 11 output-cpu-rt

              图片

              图片

              图 3-7 实时性测试(rt-CPU满载)

              生成数据统计图如下:

              图片

              图 3-8 CPU实时性数据统计图(rt-满载运行)

              3.3  数据对比

              3.3.1 不打 preempt-rt 补丁

              测试场景

              CPU 核心

              最小延迟(us)

              平均延迟(us)

              最大延迟(us)

              空载

              CPU0

              5

              24

              851

              空载

              CPU1

              4

              25

              1004

              空载

              CPU2

              6

              27

              14788

              空载

              CPU3

              5

              27

              330

              空载

              CPU4

              3

              19

              113

              空载

              CPU5

              3

              18

              895

              空载

              CPU6

              3

              18

              8049

              空载

              CPU7

              3

              18

              8506

              满载

              CPU0

              8

              23

              5368

              满载

              CPU1

              8

              21

              115

              满载

              CPU2

              11

              22

              4951

              满载

              CPU3

              11

              23

              141

              满载

              CPU4

              3

              6

              410

              满载

              CPU5

              3

              5

              384

              满载

              CPU6

              3

              5

              408

              满载

              CPU7

              3

              5

              599

              结论:原生系统下,最大延迟普遍较高,空载时 CPU2 甚至达到 14788us(约 14.8ms),满载时 CPU0 最大延迟 5368us(约 5.4ms),实时性表现一般。

              3.3.1 打 preempt-rt 补丁

              测试场景

              CPU 核心

              最小延迟(us)

              平均延迟(us)

              最大延迟(us)

              空载

              CPU0

              0

              0

              7

              空载

              CPU1

              0

              0

              3

              空载

              CPU2

              0

              0

              4

              空载

              CPU3

              0

              0

              4

              空载

              CPU4

              0

              0

              3

              空载

              CPU5

              0

              0

              3

              空载

              CPU6

              0

              0

              4

              空载

              CPU7

              0

              0

              3

              满载

              CPU0

              1

              1

              11

              满载

              CPU1

              1

              1

              5

              满载

              CPU2

              1

              1

              4

              满载

              CPU3

              1

              1

              4

              满载

              CPU4

              0

              0

              8

              满载

              CPU5

              0

              0

              5

              满载

              CPU6

              0

              0

              5

              满载

              CPU7

              0

              0

              6

              结论:打补丁后,实时性大幅提升 —— 空载时所有核心最大延迟不超过 7us,满载时最大延迟仅 11us(CPU0),完全满足工业级实时响应需求。

              总结

              从测试数据可以清晰看出:

              1. preempt-rt 补丁的关键作用:通过优化内核调度,RK3576 的最大延迟从毫秒级降至微秒级,实时性提升超 1000 倍;

              2. 高负载稳定性:即使在 8 核满载状态下,打补丁后的系统仍能保持极低延迟,确保设备在复杂场景下的可靠运行;

              同时把“高性能 + 硬实时 + 低成本”拉满的方案不多,RK3576 算一个;无论是工业控制(需微秒级响应)、智能终端(需流畅交互)还是 AI 边缘计算(需高效任务调度),RK3576 都能胜任。

              请关注眺望电子并联系我们,获取完整测试报告与软硬件设计参考资料,我们将竭诚为您服务!

              Logo

              智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

              更多推荐