介龍梅,徐有軍,邵國強
(大慶師范學(xué)院計算機科學(xué)與信息技術(shù)學(xué)院,黑龍江大慶 163712)
嵌入式Linux內(nèi)核實時性測試研究
介龍梅,徐有軍,邵國強
(大慶師范學(xué)院計算機科學(xué)與信息技術(shù)學(xué)院,黑龍江大慶163712)
介紹了嵌入式Linux內(nèi)核實時性問題的背景及其在實際中的應(yīng)用。提出了實時性測試的2個主要指標(biāo):進程切換時間和中斷延遲時間。前者測試包括2個方案:一是通過程序測量父子進程切換時間,二是借助Lmbench工具測量進程上下文切換時間;后者則采用測量時鐘中斷延遲的方法來實現(xiàn)。針對3個測試實驗,分別給出了方案設(shè)計、方案實現(xiàn)和測試結(jié)果與分析。最后在分析和實驗的基礎(chǔ)上得出幾點重要結(jié)論,并給出2種實時性的改進方案。
嵌入式Linux;實時性;進程調(diào)度延遲;中斷延遲
21世紀(jì)以來,嵌入式系統(tǒng)已經(jīng)應(yīng)用到人類生產(chǎn)和生活的諸多方面,從工業(yè)控制、航空航天,到車輛導(dǎo)航、醫(yī)療設(shè)備等。
Linux雖然在許多方面都表現(xiàn)出優(yōu)越特性,但其實時性卻較弱。標(biāo)準(zhǔn)的Linux并未提供實時的操作系統(tǒng)內(nèi)核,而有些應(yīng)用又對實時性提出有較高要求。比如PFX攝像機的項目,單核的實時性即無法滿足攝像機的現(xiàn)場需求,為此需要通過實驗對linux內(nèi)核在不同環(huán)境下的實時性展開測試和分析,以確定系統(tǒng)是否可以滿足實時性需求[1]。
進程切換時間和中斷延遲時間是影響Linux實時性的2個最重要因素,對Linux實時性的測試研究可從如上2個方面著手進行,再通過相關(guān)的測試程序和測試工具,測量進程切換時間和中斷延遲時間,從而依據(jù)測量的時間數(shù)據(jù)來衡量Linux的實時性能[2]。
1.1父子進程切換時間測量
1.1.1測試方案設(shè)計
程序開始運行后,首先創(chuàng)建2個管道A和B,而后創(chuàng)建一個子進程。子進程運行時,為保證在程序運行中不會有其它的進程搶占系統(tǒng)CPU,可將子進程的優(yōu)先級修改為99。子進程調(diào)用gettimeofday獲得當(dāng)前時間t1并輸出,此后進入一個5 000次的循環(huán),在循環(huán)中執(zhí)行2條語句,先讀取管道A中的數(shù)據(jù),再向管道B中寫入數(shù)據(jù)。
在父進程中,同樣將父進程的優(yōu)先級修改為99,而且也進入一個5 000次的循環(huán),在循環(huán)中執(zhí)行2條語句,先是向管道A中寫入數(shù)據(jù),再是讀取管道B中的數(shù)據(jù)。循環(huán)結(jié)束后,父進程調(diào)用gettimeofday獲得當(dāng)前時間t2并輸出。
1.1.2測試方案實現(xiàn)
1.1.2.1程序運行平臺
為使得程序的測試數(shù)據(jù)更加豐富和全面,測試程序?qū)⒃谌缦?個平臺中分別實現(xiàn)和運行。在此,給出其中2個典型平臺的實驗配置,預(yù)期設(shè)定如下:
1)x86平臺,CPU為Pentium4,主頻2.8GHz,Vmware虛擬機,操作系統(tǒng)為CentOS-5-5,Linux內(nèi)核版本為2.6.29.6。
2)x86平臺,CPU為Pentium4,主頻2.8GHz,Vmware虛擬機,操作系統(tǒng)為CentOS-5-5,Linux內(nèi)核版本為2.6.29.6,內(nèi)核中添加了Ingo Molnar實時補丁。
1.1.2.2程序流程圖
圖1為父子進程切換時間測試程序的流程圖。
1.1.3測試結(jié)果及分析
切換次數(shù)為10 000時,測試程序在各個平臺測得的進程切換時間如表1所示。時間的單位為微秒(μs)。對表1中的數(shù)據(jù)實施重點分析,可得具體結(jié)論如下:
1)在x86平臺下,進程切換的時間很短,在Linux-2.6.29.6和Linux-2.6.29.6(添加實時補?。┫碌钠骄鶗r間為26.49 μs和24.76 μs。
2)在S3C2410平臺下,進程切換的時間就大大增加,在Linux-2.6.29.6和Linux-2.6.29.6(添加實時補?。┫碌钠骄鶗r間為204.51μs和204.46μs(考慮到上文提到的時鐘中斷的影響,這個時間出現(xiàn)了誤差,大概在幾微秒范圍內(nèi)。
3)由上述的數(shù)據(jù)及分析可以得出結(jié)論:Linux的進程切換時間較長,嵌入式環(huán)境下可能會更長,尚不能有效滿足實時性的要求,仍然有待進一步的提升和改善。
1.2Lmbench測試工具
1.2.1測試方案設(shè)計
Lmbench是一套為UNIX/POSIX指定的微型測評工具,本文將特別選用其測量進程上下文切換時間的功能[3]。
1.2.2測試方案實現(xiàn)
啟動Lmbench后進入源碼解壓目錄,執(zhí)行make results命令開始測試。沒有編譯錯誤,提示對測試進行配置并生產(chǎn)配置腳本。Lmbench根據(jù)配置文檔執(zhí)行測試項,并在results目錄下根據(jù)系統(tǒng)類型、系統(tǒng)名和操作系統(tǒng)類型產(chǎn)生一個子目錄,測試結(jié)果存放在該目錄下。
測試的平臺為:x86平臺,CPU為Pentium4,主頻2.8GHz,Vmware虛擬機,操作系統(tǒng)為CentOS-5-5,Linux內(nèi)核版本為2.6.18。
1.2.3測試結(jié)果及分析
在CentOS-5-5,Linux內(nèi)核版本為2.6.18平臺下測得的進程上下文切換時間如表2所示,單位為微秒(μs)。其中,第二行Host OS表示不同的進程數(shù)量(2p、8p、16p)和進程上下文數(shù)據(jù)塊的大?。?K、16K、64K)。
圖1 父子進程切換時間測試流程圖Fig.1 The flow chart of the father-son process switching time delay test
表2 Lmbench測得的進程上下文切換時間(單位:μs)Tab.2 The switching time delay of process context tested by Lmbench(Unit:μs)
針對表2中所得數(shù)據(jù),展開如下分析:
1)進程上下文切換的時間與進程的數(shù)量和進程上下文數(shù)據(jù)塊的大小都有密切的關(guān)系。在進程數(shù)量較少的情況下(例如2個),進程上下文切換的時間較短;進程數(shù)量較多時,進程上下文切換的時間也會出現(xiàn)增加。同樣,數(shù)據(jù)塊較小時,切換時間也會較數(shù)據(jù)塊較大時要少上一些[4]。
2)由上述數(shù)據(jù)的線性增長可以得出結(jié)論:當(dāng)系統(tǒng)中進程數(shù)量較大,進程上下文的數(shù)據(jù)塊也較大時,尤其是系統(tǒng)負載也趨于可觀時,進程上下文切換的時間會顯著增大,以致實時性較差,甚至無法達到實時要求。
1.3時鐘中斷延遲測量實驗
1.3.1測試方案實現(xiàn)
測試方案的實現(xiàn)包括2部分:修改arch/arm/plat-s3c/ time.c文件中的代碼和編寫內(nèi)核模塊。其中,修改arch/arm/ plat-s3c/time.c是為了使內(nèi)核擁有計算時鐘中斷延遲的功能,而內(nèi)核模塊則是將內(nèi)核中保存時鐘中斷延遲時間變量的值輸出到proc文件系統(tǒng)中。因篇幅所限,在此僅概述其重點實現(xiàn)步驟,并作如下呈現(xiàn):
1)修改arch/arm/plat-s3c/time.c。
①聲明6個內(nèi)核變量;
②實現(xiàn)2個函數(shù):gettimeoffset和get_latency_time;
③在timer_interrupt()時鐘中斷服務(wù)程序開始處調(diào)用get _latency_time函數(shù),由此測得與時鐘中斷延遲相關(guān)的時間。
2)輸出內(nèi)核變量值的內(nèi)核模塊(利用proc文件系統(tǒng))。1.3.2 測試結(jié)果及分析
測試程序最終所得的時鐘中斷的延遲時間如表3所示。
表3 時鐘中斷的延遲時間(單位:μs)Tab.3 The timer interrupt delay(unit:μs)
研究可知,測試程序中,時鐘中斷服務(wù)程序開始執(zhí)行時,定時器4已走過的計數(shù)值更能精確表現(xiàn)出時鐘中斷的延遲。由于定時器4的初始值設(shè)置為42 250,即每次定時器4的值由42 250降至0時,即會產(chǎn)生時鐘中斷,而后再復(fù)位。該測試中,Linux的時鐘周期是5 ms,由此則可推算出定時器4的一個計數(shù)表示的時間大約是129 ns。
本文分析了與Linux實時性相關(guān)的一些體系機制,包括內(nèi)核搶占、時鐘、進程調(diào)度、中斷響應(yīng)[5],在實驗的基礎(chǔ)上得出如下技術(shù)研究結(jié)果:
1)Linux2.6內(nèi)核并不是完全可搶占,在中斷處理、Spinlock自旋鎖、內(nèi)核處理CPU私有數(shù)據(jù)結(jié)構(gòu)等很多情況下仍然不可搶占,這即無法保證實時進程在規(guī)定的時間內(nèi)得以運行。
2)在大多數(shù)平臺上,Linux時鐘中斷的頻率是100,這個精度無法滿足實時性的要求。
3)Linux2.6內(nèi)核的O(1)調(diào)度算法能滿足實時性的要求,但缺乏調(diào)度點以及優(yōu)先級反轉(zhuǎn)的問題依然無法保證實時任務(wù)的運行。
4)Linux內(nèi)核在臨界區(qū)運行時會關(guān)閉所有中斷,這就增加了中斷延遲時間,而臨界區(qū)代碼執(zhí)行時間的不確定性又使得中斷延遲時間的不確定性也隨即增加,從而影響系統(tǒng)實時性能。
綜上所述,目前標(biāo)準(zhǔn)Linux的實時性能仍然無法滿足很多實時應(yīng)用的需求,因而仍需對其進行功能拓展與完善。通過RTAI多內(nèi)核方案和Ingo Molnar的實時補丁可以在一定程度上滿足用戶實時性需要[6]。
[1]楊豐瑞,王兵.基于Adeos的Linux實時性改造的研究與實現(xiàn)[J].微電子學(xué)與計算機,2015,32(3):50-53,58.
[2]周保余,孔德剛,趙宏偉.嵌入式Linux實時性研究[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2011,29(4):339-343.
[3]嚴(yán)麗平,宋凱,鄧胡濱.基于嵌入式應(yīng)用的Linux內(nèi)核實時性改進研究[J].計算機工程與設(shè)計,2011,32(1):121-124.
[4]張璐璐.Linux內(nèi)核實時性的分析和研究[J].硅谷,2012(22):97-98.
[5]甘玲,劉柄宏.基于ADEOS的RTAI/Linux的研究及其實時性測試[J].計算機應(yīng)用與軟件,2010,27(2):163-165.
[6]馮川放,馬季.基于嵌入式LINUX系統(tǒng)的實時進程調(diào)度算法的研究[J].計算機應(yīng)用與軟件,2014,31(12):278-282.
The research on the real-time performance test of embedded Linux kernel
JIE Longmei,XU Youjun,SHAO Guoqiang
(Computer Science&Information Technology College,Daqing Normal University,Daqing Heilongjiang 163712,China)
The paper proposes the background and application of the real-time performance of embedded Linux kernel.Time delay from one process to another and interrupt delay are two main factors relating to real-time performance test.The former one includes two solutions:one is to test the time delay from father process to son process or on the contrary,another is testing the time delay between contexts by Lmbench tool;the latter one is implemented by testing the interrupt delay.The solution design,solution implementation,test result and analysis for the three test experiments are described individually.After that,several important solutions based on analysis and experiments are pointed out,as well as the two improvement solution for real-time performance.
embedded Linux;real-time performance;process scheduling delay;interrupt latency
TP393.02
A
2095-2163(2016)03-0105-03
2016-05-17
黑龍江省教育廳科學(xué)技術(shù)研究項目(12533002);大慶師范學(xué)院科學(xué)研究基金項目(12ZR08)。作者簡介:介龍梅(1981-),女,碩士,講師,主要研究方向:人工智能、嵌入式、3G通信。