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