国产实时操作系统:和RT-Linux,Zephyr的实时性对比

news2024/11/21 18:08:11

RT-Thread

在工业领域、高安全高可靠性领域,实时操作系统在其中发挥着重要的作用,从毫秒级,微秒级实时响应,决定着装置系统能满足何种严苛的要求。

RT-Thread Smart操作系统是一套基于RT-Thread内核,并具备POSIX用户态运行环境的高性能实时操作系统。它类似Linux、Windows的架构,具备用户态和内核态(并相分离),用户态具备全地址空间(进程模型),启用了A核芯片中的MMU,多级页表,实现了在A核SoC大芯片上的实时控制系统。

RT-Thread Smart在具备POSIX用户态运行环境后,其实时性如何,和一般的RTOS相比,和通用的带实时补丁Linux操作系统相比,它的实时性能力到底如何。希望通过本文的测试给到大家一个对比认识。

测试平台

所有测试基于相同的一块瑞芯微 RK3566开发板,RK3566携带四核 64 位高性能 ARM Cortex-A55 处理器,主频 1.8GHz,4GB LPDDR4X 内存。

RT-Thread 内核基于开源主线仓库 master 分支,平台 SDK 基于 RT-Thread Smart 专业版本,使用 gcc 工具链,优化等级 O2。

Linux-RT 内核版本基于 linux-orangepi 仓库 orange-pi-5.10-rk35xx-rt 分支,5.10内核版本并已经开启了实时补丁选项。

Zephyr内核版本基于开源主线仓库master分支,commit:7a492d308828b928074816c49d38de18b4dcfbb4, 编译优化等级通过 Kconfig 配置为 O2。

RTOS 实时性能测试工具

首先是传统的实时操作系统测试对比,对比的另一实时操作系统选择的是Zephyr实时操作系统,都运行在4核SMP模式下进行测试。本次测试工具选择相同的测试用例代码,用于衡量不同的压力负载下的 RTOS 综合实时性能指标。

指标由以下三个部分构成:中断响应时延 + 异步通知时延 + 实时任务调度时延。这三个部分加起来的时间越短越好,同时多次测量的值分布越集中越好。

0da902b7210574d1a2105cd8290d4026.png

测试用例实现方式是在一个实时任务上通过高精度定时器设定一个时延,并挂起该任务。在中断到来时,通过同步原语通知实时任务异步事件到来,并唤醒。然后计算这段时间相对于期望时延的差值,得到这期间的时延数据。通过多次采样,施加不同的压力负载,获得 RTOS 在不同情况下的实时性能指标情况。压力负载则模拟 cpu、中断响应、访存操作。

dc7d17ebaa544209b71689d4a3efb711.jpeg

RTOS 实时性测试结果对比

a90edf09fe2ed13af0560de4733a8368.png

点击放大🔍查看更清晰

测试分成了4种情况:

● 无压力负载时测试数据,类似于其他都不运行,而是空跑;

● CPU计算负荷下的测试数据,使用 Dhrystone 测试 CPU 负载,它是一种典型的整数运算基准程序,用于模拟高强度的计算场景,以评估系统在繁忙时的实时响应能力。

● IO/中断负荷下的测试数据,通过 IPI(Inter-Processor Interrupts)生成大量中断请求,测试系统在执行 IO 操作处理高频中断场景下的实时性能。

● 内存负荷下的测试数据,使用 MBW 测试工具进行内存带宽压力测试,模拟大规模数据传输的场景,考察系统在内存资源紧张时的实时响应情况。

通过上述结果可以发现:RT-Thread Smart基本指标在2.4us的延迟,当IO/中断,CPU计算负荷,内存负荷上去时,最大延迟会上升到8us附近。而Zephyr实时操作系统在一些极限点上延迟会到15us,甚至略显夸张的525us(还好不是1ms❗)。

cyclictest测试

cyclictest是Linux上非常流行、常见的实时性测试工具,它通过使用高精度定时器来测量两个时间点的延时:

c495df5419a22f936e6bf8766c146536.png

cyclictest 源码来自项目 rt-tests release v1.0,参考官方 wiki :

https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start

它编译出来是一份用户态测试程序,这份代码在Linux,RT-Thread Smart上都不需要进行修改,直接通过gcc交叉工具链采用O2优化选项进行编译即可。

Linux 测试使用命令:cyclictest -p 95 -d 0 -i 1000 -D 10m -m -n --histogram=100

rt-smart 测试使用命令:cyclictest -d 0 -i 1000 -D 10m -m -n --histogram=20(Linux 优先级规则与 rt-thread 不同,保证 cyclictest 是系统中最高优先级任务即可)

