|
RT-Thread
在工業(yè)領(lǐng)域、高安全高可靠性領(lǐng)域,實(shí)時(shí)操作系統(tǒng)在其中發(fā)揮著重要的作用,從毫秒級(jí),微秒級(jí)實(shí)時(shí)響應(yīng),決定著裝置系統(tǒng)能滿足何種嚴(yán)苛的要求。
RT-Thread Smart操作系統(tǒng)是一套基于RT-Thread內(nèi)核,并具備POSIX用戶(hù)態(tài)運(yùn)行環(huán)境的高性能實(shí)時(shí)操作系統(tǒng)。它類(lèi)似Linux、Windows的架構(gòu),具備用戶(hù)態(tài)和內(nèi)核態(tài)(并相分離),用戶(hù)態(tài)具備全地址空間(進(jìn)程模型),啟用了A核芯片中的MMU,多級(jí)頁(yè)表,實(shí)現(xiàn)了在A核SoC大芯片上的實(shí)時(shí)控制系統(tǒng)。
RT-Thread Smart在具備POSIX用戶(hù)態(tài)運(yùn)行環(huán)境后,其實(shí)時(shí)性如何,和一般的RTOS相比,和通用的帶實(shí)時(shí)補(bǔ)丁Linux操作系統(tǒng)相比,它的實(shí)時(shí)性能力到底如何。希望通過(guò)本文的測(cè)試給到大家一個(gè)對(duì)比認(rèn)識(shí)。
測(cè)試平臺(tái)
所有測(cè)試基于相同的一塊瑞芯微 RK3566開(kāi)發(fā)板,RK3566攜帶四核 64 位高性能 ARM Cortex-A55 處理器,主頻 1.8GHz,4GB LPDDR4X 內(nèi)存。
RT-Thread 內(nèi)核基于開(kāi)源主線倉(cāng)庫(kù) master 分支,平臺(tái) SDK 基于 RT-Thread Smart 專(zhuān)業(yè)版本,使用 gcc 工具鏈,優(yōu)化等級(jí) O2。
Linux-RT 內(nèi)核版本基于 linux-orangepi 倉(cāng)庫(kù) orange-pi-5.10-rk35xx-rt 分支,5.10內(nèi)核版本并已經(jīng)開(kāi)啟了實(shí)時(shí)補(bǔ)丁選項(xiàng)。
Zephyr內(nèi)核版本基于開(kāi)源主線倉(cāng)庫(kù)master分支,commit:7a492d308828b928074816c49d38de18b4dcfbb4, 編譯優(yōu)化等級(jí)通過(guò) Kconfig 配置為 O2。
RTOS 實(shí)時(shí)性能測(cè)試工具
首先是傳統(tǒng)的實(shí)時(shí)操作系統(tǒng)測(cè)試對(duì)比,對(duì)比的另一實(shí)時(shí)操作系統(tǒng)選擇的是Zephyr實(shí)時(shí)操作系統(tǒng),都運(yùn)行在4核SMP模式下進(jìn)行測(cè)試。本次測(cè)試工具選擇相同的測(cè)試用例代碼,用于衡量不同的壓力負(fù)載下的 RTOS 綜合實(shí)時(shí)性能指標(biāo)。
指標(biāo)由以下三個(gè)部分構(gòu)成:中斷響應(yīng)時(shí)延 + 異步通知時(shí)延 + 實(shí)時(shí)任務(wù)調(diào)度時(shí)延。這三個(gè)部分加起來(lái)的時(shí)間越短越好,同時(shí)多次測(cè)量的值分布越集中越好。
i3103hw13m464014819132.png (6.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
i3103hw13m464014819132.png
2024-9-18 11:55 上傳
測(cè)試用例實(shí)現(xiàn)方式是在一個(gè)實(shí)時(shí)任務(wù)上通過(guò)高精度定時(shí)器設(shè)定一個(gè)時(shí)延,并掛起該任務(wù)。在中斷到來(lái)時(shí),通過(guò)同步原語(yǔ)通知實(shí)時(shí)任務(wù)異步事件到來(lái),并喚醒。然后計(jì)算這段時(shí)間相對(duì)于期望時(shí)延的差值,得到這期間的時(shí)延數(shù)據(jù)。通過(guò)多次采樣,施加不同的壓力負(fù)載,獲得 RTOS 在不同情況下的實(shí)時(shí)性能指標(biāo)情況。壓力負(fù)載則模擬 cpu、中斷響應(yīng)、訪存操作。
ritu505yjhe64014819232.jpg (86.01 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
ritu505yjhe64014819232.jpg
2024-9-18 11:55 上傳
RTOS 實(shí)時(shí)性測(cè)試結(jié)果對(duì)比
13bempfgout64014819332.png (164.68 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
13bempfgout64014819332.png
2024-9-18 11:55 上傳
點(diǎn)擊放大??查看更清晰
測(cè)試分成了4種情況:
● 無(wú)壓力負(fù)載時(shí)測(cè)試數(shù)據(jù),類(lèi)似于其他都不運(yùn)行,而是空跑;
● CPU計(jì)算負(fù)荷下的測(cè)試數(shù)據(jù),使用 Dhrystone 測(cè)試 CPU 負(fù)載,它是一種典型的整數(shù)運(yùn)算基準(zhǔn)程序,用于模擬高強(qiáng)度的計(jì)算場(chǎng)景,以評(píng)估系統(tǒng)在繁忙時(shí)的實(shí)時(shí)響應(yīng)能力。
● IO/中斷負(fù)荷下的測(cè)試數(shù)據(jù),通過(guò) IPI(Inter-Processor Interrupts)生成大量中斷請(qǐng)求,測(cè)試系統(tǒng)在執(zhí)行 IO 操作處理高頻中斷場(chǎng)景下的實(shí)時(shí)性能。
● 內(nèi)存負(fù)荷下的測(cè)試數(shù)據(jù),使用 MBW 測(cè)試工具進(jìn)行內(nèi)存帶寬壓力測(cè)試,模擬大規(guī)模數(shù)據(jù)傳輸?shù)膱?chǎng)景,考察系統(tǒng)在內(nèi)存資源緊張時(shí)的實(shí)時(shí)響應(yīng)情況。
通過(guò)上述結(jié)果可以發(fā)現(xiàn):RT-Thread Smart基本指標(biāo)在2.4us的延遲,當(dāng)IO/中斷,CPU計(jì)算負(fù)荷,內(nèi)存負(fù)荷上去時(shí),最大延遲會(huì)上升到8us附近。而Zephyr實(shí)時(shí)操作系統(tǒng)在一些極限點(diǎn)上延遲會(huì)到15us,甚至略顯夸張的525us(還好不是1ms?)。
cyclictest測(cè)試
cyclictest是Linux上非常流行、常見(jiàn)的實(shí)時(shí)性測(cè)試工具,它通過(guò)使用高精度定時(shí)器來(lái)測(cè)量?jī)蓚(gè)時(shí)間點(diǎn)的延時(shí):
kzilpkz0ozr64014819432.png (14.27 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
kzilpkz0ozr64014819432.png
2024-9-18 11:55 上傳
cyclictest 源碼來(lái)自項(xiàng)目 rt-tests release v1.0,參考官方 wiki :
https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start
它編譯出來(lái)是一份用戶(hù)態(tài)測(cè)試程序,這份代碼在Linux,RT-Thread Smart上都不需要進(jìn)行修改,直接通過(guò)gcc交叉工具鏈采用O2優(yōu)化選項(xiàng)進(jìn)行編譯即可。
Linux 測(cè)試使用命令:cyclictest -p 95 -d 0 -i 1000 -D 10m -m -n --histogram=100
rt-smart 測(cè)試使用命令:cyclictest -d 0 -i 1000 -D 10m -m -n --histogram=20(Linux 優(yōu)先級(jí)規(guī)則與 rt-thread 不同,保證 cyclictest 是系統(tǒng)中最高優(yōu)先級(jí)任務(wù)即可)
cpu 負(fù)載:在后臺(tái)啟動(dòng) dhrystone 任務(wù)。通過(guò) top 命令觀察,每個(gè)核啟動(dòng)一個(gè)時(shí) cpu 占用率峰值可以達(dá)到 99.7% 以上。
內(nèi)存負(fù)載:執(zhí)行 cyclictest 測(cè)試的同時(shí),運(yùn)行 mbw 任務(wù)模擬高內(nèi)存負(fù)載環(huán)境。
IO 負(fù)載:執(zhí)行 cyclictest 測(cè)試的同時(shí),運(yùn)行 iperf 服務(wù),并連接客戶(hù)端測(cè)試,以此模擬高網(wǎng)絡(luò)(IO)負(fù)載環(huán)境。
cyclic 測(cè)試指標(biāo)對(duì)比
3uuslbdcrku64014819532.png (99.11 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
3uuslbdcrku64014819532.png
2024-9-18 11:55 上傳
3oeafkrqsfj64014819632.png (127.22 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
3oeafkrqsfj64014819632.png
2024-9-18 11:55 上傳
點(diǎn)擊放大??查看更清晰
上述是兩份對(duì)比圖,前面的是cyclictest的min/avg/max對(duì)比圖。可以看到RT-Thread Smart的實(shí)時(shí)性表現(xiàn)都比較好,max值在11/12us左右,在內(nèi)存負(fù)載的情況下max值會(huì)到30+us。
下面的圖則是時(shí)延數(shù)據(jù)的分布情況,可以發(fā)現(xiàn)相對(duì)于 Linux-RT,rt-smart 下的測(cè)試指標(biāo)在各類(lèi)負(fù)載下的重復(fù)實(shí)驗(yàn)中基本上都比較集中。因此同為支持到POSIX用戶(hù)態(tài)應(yīng)用程序的RT-Thread Smart操作系統(tǒng),相比較帶實(shí)時(shí)補(bǔ)丁的Linux來(lái)說(shuō),它的實(shí)時(shí)性?xún)?yōu)勢(shì)也是非常明顯,相當(dāng)于提供POSIX應(yīng)用程序的同時(shí),依然具備非常好的實(shí)時(shí)性能力。
性能優(yōu)化是一個(gè)持久而漫長(zhǎng)的過(guò)程,這個(gè)其中需要持續(xù)的定位整體系統(tǒng)中的性能損耗點(diǎn),所以在這個(gè)過(guò)程中我們也在不斷迭代、追求極致,并加入更有效的手段、工具來(lái)輔助定位及解決問(wèn)題。
猜你喜歡:
WiFi6+藍(lán)牙+星閃,三合一開(kāi)發(fā)板,真香!
Github上熱門(mén) C 語(yǔ)言項(xiàng)目匯總!
嵌入式,可測(cè)試性軟件設(shè)計(jì)!
一些低功耗軟件設(shè)計(jì)的要點(diǎn)!
嵌入式 C 保護(hù)結(jié)構(gòu)體的方式
實(shí)用 | 10分鐘教你通過(guò)網(wǎng)頁(yè)點(diǎn)燈
談?wù)勄度胧杰浖募嫒菪裕?/strong> |
|