【原創】xenomai與VxWorks實時性對比(Jitter對比)


版權聲明:本文為本文為博主原創文章,轉載請注明出處。如有問題,歡迎指正。博客地址:https://www.cnblogs.com/wsg1100/
(下面數據,僅供個人參考)

可能大部分人一直好奇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讀取時間戳耗時:

VxWorks avg min max
bmTimestampRead 0.249 0.162 0.487

xenomai讀取時間戳耗時:

Xenomai avg min max
bmTimestampRead 0.163 0.162 0.325

二、時鍾中斷Jitter對比

1. VxWorks

avg min max
bmIntJitterNoLoad 4.066 0.000 13.338
bmIntJitterSemLoad 4.066 0.000 13.338
bmIntJitterMqLoad 4.066 0.000 13.663
bmIntJitterDelayLoad 4.066 0.000 13.501

bmIntJitterNoLoad 空載,無任何壓力。

bmIntJitterSemLoadsemaphore壓力,兩個同等優先級任務對同一semaphore進行PV操作。

bmIntJitterMqLoad message queue壓力,兩個同等優先級任務使用兩個msgq相互發送接收1byte數據操作。

2.xenomai

測試時間2小時,定時周期100us,次數:7200萬次。單位us。(xenomai測試沒有VxWorks那么全面,后續添加相應壓力測試補充。。。)

avg min max
NoLoad 0.516 0.287 6.198
Load 0.768 0.325 6.859

NoLoad 空載測試,linux普通啟動后狀態。

Load linux加壓,stress -c 10 -m 4,xenomai內核沒有壓力。

三、任務Jitter對比

1. VxWorks

avg min max
bmTaskJitterNoLoad 4.066 0.000 15.290
bmTaskJitterSemLoad 4.066 0.000 15.778
bmTaskJitterMqLoad 4.066 0.000 15.778
bmTaskJitterDelayLoad 4.066 0.000 15.290

2.xenomai內核態任務Jitter

測試時間2小時,定時周期100us,任務優先級99,單位us。

avg min max
LinuxLoad 0.643 -0.282 10.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。

avg min max
Load 3.605 0.422 13.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
avg min max
bmTaskJitterNoLoad -0.249 1.637 13.199
bmTaskJitterSemLoad -0.788 1.489 12.087
bmTaskJitterMqLoad -0.241 1.790 12.683
bmTaskJitterDelayLoad -0.211 1.243 12.523

VxWorks畢竟是商業軟件,任務及系統的每一個階段都能詳細統計耗時。
xenomai由於其雙核的結構,在linux加壓還是在xenomai加壓都是應該思考的問題。

總的來說,對比VxWorks,xenomai壓力太簡單,並沒有對實時核加壓,根據VxWorks測試套件的具體測試方式,來對xenomai進行同樣的測試,才更具對比價值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM