在工業領域、高安全高可靠性領域,實時操作系統在其中發揮著重要的作用,從毫秒級,微秒級實時響應,決定著裝置系統能滿足何種嚴苛的要求。
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 綜合實時性能指標。
指標由以下三個部分構成:中斷響應時延 + 異步通知時延 + 實時任務調度時延。這三個部分加起來的時間越短越好,同時多次測量的值分布越集中越好。

測試用例實現方式是在一個實時任務上通過高精度定時器設定一個時延,并掛起該任務。在中斷到來時,通過同步原語通知實時任務異步事件到來,并喚醒。然后計算這段時間相對于期望時延的差值,得到這期間的時延數據。通過多次采樣,施加不同的壓力負載,獲得 RTOS 在不同情況下的實時性能指標情況。壓力負載則模擬 cpu、中斷響應、訪存操作。

RTOS 實時性測試結果對比

點擊放大查看更清晰
測試分成了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上非常流行、常見的實時性測試工具,它通過使用高精度定時器來測量兩個時間點的延時:
它編譯出來是一份用戶態測試程序,這份代碼在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 測試指標對比
點擊放大查看更清晰
上述是兩份對比圖,前面的是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 相關的開源貢獻中。
-
操作系統
+關注
關注
37文章
6990瀏覽量
124580 -
RT-Linux
+關注
關注
0文章
5瀏覽量
6285 -
Zephyr
+關注
關注
0文章
31瀏覽量
6161
發布評論請先 登錄
相關推薦
鴻道Intewell操作系統的Linux實時拓展方案

基于國產化鴻道Intewell操作系統的高性能實時運動控制解決方案
新書發布——《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》

簡單認識RTOS實時操作系統
實測14us,Linux-RT實時性能及開發案例分享—基于全志T507-H國產平臺
3568F-翼輝SylixOS國產操作系統演示案例
工業實時操作系統對比:鴻道Intewell跟rt-linux有啥區別

基于全志T507-H的Linux-RT實時性測試案例分享
實時操作系統之RT-Thread及FreeRTOS

微內核實時操作系統的介紹
新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐》

評論