EtherCAT是一種由Beckhoff開發(fā)的開放實時以太網(wǎng)技術(shù),廣泛用于對精度和實時性要求較高的運(yùn)動控制設(shè)備和采集設(shè)備中。
由于我們處于特殊的位置,使我們在推廣EtherCAT主站協(xié)議棧的過程中,我們經(jīng)常會圍繞實時Linux系統(tǒng)與客戶展開討論。根據(jù)EtherCAT主站提供商Acontis公司對全球新客戶統(tǒng)計,選擇實時Linux系統(tǒng)的客戶比重在過去10年逐年增加。2019年新客戶中采用實時Linux作為控制器操作系統(tǒng)已超過60%。
從近幾年的經(jīng)驗中,對于實時Linux系統(tǒng)主要聚焦在采用RT-Preempt 還是Xenomai的爭論上。結(jié)合實時Linux系統(tǒng)專家Jan Altenberg在Embedded Linux會議上的講演。整理出此文,希望可以在RT-Preempt 和Xenomai之間選擇做出參考。
實時性
在和客戶的交流過程,部分工程師會把實時性與執(zhí)行速度或性能相混淆。Altenberg在講演中強(qiáng)調(diào):實時性與執(zhí)行速度和性能無關(guān)!
實時性的含義不是越快越好,而是在規(guī)定的時間內(nèi)完成任務(wù)的確定性(determinismand timing guarantees)。
在技術(shù)討論中,同樣客戶對EtherCAT協(xié)議不存在錯誤數(shù)據(jù)自動重傳機(jī)制有類似疑問。
EtherCAT主站的工作原理是按循環(huán)周期發(fā)送數(shù)據(jù)。所以EtherCAT在協(xié)議層面不會自動在后續(xù)周期重新發(fā)送失敗的過程數(shù)據(jù)。
在Embedded Linux會議講演中,Altenberg還表述了一個有趣的觀點,他希望大家忘掉“軟實時”即Softrealtime 的提法,只存在實時和非實時的、確定性和非確定性的區(qū)別。能保證確定性,那就是“硬實時” hardrealtime。
Xenomai和Preempt RT
目前,對實時Linux方案的選擇集中在Xenomai和Preempt RT之間。Xenomai是在LinuxKernel外增加獨立內(nèi)核的雙內(nèi)核方案,而Preempt RT是標(biāo)準(zhǔn)的單內(nèi)核實時方案。
圖1是Xenomai為代表的雙內(nèi)核方案的原理圖:
圖1 Xenomai原理圖
Altenberg認(rèn)為雙內(nèi)核實時方案有幾個明顯不足。首先,維護(hù)工作量大。其次,Xenomai不能使用標(biāo)準(zhǔn)C庫,實時應(yīng)用的開發(fā)需要特殊庫以及單獨的API。
主流的實時Linux方案是基于Preempt RT 的單內(nèi)核方案,通過最大限度地提高Linux內(nèi)核中的可搶占部分,使Linux本身具備實時性。如圖2 Premept RT原理圖所示:
圖2Preempt RT原理圖
大約80%的PreemptRT功能已經(jīng)融合進(jìn)Linux主線,所以任何Linux開發(fā)者都可以使用Preempt RT的Linux 內(nèi)核組件。
隨著剩下的20%功能逐漸融入Linux主線,未來有可能不需要在Linux安裝補(bǔ)丁程序而直接使用Preempt RT。
性能比較
實時性能最重要的指標(biāo)是延時。網(wǎng)上有不少文章,表示Xenomai在延遲方面有優(yōu)勢。Altenberg并不認(rèn)同這種觀點,他認(rèn)為是對Preempt RT的錯誤配置造成的。
為了證實,他們的團(tuán)隊分別找Xenomai和Preempt RT專家,在相同的硬件上進(jìn)行測試。測試對象是高負(fù)載下Xenomai和Preempt RT在延時Latency和抖動Jitter的表現(xiàn)整個測試程序運(yùn)行12個小時。
Altenberg強(qiáng)調(diào)了兩點,第一是測試的最壞結(jié)果才有意義;另外一點是系統(tǒng)拿到中斷后,在用戶空間的應(yīng)用響應(yīng)延時是對應(yīng)用最有意義的。
在用戶空間的測試結(jié)果,在測試中的最壞延時,Xenomai和 Preempt RT都在90-95 微秒左右。當(dāng)在Linux系統(tǒng)中只使用單核測試時,PREEMPT RT最壞的延時只有大約80微秒,結(jié)果優(yōu)于Xenomai。
在Kernel空間延時的測試結(jié)果,Xenomai最高延時在30微秒,單核運(yùn)行Preempt RT的最高延時60微秒。如果使用FIQ 快速中斷的話,Preempt RT的最壞延時也達(dá)到30微秒,平均延時甚至到達(dá)10微秒。
最終,對于開發(fā)人員最有意義的用戶空間內(nèi)最壞延時方面,兩種實時方案在該性能指標(biāo)上展示出近乎相同的數(shù)據(jù)。
但是Preempt RT幾乎已經(jīng)和Linux內(nèi)核主線合并,從系統(tǒng)的開發(fā)和維護(hù)角度,Preempt RT的工作量與標(biāo)準(zhǔn)Linux相同。這使Preempt RT與Xenomai相比具備更多優(yōu)勢。
審核編輯 :李倩
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5383瀏覽量
171147 -
Linux
+關(guān)注
關(guān)注
87文章
11232瀏覽量
208941 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6743瀏覽量
123198
原文標(biāo)題:如何選擇Linux操作系統(tǒng)實時擴(kuò)展的討論
文章出處:【微信號:ilinki,微信公眾號:智匯工業(yè)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論