通過輕型線程提高多核設(shè)備中的 Linux 實(shí)時(shí)性能_第1頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、通過輕型線程提高多核設(shè)備中的 linux 實(shí)時(shí)性能上個(gè)世紀(jì),研發(fā)人員投入了大量精力提高實(shí)時(shí)性能和行為,最聞名的是preempt_rt linux實(shí)時(shí)擴(kuò)展。最近,研發(fā)人員致力于討論適用于多核設(shè)備的linux用戶空間解決計(jì)劃,該解決計(jì)劃允許從用戶空間中挺直拜訪基礎(chǔ)硬件,從而可避開因?qū)inux內(nèi)核引入用戶空間應(yīng)用而帶來的額外系統(tǒng)開銷。這些用戶空間擴(kuò)展(有多個(gè))已首先由電信/網(wǎng)絡(luò)高性能 ip 數(shù)據(jù)包處理系統(tǒng)舉行驅(qū)動,以實(shí)現(xiàn)所謂的“裸金屬”實(shí)施,其中,多核設(shè)備中的linux用戶空間應(yīng)用可以模擬“無操作系統(tǒng)”解決計(jì)劃的執(zhí)行過程,即在每個(gè)內(nèi)核上舉行容易“運(yùn)行到完成”、輪詢循環(huán),以便舉行數(shù)據(jù)包處理。在從根本

2、上實(shí)現(xiàn)該目標(biāo)的同時(shí),該解決計(jì)劃仍可用于十分特別的用例。還有其他需要提高性能的用例無法通過以上解決計(jì)劃徹低解決嗎?假如有的話,請列舉出來,是否可應(yīng)用更完美的linux實(shí)時(shí)改進(jìn)?答案是絕對的,采納linux用戶空間輕型線程 (light-weight threading, lwt) 即可。我們來討論一下實(shí)時(shí) linux,以及輕型線程如何能成為適用于某些應(yīng)用的解決計(jì)劃。討論的重點(diǎn)受電信、網(wǎng)絡(luò)或常用通信應(yīng)用的影響,enea側(cè)重于這些應(yīng)用中采納的技術(shù)。但總體上來說,對輕型線程的重點(diǎn)應(yīng)用會使多方受益。實(shí)時(shí)linux及其解決的問題在過去的10 年中,linux 已在實(shí)時(shí)性能和行為方面取得了顯著的長進(jìn),滿足了

3、大量應(yīng)用的需求。詳細(xì)歸納如下:preempt_rtpreempt_rt大概是linux實(shí)時(shí)擴(kuò)展取得的最顯著的成就,preempt_rt數(shù)據(jù)包解決了多核設(shè)備linux中存在的特殊麻煩的問題,即“中斷延遲”問題。將大事/數(shù)據(jù)傳送到真切用戶空間應(yīng)用之前,處理linux內(nèi)核中的中斷占用的系統(tǒng)開銷十分高 - 該系統(tǒng)開銷往往會延遲其他中斷,從而增大發(fā)生中斷時(shí)測得的中斷信息接收方舉行處理的總體延遲。同樣,linux內(nèi)核中還有許多所謂的“重要部分”,可在其中通過自旋鎖禁用中斷。標(biāo)準(zhǔn)linux內(nèi)核的總體中斷延遲與許多實(shí)時(shí)應(yīng)用的最重要的中斷延遲要求不符,特殊是無線接入網(wǎng)(移動)和移動核心基礎(chǔ)設(shè)施,這兩者要求最差狀

4、況下的中斷延遲應(yīng)在20-30微秒范圍內(nèi)。這一點(diǎn)也適用于許多其他市場應(yīng)用。在迅速“nutshell”preempt_rt中,這一問題是通過以下方式解決的:將所有設(shè)備驅(qū)動器中斷句柄傳遞到可調(diào)度線程中,這樣可最大程度地削減linux內(nèi)核對中斷的處理工作,因此,無需等待前一中斷處理完成便可處理新中斷。之后,中斷處理睬變?yōu)槭軆?yōu)先級驅(qū)動,按照用戶需求,會先完成優(yōu)先級最高的中斷處理。將linux內(nèi)核中的全部死空間自旋鎖傳遞到互斥量中,從而允許其他內(nèi)核線程代替內(nèi)核空間自旋鎖運(yùn)行?;旧?,preempt_rt已按照十分高性能的實(shí)時(shí)標(biāo)準(zhǔn)將總體中斷延遲勝利縮短,這樣對大量linux應(yīng)用都十分有協(xié)助。要了解詳細(xì)應(yīng)用?