cpu 负载:在后台启动 dhrystone 任务。通过 top 命令观察,每个核启动一个时 cpu 占用率峰值可以达到 99.7% 以上。

内存负载:执行 cyclictest 测试的同时,运行 mbw 任务模拟高内存负载环境。

IO 负载:执行 cyclictest 测试的同时,运行 iperf 服务,并连接客户端测试,以此模拟高网络(IO)负载环境。

cyclic 测试指标对比

6721900fbc08f1a0e5ae4227c5df3081.png39a39f8327cfd23752bb5ce62e0aeb0b.png

点击放大🔍查看更清晰

上述是两份对比图,前面的是cyclictest的min/avg/max对比图。可以看到RT-Thread Smart的实时性表现都比较好,max值在11/12us左右,在内存负载的情况下max值会到30+us。

下面的图则是时延数据的分布情况,可以发现相对于 Linux-RT,rt-smart 下的测试指标在各类负载下的重复实验中基本上都比较集中。因此同为支持到POSIX用户态应用程序的RT-Thread Smart操作系统,相比较带实时补丁的Linux来说,它的实时性优势也是非常明显,相当于提供POSIX应用程序的同时,依然具备非常好的实时性能力。

性能优化是一个持久而漫长的过程,这个其中需要持续的定位整体系统中的性能损耗点,所以在这个过程中我们也在不断迭代、追求极致,并加入更有效的手段、工具来辅助定位及解决问题。下一篇文章,我们将介绍rt-smart上的ftrace及性能可视化等工具,来展现系统的内部系列行为,敬请期待。

欢迎大家在 RT-Thread Github 仓库或论坛上向我们反馈意见和建议。另外,如果您对参与到 RT-Thread 的平台支持(risc-v、arm、arm64 平台上的驱动、内核代码完善)、应用移植与开发、文档维护感兴趣,我们诚邀您加入 Smart 兴趣小组,参与到与 Smart 相关的开源贡献中。

cc87f926469d3867dc7b334e43973b53.png

扫码申请加入兴趣小组

——————End——————

25705ed1d05a0c042fef900828d4ea35.jpeg

65d7b009bba1952028f9915bca380cea.gif

👇 点击阅读原文进入官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2069682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode84(柱状图中最大的矩形)理解单调栈

1. LeetCode84(柱状图中最大的矩形) 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出&#xff…

大模型时代,什么样的算法工程师更吃香?

毫无疑问,全栈型的算法工程师将更为抢手,如果你精通大模型从训练到应用的整个流程,你走到哪里都不怕。 但往往人的精力有限,如果从数据、预训练、微调、对齐、推理、应用几个方面来看的话,个人觉得现在重要性排序是“…

python测试框架之Pytest

初识Pytest Pytest1.Pytest的特点:2.Pytest的基本使用规则3.pytest安装1)使用编译器安装2)使用命令安装 4.pytest规则 Pytest Pytest是python的一个第三方单元测试库,它的目的是让单元测试变得容易,并且也能扩展到支持…

同一个wifi不同电脑ip一样吗?网络ip地址怎么修改

‌在数字化时代,Wi-Fi已成为我们日常生活与工作中不可或缺的一部分,它让多台设备能够轻松接入互联网,实现信息共享与数据传输。然而,你是否曾好奇过,在同一个Wi-Fi网络下,不同电脑的IP地址是否会不一样&…

10个Python自动化日常任务实战脚本示例

