基于APIC時(shí)鐘的嵌入式Linux內(nèi)核實(shí)時(shí)化研究
上面調(diào)用invoke_softirq()函數(shù)執(zhí)行軟中斷使本文修改的重點(diǎn),修改中斷向量表,對(duì)向量表中所有軟中斷和實(shí)時(shí)中斷進(jìn)行排序,提前硬中斷的時(shí)間片,這樣使當(dāng)前處于pending狀態(tài)的軟中斷被屏蔽和懸掛,直到硬中斷處理完成為止。將invoke_softirq()函數(shù)修改為:
每個(gè)處理器時(shí)間片上能夠處理的中斷只有一個(gè),通過(guò)更新當(dāng)前任務(wù)時(shí)間片,使硬中斷在第一時(shí)間獲得CPU的響應(yīng),此時(shí)軟中斷將被屏蔽,這就保證了硬中斷能夠得到實(shí)時(shí)的響應(yīng)。
由于Linux采用8254完成時(shí)序分配,8254需要保留以保證系統(tǒng)的穩(wěn)定性。這樣的話,8254定時(shí)器和APIC必須共存,對(duì)于硬實(shí)時(shí)應(yīng)用,可采用APIC時(shí)鐘進(jìn)行計(jì)時(shí)。在8254中斷過(guò)程中,如果產(chǎn)生APIC中斷,采用通過(guò)本文的方琺必須對(duì)優(yōu)先對(duì)APIC時(shí)鐘進(jìn)行響應(yīng),會(huì)出現(xiàn)8254中斷被搶占,此時(shí)上下文切換等操作可能導(dǎo)致不可預(yù)料的錯(cuò)誤。解決問(wèn)題的方法可采取在APIC相應(yīng)中斷期間,關(guān)閉軟中斷,只有當(dāng)APIC中斷執(zhí)行完畢后,8254軟中斷才能夠被響應(yīng)。
3 實(shí)時(shí)性能測(cè)試與分析
實(shí)驗(yàn)條件1:CPU:PⅢ300 MHz,內(nèi)存為128 MB,硬盤(pán)為5 400轉(zhuǎn)的15 GB臺(tái)式機(jī)硬盤(pán),操作系統(tǒng)為Fedora2.6.18內(nèi)核。環(huán)境一(vd-d1)采用原版內(nèi)核,環(huán)境二(vd-d2)采用改進(jìn)型內(nèi)核。測(cè)試方法為通過(guò)測(cè)試內(nèi)核的上、下文切換、內(nèi)存延遲及模擬外部中斷來(lái)評(píng)價(jià)改造前后的性能。統(tǒng)計(jì)測(cè)試結(jié)果,如圖2、圖3所示。本文引用地址:http://www.ex-cimer.com/article/151459.htm
從實(shí)驗(yàn)結(jié)果可知,在上、下文切換中I/0讀/寫(xiě)和文件打開(kāi)和關(guān)閉,改進(jìn)型內(nèi)核的實(shí)時(shí)性能都有明顯提高,模擬TCP通道子項(xiàng),改進(jìn)型內(nèi)核性能提高了約6倍,但在對(duì)中斷響應(yīng)要求不是很高的null call測(cè)試中,中斷響應(yīng)時(shí)間幾乎相同。改進(jìn)型內(nèi)核中斷響應(yīng)速度始終穩(wěn)定在微妙級(jí)。在處理器負(fù)荷較輕時(shí)原始內(nèi)核有著良好的內(nèi)存延遲,隨著處理器負(fù)荷的進(jìn)一步加重,原始內(nèi)核的內(nèi)存延遲急劇增加。在最差情況下,系統(tǒng)響應(yīng)速度較慢,延遲時(shí)間達(dá)到5μs。而改進(jìn)型內(nèi)核在處理器負(fù)荷變化時(shí),系統(tǒng)的響應(yīng)速度變化不明顯,而且中斷響應(yīng)速度始終穩(wěn)定在2μs以下,性能穩(wěn)定。
實(shí)驗(yàn)條件2:采用改進(jìn)型內(nèi)核,環(huán)境一(vd-d2)CPU:PIII 300 MHz,環(huán)境二(vd-d3)CPU降頻為200 MHz(接近ARM9)。統(tǒng)計(jì)測(cè)試結(jié)果,獲得它們的文件系統(tǒng)延遲結(jié)果見(jiàn)圖4。圖4反映了同樣采用改進(jìn)型內(nèi)核,將CPU降頻前后,測(cè)試結(jié)果差距在10μs以?xún)?nèi),可看出在文件系統(tǒng)延遲中,處理器頻率的較小差距對(duì)內(nèi)核的影響不大。如采用高主頻的處理器,實(shí)驗(yàn)結(jié)果差距較大。
4 結(jié)語(yǔ)
本文通過(guò)修改APIC時(shí)鐘,可顯著地改進(jìn)嵌入式系統(tǒng)的實(shí)時(shí)性能,通過(guò)對(duì)比試驗(yàn)可看出改進(jìn)型內(nèi)核具有良好的實(shí)時(shí)性能,滿(mǎn)足了系統(tǒng)實(shí)時(shí)性和穩(wěn)定性要求。本文方法使得嵌入式Linux系統(tǒng)在高實(shí)時(shí)性領(lǐng)域中得到實(shí)際的應(yīng)用。
評(píng)論