5、請繼續(xù)往下讀。用戶空間linux調(diào)節(jié)如上文所述,近年來,研發(fā)人員對linux用戶空間應(yīng)用投入了大量精力。目的是避開用戶空間應(yīng)用(linux 用戶對其附加價(jià)值投入了大量精力)占用linux內(nèi)核本身的系統(tǒng)開銷來處理某些特定的設(shè)備/中斷交互。linux采納的模型可極大程度地防止用戶空間應(yīng)用受到內(nèi)核的影響,在該模型中,全部用戶空間操作(包括線程)始終會映射到linux內(nèi)核,以便處理其i/o哀求。這樣便linux具有強(qiáng)大的行為和特性。但是,對于數(shù)據(jù)處理性能十分高的應(yīng)用來說,即使采納preempt_rt,linux也會有短時(shí)故障,這是由于,總是需要舉行l(wèi)inux內(nèi)核上下文切換才干挺直拜訪硬件。用戶空間li

6、nux實(shí)施允許應(yīng)用在不涉及l(fā)inux內(nèi)核的狀況下挺直拜訪硬件和中斷,并可極大程度地提高性能。但這種性能提升只能在i/o密度極高的環(huán)境中實(shí)現(xiàn)。大部分linux用戶空間調(diào)節(jié)都側(cè)重于單線程應(yīng)用(如高性能數(shù)據(jù)包處理),其中,linux下惟獨(dú)一個(gè)線程用于模擬多核設(shè)備中的“無操作系統(tǒng)”性能。多線程問題實(shí)時(shí)linux解決計(jì)劃調(diào)查中缺少的是仔細(xì)檢查多線程在實(shí)時(shí)應(yīng)用中的有效性。事實(shí)上,早在20世紀(jì)80年月linux浮現(xiàn)之前,人們就提出了需要采納嵌入式實(shí)時(shí)操作系統(tǒng)(rtos) 來實(shí)現(xiàn)低延遲、高吞吐量、極具實(shí)時(shí)特點(diǎn)的應(yīng)用。操作系統(tǒng)的結(jié)構(gòu)發(fā)生了變幻,但對這方面的需求卻沒有轉(zhuǎn)變。此類rtos解決計(jì)劃所具有的各種性能、行

7、為和特性是過去十多年中l(wèi)inux向來嘗試達(dá)到的。這并不意味著傾向于復(fù)原用法rtos,而是要達(dá)到rtos所具有的功能。就便攜性、應(yīng)用的廣大生態(tài)系統(tǒng)以及設(shè)備支持和常規(guī)支持來講,linux在實(shí)時(shí)嵌入式解決計(jì)劃中的總體價(jià)值是任何rtos都無法比擬的。存在兩個(gè)實(shí)際問題:多線程為何重要?假如多線程很重要,那么我們應(yīng)如何將rtos多線程性能、行為和特性添加到linux中,以便取得更大的勝利?關(guān)鍵問題是了解linux多線程實(shí)施與rtos,然后考慮可以舉行哪些改進(jìn)。多線程為何重要?30多年前,當(dāng)計(jì)算機(jī)解決計(jì)劃軟件設(shè)計(jì)人員遇到單線程解決計(jì)劃無法解決的復(fù)雜問題時(shí),便已提出了對多線程實(shí)時(shí)性方面的需求。所需解決計(jì)劃要求

8、單個(gè)應(yīng)用具有多個(gè)任務(wù),大概一些是計(jì)算任務(wù),一些是受i/o驅(qū)動的任務(wù),但是,就任務(wù)的總體執(zhí)行而言,全部任務(wù)均疏遠(yuǎn)相關(guān)。但多個(gè)任務(wù)疏遠(yuǎn)相關(guān)意味著這些任務(wù)應(yīng)分享一部分cpu時(shí)光才干達(dá)到cpu的有效總體利用率。在無數(shù)此類應(yīng)用中,必需禁止執(zhí)行某些操作、等待某些i/o大事或另一應(yīng)用發(fā)出的其他通信。因此浮現(xiàn)了容易的可執(zhí)行程序,這些可執(zhí)行程序可以處理多個(gè)線程,同時(shí)可禁用線程,并可在各線程之間舉行低延遲通信。并非全部實(shí)時(shí)應(yīng)用都需要支持重要的多線程處理功能。本文并未對相關(guān)應(yīng)用舉行分類。但很明顯,需要用法多線程處理功能的應(yīng)用是那些需要在協(xié)議中設(shè)定“等待狀態(tài)”的任何類型的復(fù)雜協(xié)議,即等待允許應(yīng)用繼續(xù)舉行的響應(yīng)或大事。

9、之后,應(yīng)用應(yīng)放棄對cpu的控制權(quán),允許運(yùn)行其他類似的線程,來代替該響應(yīng)或大事。大概上述教程對于許多人來說很容易。請注重,無數(shù)移動基礎(chǔ)設(shè)施和核心網(wǎng)絡(luò)設(shè)備供給商得出的結(jié)論是,雖然linux是當(dāng)前或?qū)硐到y(tǒng)的首選,但目前構(gòu)建的linux還不足以滿足業(yè)界的所有要求。緣由是什么?采納pthreads的linux多線程pthreads是由ieee規(guī)劃的可移植操作系統(tǒng)接口(posix)創(chuàng)建的,目的是為了解決unix中存在的高性能、多線程問題,之后被linux用在最早的版本中,用于為企業(yè)實(shí)施可移植unix,目前用于嵌入式應(yīng)用中。創(chuàng)建pthreads模型是為了解決原始unix fork/join模型創(chuàng)建unix

