rtos-benchmark:一个非常实用的基准测试工具,适合做 RTOS 基础性能对比和长期回归检测

 

什么是 rtos-benchmark?
rtos-benchmark 是一个开源的基准测试套件,包含一组用于测量常见 RTOS 操作(比如上下文切换、信号量、消息队列、定时器等)的测试。它目前支持 Zephyr(qemu_x86、frdm_k64f)、FreeRTOS(frdm_k64f),未来会扩展更多板子和 RTOS。

它解决了什么问题 / 常见痛点

  • • 你想知道某个 RTOS 在某些原语(mutex、semaphore、thread create/kill、tick 等)的开销到底是多少;

  • • 想在不同硬件、不同 RTOS 之间做“可比”的性能对比;

  • • 想要一套标准化、可复现的测试用例,而不是每次自己写 benchmark;

  • • 想要把基准测试集成到持续集成(CI)里,长期跟踪性能回归。

打个比方:以前大家比“谁跑得快”,各自跑各自的 100m,起跑方式、跑鞋、赛道都不一样。rtos-benchmark 就是给大家统一的赛道和规则,尽量减少“数据不可比”的问题。

支持平台 & 注意事项(花点心思看这)

  • • Zephyr:支持 frdm_k64f(实板)和 qemu_x86(仿真)。

  • • FreeRTOS:目前只支持 frdm_k64f。

  • • VxWorks:也支持(需版本 >= 24.03),有 POSIX 和非 POSIX 两种接口的运行方式。
    重要提醒:在 QEMU 上跑 benchmark 的结果要谨慎看,仿真环境跟真实硬件差异大,主要是蓝图、方便加入其他平台用的。

构建与烧录(常用命令速览)

Zephyr on FRDM-K64F:

  • • cmake -GNinja -DRTOS=zephyr -DBOARD=frdm_k64f -S . -B build

  • • ninja -C build

  • • ninja -C build flash

Zephyr on qemu_x86(仿真):

  • • cmake -GNinja -DRTOS=zephyr -DBOARD=qemu_x86 -S . -B build

FreeRTOS on FRDM-K64F:

  • • cmake -GNinja -DRTOS=freertos -DBOARD=frdm_k64f -DMCUX_SDK_PATH=/SDK__FRDM-K64F -S . -B build

  • • ninja -C build

  • • ninja -C build flash

VxWorks:

  • • 按项目要求生成 VSB / VIP,设置 RTOS_BENCHMARK 参数,复制 vxe 到 romfs,构建后烧录运行。

连接与查看输出:
把 FRDM-K64F 插到主机 USB,打开串口(minicom、screen)比如: minicom -D /dev/ttyACM0,观察 benchmark 输出。

调试(如果需要):

  • • cmake … 加上 debug 选项,比如 -DCMAKE_BUILD_TYPE=debug(FreeRTOS)

  • • ninja -C build debugserver,然后用 arm-none-eabi-gdb 连接(target remote :3333)。

典型测试项(你会看到啥)

  • • 线程/任务创建与删除时间;

  • • 线程切换(context switch)延迟;

  • • 信号量、互斥量(mutex)操作延迟;

  • • 消息队列操作耗时;

  • • 定时器精度与回调耗时;

  • • 时钟/时间戳的分辨率与开销。

下面用表格简单列出对比点(抛砖引玉):

指标类型

代表测试

说明

线程相关

task create/destroy

创建和销毁任务的时间开销

同步原语

semaphore/mutex

P/V 操作、lock/unlock 的延迟

通信

message queue

发送/接收消息的延迟与吞吐

计时

timer/cycle

定时器回调延迟、时钟分辨率

调度

context switch

任务切换耗时(关键指标)

优点

  • • 开箱即用:有一套现成的、覆盖面还挺广的测试用例;

  • • 多 RTOS 多板子:支持 Zephyr、FreeRTOS、VxWorks(持续扩展);

  • • 可复现、标准化:适合做横向对比与 CI 中长期监控;

  • • 支持仿真(qemu_x86),便于调试与快速集成——虽然结果要谨慎看。

局限与注意事项

  • • QEMU 结果不靠谱:仿真环境可能跟真实硬件差距大,不能当唯一参考。

  • • 平台支持有限:目前 FreeRTOS 只在 frdm_k64f;其他板子/RTOS 需要自行移植。

  • • 测试并不覆盖应用层所有场景:主要是基础原语和调度相关开销,复杂应用场景还得自己补充用例。

  • • 需要环境配置(toolchain、SDK、Zephyr 环境等),上手对新手有一定门槛。

总结
rtos-benchmark 是一个非常实用的基准测试工具,适合做 RTOS 基础性能对比和长期回归检测。上手需要一点环境配置,但回报是可复现、结构化的性能数据。想要更细粒度或应用级的测试,可以基于它扩展自定义用例。

项目地址:https://github.com/zephyrproject-rtos/rtos-benchmark

 

发表评论