小编准备入门了Python入门学习籽料80个Python入门实例 点击 领取(无偿获得) 1. 自动备份文件夹 目标 : 每天自动将指定文件夹的内容备份到另一个位置。 import shutil import datetime def backup_files(source, destination): """…

DevEcoStudio创建的默认工程HelloWorld build失败请问如何解决?

解决方法: 方法一: 方法二: 确认当前登录的windows用户是否是Administrator,出现这种情况,大概率都是普通用户,所以造成权限不足的问题。一种解决办法是切换到Administrator用户再打开项目进行build。 如…

已拿证 | 2024深圳驾考科目四全攻略:技巧、知识点一网打尽

目录 _head 精简500题 区分变道和左转,变道手下垂,左转手伸直 紧急包扎需要柔软介质 网状线内禁止停车 会车千万不能开远光灯 只准直行 城3公4 城5公7 一急二反三连续 落水救援 驾驶陋习 车到路肩人在外 交警先看脸!&#xff01…

Redis保姆级安装教程

下载:https://github.com/redis-windows/redis-windows/releases 然后就慢慢等待 下载完解压,打开 以管理员身份运行,这里一直按回车就可以了 复制路径 这里勾错了,是编辑 修改配置文件redis.conf 加这一行 以管理员身份运行cmd,输入redis-cli 在输入ping 再输入info 这样就完…

IP-RDS-222、IP-PRZ-59-AM12、EG-TRZ-42-L、EG-TRZ-42-H比例减压阀放大器

IP-DAR-250、IP-DAR-43C-L、IP-DAR-43C-H、IP-RDS-222、IP-PRZ-59-AM12、EG-TRZ-42-L、EG-TRZ-42-H比例减压阀 EE-PRB、EE-PRD比例压力阀 EE-P2G、ET-P2S、EB-P2A、EE-P2A、ET-P2A、EE-P2H、EG-F2A、EU-F2A比例流量阀 EF-F3G、EU-F3G比例压力补偿流量阀 EQ-S4M、EG-S4M、EQ…

【JAVA CORE_API】Day21 Map接口、在线聊天室v3.0、Java的反射机制(P1)

Map接口 Map接口 Map是Java中用于存储键值对(key-value pairs)的接口,每个键(key)对应一个值(value)。它不允许重复的键,但允许不同的键映射相同的值。 关键特点: 键值…

Linux 可视化管理工具:宝塔面板(BT)

😀前言 在 Linux 系统的运维管理中,命令行界面(CLI)是主要的操作方式。然而,对于许多系统管理员或开发者来说,使用 CLI 进行管理和维护任务并不总是最直观或最方便的方式。为了简化操作并提高效率&#xff…

【注解】反序列化时匹配多个 JSON 属性名 @JsonAlias 详解

JsonAlias 注解是 Jackson 提供的一个功能强大的注解,允许一个字段在反序列化时匹配多个 JSON 属性名。它适用于在处理多种输入数据格式时,或当 JSON 数据的键名可能变化时。 一、JsonAlias 的作用 多种别名:JsonAlias 允许你为一个字段定义…

利用深度学习技术来实现街景图像的语义分割(街景图像语义分割)

本项目致力于利用深度学习技术来实现街景图像的语义分割。通过精确地识别和分类图像中的每个像素,该技术能够自动划分出街道、人行道、车辆、行人等各种不同的物体类别。这在智能交通系统、自动驾驶、城市规划等领域有着广泛的应用前景。 技术实现 深度学习模型&am…

网站上线流程完全手册:域名、服务器与CDN

网站上线的核心要点 需要买域名 域名备案(国内) 买服务器 把服务器IP和域名(网址)绑定 把本地网站代码文件上传到服务器上 我来先来了解下以上的概念 域名介绍 域名是网站的地址,类似于你的家在街上的位置。它让人们通过简单的名字(如 www.baidu.…

大模型时代的AI应用开发,可以不用,但必须会

成熟的“格子衫”和年轻的“脸庞”,与开发者有关的大会总是少不了这两种元素,Create 2024百度AI开发者大会也不例外。 过去几十年,层出不穷的编程语言、框架等新技术,把一代又一代年轻的脸庞,塑造为成熟的格子衫&…

网络安全威胁2024年中报告

近日,奇安信威胁情报中心发布《网络安全威胁2024年中报告》,内容涵盖高级持续性威胁(APT)、勒索软件、互联网黑产、漏洞利用等几方面。 APT攻击活动:2024 年上半年,APT 攻击主要集中在信息技术、政府、科研…

设计模式笔记07(java版)

文章目录 迭代器模式定义结构优缺点使用场景迭代器模式在JDK源码中的使用 访问者模式定义结构案例实现优缺点使用场景扩展1. 分派:2. 动态分派:3. 静态分派:4. 双分派: 备忘录模式概述定义结构“黑箱”备忘录模式优缺点使用场景 解…

递归神经网络 (RNN) 简介

文章目录 一、介绍二、什么是递归神经网络 (RNN)?三、展开递归神经网络四、训练递归神经网络五、RNN 的类型六、现实生活中的 RNN 用例七、RNN 的两个主要限制八、RNN的变体8.1 双向递归神经网络 (BRNN)8.2 长短期记忆…

色彩的含义和使用色彩象征的艺术

无论你走到哪里,你都能看到颜色:天空中的白云,绿色的植被逐渐上升,灰色的石头结构和红砖建筑,在你脚下磨砺着棕色的土壤。你不只是看到这些颜色......你感觉到它们。 一,颜色的含义从何而来? 熟…

华为OD算法题整理目录

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…