10、“子”進(jìn)程時(shí)浮現(xiàn)的問題。因?yàn)樵撃P蜕婕暗絼?chuàng)建(還可能涉及刪除)囫圇受內(nèi)存庇護(hù)的環(huán)境及執(zhí)行模式,因此unix進(jìn)程模型十分浩大。需要在unix下采納適用于多線程的較輕型模型,因此pthreads應(yīng)運(yùn)而生。但unix(也包括linux)模型是專為將內(nèi)核與用戶空間應(yīng)用盡全分別而設(shè)計(jì)的,其優(yōu)勢之一在于提供的庇護(hù)、平安性和牢靠性遠(yuǎn)勝于其他實(shí)施計(jì)劃(包括過去10幾年間用法的rtos)。實(shí)質(zhì)上,這意味著linux用戶空間中的每個(gè)pthread都會由linux內(nèi)核線程表示,因此,所有或大部分linux系統(tǒng)調(diào)用(特殊是設(shè)備驅(qū)動器)均可通過用戶空間舉行拜訪。但是,因?yàn)閛em創(chuàng)造的產(chǎn)品并不具備gpl,因此用戶空間中實(shí)

11、際存儲了全部嵌入式linux實(shí)時(shí)應(yīng)用。因此,在每種狀況下,用法pthreads都涉及到調(diào)用linux內(nèi)核,從而為本可以在本地實(shí)施的應(yīng)用帶來了額外的系統(tǒng)開銷。但請您稍稍考慮一下。采納上文提到的linux實(shí)時(shí)擴(kuò)展怎么樣?是的,preempt_rt可以解決linux內(nèi)核中存在的許多關(guān)于響應(yīng)性的問題,但不能真正解決多線程問題。實(shí)施用戶空間 linux可解決設(shè)備驅(qū)動器/中斷性能問題,但并不能真正解決多線程問題。linux實(shí)時(shí)容器可解決部分問題,但實(shí)時(shí)容器只是一種基于標(biāo)準(zhǔn)linux的用戶空間linux可視化技術(shù),并不能真正解決根本的多線程問題。輕型線程(lwt)復(fù)雜linux應(yīng)用的真正解決計(jì)劃之前針對li

12、nux提出了多種輕型線程模型的建議,但沒有一種模型能夠真正解決問題。緣由何在?由于大多數(shù)模型的功能都不是很強(qiáng)大。涉及復(fù)雜多線程應(yīng)用的下一代linux解決計(jì)劃真正需要的是適用于用戶空間linux應(yīng)用的全新linux模型。下文概括介紹了這種名為linux輕型線程(lwt)的解決計(jì)劃。將高性能、低系統(tǒng)開銷、多線程調(diào)度器植入linux用戶空間,來代替單獨(dú)的pthread。緣由何在?pthread系統(tǒng)開銷進(jìn)程和pthreads是linux了解的唯一調(diào)度實(shí)體。lwt pthread只是一個(gè)linux編碼執(zhí)行背景,可用于永遠(yuǎn)運(yùn)行pthread。因?yàn)橛脩艨臻g調(diào)度器始終保持控制,因此pthread絕不會被掛起,

13、省電模式除外。這種狀況不在本文的研究范圍。該用戶空間調(diào)度器的運(yùn)行和操作方式與某些傳統(tǒng)rtos高性能、低延遲實(shí)施徹低相同,但不會涉及到linux內(nèi)核。實(shí)施過程利用新用戶空間linux實(shí)施過程來挺直拜訪硬件。同樣也不涉及l(fā)inux內(nèi)核。上述lwt解決計(jì)劃可在任何linux實(shí)時(shí)應(yīng)用中實(shí)現(xiàn)動態(tài)性能的提升。enea已設(shè)計(jì)出上述lwt的一些原型,事實(shí)證實(shí),與linux pthreads在調(diào)度器系統(tǒng)開銷、特殊是上下文切換和線程間消息發(fā)送/通信延遲方面的性能相比,lwt性能可提高10倍。但是除了調(diào)度性能和線程間通信功能之外,lwt解決計(jì)劃還應(yīng)帶來什么?lwt概念除了在性能方面賽過linux pthreads之外,還有更多優(yōu)勢。解決計(jì)劃穩(wěn)健性的概念如何?與歷史悠久的rtos實(shí)時(shí)解決計(jì)劃一樣,lwt也需要具有以下額外linux特性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論