xenomai与VxWorks实时性对比(Jitter对比)

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。下面数据,仅供个人参考

可能大部分人一直好奇VxWorks与xenomai对比,实时性孰优孰劣,正好笔者最近要做一个这方面的对比,本文以实时系统其中一个重要指标—Jitter来进行简单对比。
jitter

一、环境

简单介绍一下环境:

硬件平台:双核cortex-A15处理器,CPU频率1.5GHZ,内存2GB。

xenomai:Linux-4.19+xenomai 3.1,具体配置:略;

VxWorks:VxWorks 7,具体配置:略;

注:由于VxWorks benchmark测试包含很多测试项,以下数据为其中包含的几项,每项测试2万次,整个benchmark才跑了两个多小时。xenomai则是每项跑了2小时,周期100us,这样差不多7200万次;

VxWorks读取时间戳耗时:

VxWorksavgminmax
bmTimestampRead0.2490.1620.487

xenomai读取时间戳耗时:

Xenomaiavgminmax
bmTimestampRead0.1630.1620.325

二、时钟中断Jitter对比

1. VxWorks

avgminmax
bmIntJitterNoLoad4.0660.00013.338
bmIntJitterSemLoad4.0660.00013.338
bmIntJitterMqLoad4.0660.00013.663
bmIntJitterDelayLoad4.0660.00013.501

bmIntJitterNoLoad空载,无任何压力。

bmIntJitterSemLoadsemaphore压力,两个同等优先级任务对同一semaphore进行PV操作。

bmIntJitterMqLoad message queue压力,两个同等优先级任务使用两个msgq相互发送接收1byte数据操作。

2.xenomai

测试时间2小时,定时周期100us,次数:7200万次。单位us。(xenomai测试没有VxWorks那么全面,后续添加相应压力测试补充。。。)

avgminmax
NoLoad0.5160.2876.198
Load0.7680.3256.859

NoLoad 空载测试,linux普通启动后状态。

Load linux加压,stress -c 10 -m 4,xenomai内核没有压力。

三、任务Jitter对比

1. VxWorks

avgminmax
bmTaskJitterNoLoad4.0660.00015.290
bmTaskJitterSemLoad4.0660.00015.778
bmTaskJitterMqLoad4.0660.00015.778
bmTaskJitterDelayLoad4.0660.00015.290

2.xenomai内核态任务Jitter

测试时间2小时,定时周期100us,任务优先级99,单位us。

avgminmax
LinuxLoad0.643-0.28210.519

LinuxLoad linux加压,stress -c 10 -m 4,xenomai内核没有压力。

为什么会存在负值?负值表示xenomai内核提前一点点将任务唤醒了。这与xenomai内核的定时处理机制有关,这是可以调整的,可关注本博客后续的xenomai内核解析。

具体数据分布如下:

0 1
0.25 37403654
0.75 5725957
1.25 5300392
1.75 3143282
2.25 2329224
2.75 1360290
3.25 511552
3.75 135384
4.25 37234
4.75 42208
5.25 18950
5.75 4495
6.25 532
6.75 295
7.25 172
7.75 43
8.25 13
8.75 6
9.25 1
9.75 3
10.25 1
10.75 2
11 1

3.xenomai用户态任务Jitter

测试时间2小时,定时周期100us,任务优先级99,单位us。

avgminmax
Load3.6050.42213.328

具体数据分布如下:

0 1
0.25 2
0.75 44
1.25 137
1.75 1540
2.25 13471
2.75 1943224
3.25 38106382
3.75 19789463
4.25 6749386
4.75 2940300
5.25 1812680
5.75 549134
6.25 47176
6.75 18063
7.25 16545
7.75 9921
8.25 1391
8.75 389
9.25 132
9.75 97
10.25 104
10.75 46
11.25 18
11.75 21
12.25 6
12.75 4
13.25 2
13.5 1
avgminmax
bmTaskJitterNoLoad-0.2491.63713.199
bmTaskJitterSemLoad-0.7881.48912.087
bmTaskJitterMqLoad-0.2411.79012.683
bmTaskJitterDelayLoad-0.2111.24312.523

VxWorks毕竟是商业软件,任务及系统的每一个阶段都能详细统计耗时。
xenomai由于其双核的结构,在linux加压还是在xenomai加压都是应该思考的问题。

总的来说,对比VxWorks,xenomai压力太简单,并没有对实时核加压,根据VxWorks测试套件的具体测试方式,来对xenomai进行同样的测试,才更具对比价值。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值