国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

淺談Linux內(nèi)核的實(shí)時(shí)性優(yōu)化

系統(tǒng) Linux
ftrace是一個(gè)很強(qiáng)大的調(diào)試工具,除了常用的函數(shù)跟蹤器能讓我們輕松知道一個(gè)函數(shù)的執(zhí)行耗時(shí)之外,它強(qiáng)大的event機(jī)制,更是可以直接讓我們?cè)隍?qū)動(dòng)或者內(nèi)核中添加跟蹤點(diǎn),輸出內(nèi)核執(zhí)行過程中的各類數(shù)據(jù),讓我們輕松洞察內(nèi)核的執(zhí)行過程。

1.實(shí)時(shí)系統(tǒng)的概念

1.1什么是實(shí)時(shí)操作系統(tǒng)

什么是實(shí)時(shí)操作系統(tǒng)?接觸過嵌入式的小伙伴可能會(huì)知道,實(shí)時(shí)操作系統(tǒng)是指在嵌入式領(lǐng)域廣泛應(yīng)用的各類RTOS(Real Time Operating System)。其中最具代表性的有國(guó)外的μC/OS-III、FreeRTOS、Vxworks等,國(guó)內(nèi)的代表有RT-Thread和LiteOS。

圖1:常見的實(shí)時(shí)操作系統(tǒng)

在這些眾多的RTOS系統(tǒng)里面既有開源的也有商業(yè)的,同時(shí)還有一些是行業(yè)專用的,比如enea公司推出的OSE系統(tǒng)就是通信行業(yè)早期的基站設(shè)備應(yīng)用比較廣泛的系統(tǒng)。無論是開源或是商業(yè),這類系統(tǒng)都有一個(gè)最顯著的特點(diǎn),就是它們都具有很高的實(shí)時(shí)性。也是因?yàn)檫@個(gè)特點(diǎn),它們都被集中應(yīng)用在了嵌入式領(lǐng)域,特別是工控領(lǐng)域,例如工業(yè)制造控制、導(dǎo)彈飛機(jī)導(dǎo)航、電力設(shè)備監(jiān)控等。歷史上有很多著名的航空航天設(shè)備都使用到了實(shí)時(shí)的操作系統(tǒng)。比如登陸火星的鳳凰號(hào)、好奇號(hào)火星探測(cè)器,它們所采用的操作系統(tǒng)就是美國(guó)WindRiver公司推出的Vxworks。那什么是系統(tǒng)的實(shí)時(shí)性呢?Linux系統(tǒng)在嵌入式領(lǐng)域也有大量使用,那Linux系統(tǒng)支不支持實(shí)時(shí)性呢?

1.2 Linux實(shí)時(shí)性、軟實(shí)時(shí)和硬實(shí)時(shí)

實(shí)時(shí)性指的是一個(gè)操作系統(tǒng)能夠在規(guī)定的時(shí)間點(diǎn)內(nèi)完成指定的任務(wù)操作,一旦超過這個(gè)時(shí)間點(diǎn)會(huì)對(duì)整個(gè)系統(tǒng)帶來不可估量的后果。與此相對(duì)的是一般操作系統(tǒng),它更注重用戶體驗(yàn),系統(tǒng)偶爾卡頓不會(huì)給用戶帶來災(zāi)難性后果。實(shí)時(shí)性反映了一個(gè)系統(tǒng)行為控制的精準(zhǔn)能力,具體體現(xiàn)在定時(shí)器的精準(zhǔn)度高,中斷響應(yīng)及時(shí)以及系統(tǒng)的行為固定且可預(yù)估等。

Linux系統(tǒng)最初是按照分時(shí)系統(tǒng)設(shè)計(jì)并推出的,再加上在歷史版本中使用的調(diào)度算法目的是公平的分配和使用各種系統(tǒng)資源,保證CPU被各個(gè)進(jìn)程公平的使用,所以早期并不支持實(shí)時(shí)性。但是在后來的2.6版本開始,加入了內(nèi)核搶占的功能,使它的實(shí)時(shí)性得到了提升,在某種程度上具備了軟實(shí)時(shí)的能力。軟實(shí)時(shí)指的是系統(tǒng)對(duì)于時(shí)限要求并不是十分的嚴(yán)格,在一些情況下允許系統(tǒng)超限完成。

舉個(gè)例子,我們?cè)赑C機(jī)上使用鼠標(biāo)操作,偶爾會(huì)出現(xiàn)卡頓延遲,這種情況除了讓我們抓狂影響使用體驗(yàn)之外并不會(huì)給我們帶來嚴(yán)重的影響,大家平時(shí)在使用電腦時(shí)遇到鼠標(biāo)圖標(biāo)轉(zhuǎn)圈圈同時(shí)界面不響應(yīng)操作就是一個(gè)例子。再比如視頻信號(hào)采集,偶爾丟失幾個(gè)數(shù)據(jù)幀,并不會(huì)對(duì)視頻最后的播放帶來嚴(yán)重的畫面缺失。但是硬實(shí)時(shí)就不一樣,它對(duì)操作系統(tǒng)的行為有著嚴(yán)格的時(shí)限要求,超出時(shí)限往往會(huì)帶來災(zāi)難性后果。

比如在我們?nèi)粘I钪惺褂玫钠嚩寂鋫淞税踩珰饽?,汽車在發(fā)生激烈碰撞時(shí)可能會(huì)在0.2s內(nèi)停下,那就要求氣囊在0.02s內(nèi)充氣完畢并彈出,超出這個(gè)時(shí)間乘客可能就會(huì)面臨生命危險(xiǎn)。再比如導(dǎo)彈防御系統(tǒng),當(dāng)敵方導(dǎo)彈來襲時(shí)攔截系統(tǒng)必須做出100%的精準(zhǔn)反應(yīng)并計(jì)算出彈道軌跡進(jìn)行攔截,稍有延遲就會(huì)造成攔截失敗,這種后果是不可接受的。這就是硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)的區(qū)別。但是由于Linux系統(tǒng)內(nèi)核過于龐大且模塊眾多,內(nèi)核中仍然有不少影響實(shí)時(shí)性的因素,比如使用大量自旋鎖、中斷禁止、時(shí)鐘粒度等,使其距離us級(jí)別的控制精度還有很大的距離。但是也不能因此認(rèn)定Linux系統(tǒng)今后就不能用于實(shí)時(shí)控制領(lǐng)域。

其實(shí)Linux內(nèi)核一路發(fā)展過來,在歷史的版本主線中仍然有很多技術(shù)公司或者大牛為了提升Linux系統(tǒng)的實(shí)時(shí)性而努力著,他們或是在某個(gè)版本上發(fā)布實(shí)時(shí)補(bǔ)丁,或是對(duì)內(nèi)核進(jìn)行一定程度上的改造,具體的代表有RTLinux、RTAI(Real-Time Application Interface)和Xenomai等。

RTLinux全稱叫做AReal-Time Linux,它由美國(guó)新墨西哥礦業(yè)及科技學(xué)院的V. Yodaiken開發(fā)。RTLinux采用了雙內(nèi)核的做法,可以說是開創(chuàng)了雙內(nèi)核法的先河。簡(jiǎn)單理解就是系統(tǒng)中存在兩個(gè)內(nèi)核,實(shí)時(shí)核和非實(shí)時(shí)核。底層硬件資源和實(shí)時(shí)的內(nèi)核打交道繞開非實(shí)時(shí)核,來自硬件的中斷源由實(shí)時(shí)核全面接管,把非實(shí)時(shí)的Linux內(nèi)核當(dāng)成實(shí)時(shí)核上的一個(gè)低優(yōu)先級(jí)的進(jìn)程來運(yùn)行,通過這種方式確保實(shí)時(shí)核上的中斷和任務(wù)得到優(yōu)先響應(yīng),提升了實(shí)時(shí)性。

Xenomai也借鑒了RTLinux的雙內(nèi)核做法,內(nèi)部也有實(shí)時(shí)核和非實(shí)時(shí)核。但不同的是Xenomai在底層硬件和兩個(gè)內(nèi)核之間還加了一層硬件抽象層ADEOS(Adoptive Domain Environment for Operating System),實(shí)時(shí)核和非實(shí)時(shí)核作為硬件抽象層的兩個(gè)域而存在,Xenomai內(nèi)核屬于實(shí)時(shí)域,Linux內(nèi)核屬于非實(shí)時(shí)域。ADEOS在系統(tǒng)的關(guān)鍵路徑中對(duì)中斷進(jìn)行攔截,優(yōu)先響應(yīng)Xenomai實(shí)時(shí)域的中斷,當(dāng)沒有實(shí)時(shí)任務(wù)和中斷需要處理的時(shí)候才會(huì)輪到Linux內(nèi)核執(zhí)行。兩者對(duì)比如下。

圖2:RTLinux和Xenomai框架對(duì)比

由于版權(quán)、技術(shù)專利等因素,RTLinux已經(jīng)不再更新。而Xenomai因?yàn)樽⒅赝卣剐?,可移植性和可維護(hù)性,對(duì)開發(fā)者相對(duì)友好,目前還在不斷推出補(bǔ)丁,并且在社區(qū)活躍度很高,在工控領(lǐng)域也有不少成功應(yīng)用的案例。這些基于Linux系統(tǒng)去改造從而提升實(shí)時(shí)性的系統(tǒng)的出現(xiàn),使得Linux系統(tǒng)在發(fā)展過程中在實(shí)時(shí)性的研究上熱度不減。甚至有不少人從Linux系統(tǒng)實(shí)時(shí)性研究入手,深入去學(xué)習(xí)Linux內(nèi)核的調(diào)度機(jī)制、中斷機(jī)制、定時(shí)器機(jī)制等,逐漸發(fā)展成自己的興趣和愛好。從我們作為普通技術(shù)族的實(shí)力來說,可能不具備像國(guó)外的公司或者一些技術(shù)組織大改并發(fā)布實(shí)時(shí)Linux的能力。而想要提升系統(tǒng)實(shí)時(shí)性,有的是出于自身工作的需要,有的則是帶著個(gè)人的興趣愛好去鉆研,那么如果想提升Linux內(nèi)核的實(shí)時(shí)性,我們?cè)撛趺醋瞿?

2.Linux實(shí)時(shí)性優(yōu)化

2.1 實(shí)時(shí)性優(yōu)化和時(shí)鐘精度

知其然并知其所以然,知道影響實(shí)時(shí)性的因素才能很好的優(yōu)化改造它。目前影響Linux內(nèi)核實(shí)時(shí)性因素主要有時(shí)鐘精度、系統(tǒng)中斷、進(jìn)程調(diào)度算法和內(nèi)核可搶占性等。每一塊都可以深入研究并做出相應(yīng)的優(yōu)化。首先是時(shí)鐘精度,時(shí)鐘就像是一個(gè)系統(tǒng)的脈搏,系統(tǒng)進(jìn)程的調(diào)度切換是按照時(shí)鐘節(jié)拍來進(jìn)行的。目前Linux內(nèi)核支持幾種不同的系統(tǒng)節(jié)拍,可以在用戶編譯內(nèi)核時(shí)配置。假設(shè)當(dāng)前的系統(tǒng)節(jié)拍是100Hz,那么系統(tǒng)的時(shí)鐘粒度就是10ms,如果提升到1000Hz,那么時(shí)鐘粒度就是1ms,精度提升了10倍。

圖3:編譯內(nèi)核系統(tǒng)節(jié)拍設(shè)置

上面這張圖是CentOS7.6發(fā)行版系統(tǒng)默認(rèn)的系統(tǒng)節(jié)拍設(shè)置。時(shí)鐘精度的提升最直接的影響就是系統(tǒng)中的調(diào)度動(dòng)作加快了,進(jìn)程的響應(yīng)也更為及時(shí),但隨著而來的是時(shí)鐘中斷頻率的加快,這也加大了系統(tǒng)的開銷和壓力,因?yàn)闀?huì)頻繁的響應(yīng)系統(tǒng)的時(shí)鐘中斷。在某些CPU消耗型的進(jìn)程上會(huì)由于系統(tǒng)頻繁的進(jìn)行進(jìn)程切換而導(dǎo)致CPU資源浪費(fèi),CPU的時(shí)間會(huì)浪費(fèi)在進(jìn)程切換上,因?yàn)閺倪M(jìn)程切換到實(shí)際被調(diào)度執(zhí)行之間有一個(gè)時(shí)間差,叫做進(jìn)程切換開銷,所以好和壞我們還是需要根據(jù)自己的系統(tǒng)表現(xiàn)來看待。

2.2 中斷

其次是中斷。無論是RTOS還是Linux,硬件中斷在系統(tǒng)當(dāng)中的響應(yīng)優(yōu)先級(jí)永遠(yuǎn)是最高的。RTOS由于支持中斷優(yōu)先級(jí),在實(shí)際使用過程中可以根據(jù)產(chǎn)品的實(shí)際情況針對(duì)不同的外設(shè)場(chǎng)景設(shè)置不同的優(yōu)先級(jí),且高優(yōu)先級(jí)的中斷可以搶占低優(yōu)先級(jí)的中斷,使得RTOS的中斷響應(yīng)非常迅速。Linux系統(tǒng)中的中斷模塊遠(yuǎn)比RTOS系統(tǒng)復(fù)雜得多。

通常,Linux系統(tǒng)在進(jìn)入一個(gè)中斷時(shí)候,會(huì)禁止本地CPU的中斷。在處理具體某一個(gè)中斷的時(shí)候,由于禁止了本地CPU中斷(NMI類型的中斷除外),當(dāng)有新的中斷到來的時(shí)候只好掛起,只有當(dāng)前的中斷處理完才打開本地中斷并響應(yīng)新的中斷。如果系統(tǒng)中存在大量不同類型的中斷,勢(shì)必會(huì)有一些中斷被延遲得不到及時(shí)響應(yīng),這種延遲現(xiàn)象在單核CPU上表現(xiàn)尤為明顯。針對(duì)這種情況,就要求我們?cè)诰帉憣?shí)際中斷處理函數(shù)的時(shí)候,盡量在中斷處理函數(shù)中不做復(fù)雜的操作,堅(jiān)守中斷處理函數(shù)“快進(jìn)快出”的原則。比如只讀取硬件寄存器等簡(jiǎn)單操作即可,剩下的數(shù)據(jù)處理的操作放到中斷下半部中去執(zhí)行,這就是所謂的“中斷線程化”。

傳統(tǒng)上的中斷下半部有軟中斷、tasklet、工作隊(duì)列,它們的優(yōu)先級(jí)也從高到低。軟中斷和tasklet工作在中斷上下文不允許休眠它的優(yōu)先級(jí)比工作隊(duì)列高,工作隊(duì)列工作在進(jìn)程上下文允許休眠但是優(yōu)先級(jí)最低,所以在實(shí)際編程開發(fā)中需要我們根據(jù)場(chǎng)景選擇性的使用。如果是多核CPU,那么可以根據(jù)實(shí)際的中斷情況把不同類型的中斷遷移綁定到不同的CPU上,避免不同中斷之間的干擾。下面以I.MX6DL硬件平臺(tái)為例子介紹中斷遷移的使用。首先,通過#cat /proc/interrupts指令查看系統(tǒng)的所有中斷,如下圖所示:

圖4:綁定中斷前的系統(tǒng)中斷分布

從上面圖中可以看出,當(dāng)前的硬件平臺(tái)一共有4顆CPU,其中IMX-uart和imx-i2c的中斷集中發(fā)生在CPU0和CPU3,從第一列可以知道它們的中斷號(hào)分別是58和69。接下來我們可以將IMX-uart中斷全部遷移到CPU1上,讓CPU0只響應(yīng)imx-i2c中斷。通過# echo "2" > /proc/irq/58/smp_affinity指令即可完成遷移。注意,這里的數(shù)字“2”表示CPU編號(hào),它是從1開始。遷移后IMX-uart中斷情況如下:

圖5:綁定中斷后的系統(tǒng)中斷分布

從前后兩張圖對(duì)比可以看出,中斷遷移前,IMX-uart在CPU3上的中斷次數(shù)為1824次,在CPU0上中斷次數(shù)為727次。中斷遷移后,CPU0和CPU3不再響應(yīng)IMX-uart中斷,CPU1上IMX-uart中斷次數(shù)由15次增加到了115次。我曾經(jīng)在一個(gè)雙核硬件平臺(tái)上遇到過串口和SPI同時(shí)需要響應(yīng)大量中斷,它們互相影響導(dǎo)致中斷響應(yīng)不及時(shí)而出現(xiàn)數(shù)據(jù)丟失和輸出不及時(shí)的情況,最終就是通過中斷綁核解決的。中斷綁核其實(shí)不能完全消除對(duì)實(shí)時(shí)性的影響,只能最大程度去降低中斷對(duì)進(jìn)程的影響,因?yàn)橄到y(tǒng)中NMI中斷和本地時(shí)鐘中斷無法遷移和禁止。除了中斷可以綁核,應(yīng)用層的進(jìn)程和線程也可以改變它們與CPU的親和性,比如遷移到中斷較少的核上,也能在一定程度上提升進(jìn)程的實(shí)時(shí)性。

2.3進(jìn)程調(diào)度算法

除了前面提到的時(shí)鐘和中斷外,還有一個(gè)影響實(shí)時(shí)性最大的因素就是操作系統(tǒng)的調(diào)度算法。Linux系統(tǒng)目前默認(rèn)采用的是完全公平調(diào)度算法(CFS),它按照各個(gè)進(jìn)程的權(quán)重來分配運(yùn)行時(shí)間,在默認(rèn)使用CFS的情況下,我們可以給有實(shí)時(shí)性需求的進(jìn)程分配更高的優(yōu)先級(jí)和權(quán)重,可以看做是通過賦予更高的優(yōu)先級(jí)來獲得更好的實(shí)時(shí)性。 Linux內(nèi)核目前支持多種調(diào)度類,每一種調(diào)度類都是同一類型調(diào)度策略的集合,目前支持的調(diào)度類有:stop、deadline、realtime、CFS、idle。

通常情況下進(jìn)程都可選以上的幾種調(diào)度類,他們的優(yōu)先級(jí)依次由高到底排序,其中deadline調(diào)度類可選的調(diào)度策略有SCHED_DEADLINE,realtime調(diào)度類可選的調(diào)度策略有SCHED_FIFO和SCHED_RR,CFS可選的調(diào)度類有SCHED_NORMAI、SCHED_BATCH和SCHED_IDLE。在實(shí)際開發(fā)過程中,如果對(duì)時(shí)間有嚴(yán)格要求的實(shí)時(shí)進(jìn)程可以選擇deadline調(diào)度類,其他情況可以參考使用對(duì)應(yīng)的調(diào)度策略,改變調(diào)度策略,是最直接的一種優(yōu)化方式。其中deadline調(diào)度類的使用參考如下:

圖6:deadline調(diào)度策略編程參考

2.4 內(nèi)核其他限制

除了內(nèi)核本身的調(diào)度算法的原因,Linux內(nèi)核的調(diào)度模塊當(dāng)中還有其他限制因素。比如為了防止某個(gè)進(jìn)程或某一個(gè)進(jìn)程組長(zhǎng)時(shí)間的占用CPU時(shí)間,Linux內(nèi)核引入了一個(gè)“運(yùn)行帶寬”的概念,也就是說某一個(gè)進(jìn)程或進(jìn)程組使用CPU的總時(shí)間不能超過這個(gè)“帶寬”閾值,默認(rèn)值是0.95s。

圖7:“運(yùn)行帶寬”默認(rèn)值

實(shí)際開發(fā)過程中為了提高我們進(jìn)程的實(shí)時(shí)性,需要進(jìn)程長(zhǎng)時(shí)間地占用CPU資源,我們可以把這個(gè)“運(yùn)行帶寬”給禁止掉。實(shí)際上不同的產(chǎn)品和使用場(chǎng)景也會(huì)有著不同的優(yōu)化措施,如果設(shè)備的CPU核數(shù)比較多,我們可以從整體上去規(guī)劃系統(tǒng)對(duì)于CPU的使用,大量的使用中斷綁核和進(jìn)程、線程綁核達(dá)到對(duì)CPU的獨(dú)占使用。比如DPDK,它是Intel公司開發(fā)的一種高性能網(wǎng)絡(luò)加速組件。在Linux內(nèi)核中,傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)包的收發(fā)都是經(jīng)過網(wǎng)卡驅(qū)動(dòng)和內(nèi)核協(xié)議棧,網(wǎng)卡驅(qū)動(dòng)針對(duì)大數(shù)據(jù)包場(chǎng)景也做了大量的應(yīng)對(duì)措施,但是從本質(zhì)上來說,網(wǎng)絡(luò)包的收發(fā)在內(nèi)核中也還是依賴系統(tǒng)給我們實(shí)現(xiàn)好的軟中斷機(jī)制。

而DPDK則是使用輪詢代替了中斷,它繞過了Linux內(nèi)核的網(wǎng)絡(luò)模塊(驅(qū)動(dòng)和協(xié)議棧),不需要頻繁的進(jìn)行數(shù)據(jù)的拷貝,使得用戶空間可以直接看到硬件網(wǎng)卡的數(shù)據(jù),這大大減小了數(shù)據(jù)傳遞路程上的開銷。下面這張圖就是使用輪詢和DPDK獨(dú)占CPU的一個(gè)例子。

圖8:DPDK輪詢獨(dú)占CPU

再比如,irqbalance,它用于中斷收集分配,會(huì)根據(jù)系統(tǒng)的負(fù)載情況自動(dòng)進(jìn)入性能模式和節(jié)能模式,會(huì)將中斷平均分配到不同的CPU上去處理,特殊情況下我們需要禁止這個(gè)功能。還有其他比如禁止軟鎖、虛擬內(nèi)存管理優(yōu)化等。從上面可以看出,實(shí)時(shí)性優(yōu)化的方法多種多樣,甚至使用使用輪詢代替了中斷。但是關(guān)鍵還是在于我們要了解Linux內(nèi)核模塊的一些運(yùn)行機(jī)制,和這些機(jī)制在實(shí)現(xiàn)上本身就存在的缺點(diǎn),只有這樣我們才能針對(duì)具體問題作出對(duì)應(yīng)的優(yōu)化措施。以上提到的這些方法只是從大的方向而且很淺顯去分析和介紹Linux內(nèi)核的實(shí)時(shí)性影響因素和對(duì)應(yīng)的優(yōu)化措施。總結(jié)起來有以下幾點(diǎn):

  • 中斷優(yōu)先級(jí)高,要減少中斷對(duì)進(jìn)程的影響;
  • 進(jìn)程之間有優(yōu)先級(jí)之分,要合理改變優(yōu)先級(jí);
  • 內(nèi)核模塊的實(shí)現(xiàn)機(jī)制限制,在特殊情況下使用輪訓(xùn);
  • 提升系統(tǒng)節(jié)拍,提升定時(shí)精度;
  • 禁止irqbalance,防止進(jìn)入節(jié)能或休眠模式;

還有其他更為深入的細(xì)節(jié)我們沒有深入分析,比如Linux進(jìn)程切換耗時(shí),中斷響應(yīng)耗時(shí)、內(nèi)存分配開銷以及普通定時(shí)器精度和高精度定時(shí)器精度等,這些都是從細(xì)分的模塊方向去研究并優(yōu)化。進(jìn)程的切換涉及到主調(diào)度器和周期調(diào)度器,它們都不可避免地涉及到定時(shí)器,目前Linux內(nèi)核的高精度定時(shí)器也很難做到us級(jí)別,這也就決定了在調(diào)度的時(shí)間上也不是那么地準(zhǔn)確,再加上內(nèi)核中充斥著大量的自旋鎖,而自旋鎖的使用會(huì)關(guān)閉CPU的中斷進(jìn)而影響實(shí)時(shí)性,所以在開發(fā)過程中更加提高了對(duì)我們自身的水平要求。

3.總結(jié)

前面列舉的這些優(yōu)化措施實(shí)施起來很簡(jiǎn)單,但對(duì)于我們自身來說更要理解為什么要這么做。深入去分析Linux內(nèi)核的機(jī)制,實(shí)際的去閱讀內(nèi)核的模塊源碼,才會(huì)在實(shí)時(shí)性或者Linux內(nèi)核的學(xué)習(xí)道路上收獲更多。比如閱讀內(nèi)核源碼才會(huì)知道tasklet和workqueue的應(yīng)用場(chǎng)景的不同,盡管它們都是“中斷下半部”之一,但是它們?cè)趦?nèi)核當(dāng)中執(zhí)行的優(yōu)先級(jí)還是有很大區(qū)別。只有閱讀內(nèi)核源碼,才會(huì)知道tasklet和hrtimer也是基于軟中斷的,而且這個(gè)軟中斷也有優(yōu)先級(jí)之分。也只有閱讀內(nèi)核源碼,才會(huì)知道系統(tǒng)目前實(shí)現(xiàn)了多少種軟中斷,甚至我們自己也可以實(shí)現(xiàn)軟中斷獲得實(shí)時(shí)性的提升,盡管Linux內(nèi)核不建議我們這么做。

除了閱讀內(nèi)核的源碼,掌握調(diào)試跟蹤內(nèi)核的工具也必不可少,比如ftrace、trace-cmd、kernelshark、perf等。俗話說,工欲善其事必先利其器,熟練掌握這些工具的使用會(huì)讓我們優(yōu)化工作更高效。ftrace是一個(gè)很強(qiáng)大的調(diào)試工具,除了常用的函數(shù)跟蹤器能讓我們輕松知道一個(gè)函數(shù)的執(zhí)行耗時(shí)之外,它強(qiáng)大的event機(jī)制,更是可以直接讓我們?cè)隍?qū)動(dòng)或者內(nèi)核中添加跟蹤點(diǎn),輸出內(nèi)核執(zhí)行過程中的各類數(shù)據(jù),讓我們輕松洞察內(nèi)核的執(zhí)行過程。總之,實(shí)時(shí)性優(yōu)化是一條漫長(zhǎng)的道路,一路上也充滿了各種未知,鉆研越深越對(duì)它充滿好奇,也越覺得Linux內(nèi)核神奇。

比如你可能會(huì)好奇在Linux內(nèi)核中一個(gè)進(jìn)程從被喚醒到真正去執(zhí)行這個(gè)過程花了多長(zhǎng)時(shí)間。又比如一個(gè)外部中斷,從它被觸發(fā)到真正走到用戶注冊(cè)的中斷處理函數(shù),這個(gè)過程又花了多長(zhǎng)時(shí)間。只有自己親自到設(shè)備上去調(diào)試,去嘗試弄明白這些問題了才會(huì)發(fā)現(xiàn)Linux內(nèi)核有趣的地方,也才會(huì)越走越充實(shí)。以上只是我自己在工作過程中積累的一點(diǎn)觀點(diǎn)看法,如果讀者面對(duì)Linux內(nèi)核不知道從何處入手的話,個(gè)人建議不妨從實(shí)時(shí)性優(yōu)化這個(gè)方向入手,逐漸深入。

作者簡(jiǎn)介:鄧世強(qiáng),一線碼農(nóng),從事通信行業(yè),目前在一家通信公司擔(dān)任內(nèi)核工程師,日常喜歡鉆研學(xué)習(xí)Linux內(nèi)核知識(shí)。

責(zé)任編輯:武曉燕 來源: Linux閱碼場(chǎng)
相關(guān)推薦

2025-11-27 07:24:52

2011-07-05 18:30:44

站內(nèi)優(yōu)化

2016-07-22 10:50:56

Linux內(nèi)核無線子系統(tǒng)

2010-03-24 10:10:21

2011-06-02 15:03:07

SEO

2009-07-05 11:23:44

2020-06-04 08:36:55

Linux內(nèi)核線程

2024-12-04 10:39:00

Linux內(nèi)核技術(shù)性

2010-07-19 10:05:52

ibmdwLinux

2013-11-25 14:57:04

TCPTCP優(yōu)化

2015-11-09 11:19:36

Linux安全Linux內(nèi)核安全

2013-05-22 14:59:26

Linux操作系統(tǒng)實(shí)時(shí)性

2009-05-04 09:52:49

Oracle優(yōu)化排序

2023-03-27 09:08:11

Linux

2023-11-15 18:46:49

HBase數(shù)據(jù)庫開源

2012-06-01 10:23:47

Mobile Site優(yōu)化

2022-06-16 09:43:27

Linux實(shí)時(shí)

2025-03-12 04:25:00

Linux系統(tǒng)優(yōu)化應(yīng)用

2020-01-06 11:22:06

TCPLinux內(nèi)核

2019-09-18 08:53:55

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91麻豆精东视频| 波多野结衣欧美| 亚欧在线免费观看| 成人免费xxxxx在线观看| 亚洲精品视频中文字幕| 亚洲v中文字幕| www成人免费观看网站| 91牛牛免费视频| 久久99热精品这里久久精品| 日韩欧美中文字幕在线播放| 国产成a人无v码亚洲福利| 欧美hd在线| 在线日韩成人| 国产一区二区三区亚洲综合| 中文字幕在线观看播放| y4480在线8影院| 手机在线看福利| 国产乱子夫妻xx黑人xyx真爽| 日本日本精品二区免费| 国产日韩欧美在线播放| 欧美一区二区三区四区在线| 超薄丝袜一区二区| 中文字幕综合一区| 日韩三级影视基地| 日韩在线视频中文字幕| 亚洲国内高清视频| 日韩一区二区三区av| 日韩午夜激情视频| 久久久国产精品一区二区中文| 国产精品成久久久久| **女人18毛片一区二区| 精品国产日韩欧美| 一区二区三区在线电影| 伊人成人在线视频| 免费看欧美女人艹b| 成人自拍视频在线观看| 久久精品一区二区三区不卡牛牛| 久久品道一品道久久精品| 久久亚洲精华国产精华液| 自拍偷拍国产精品| 亚洲一区影音先锋| 亚洲欧美日韩国产综合在线| 亚洲免费在线视频| 亚洲欧美偷拍卡通变态| 最新成人av在线| 欧美特级限制片免费在线观看| 中文子幕无线码一区tr| 亚洲色图视频网| 天天色图综合网| 欧美群妇大交群中文字幕| 亚洲精品美女网站| 日韩精品久久久久久福利| 精品中文字幕在线观看| 91成人福利在线| 国产精品12| 欧洲精品视频在线| 国产一级不卡毛片| 污视频网站在线免费观看| 麻豆视频在线观看免费| 精品176二区| 亚洲成a人片| 亚洲精品白浆高清| 天天躁日日躁成人字幕aⅴ| 午夜精品久久久久99热蜜桃导演| 日韩午夜电影| 久久综合av免费| 日本精品一区二区三区高清| 精品国免费一区二区三区| 日韩中文有码在线视频| 欧美在线观看网址综合| 亚洲国产日韩美| 黄页免费在线观看| 外国成人直播| 精品中文一区| 国产激情精品久久久第一区二区| 亚洲二区视频在线| 一级做a爰片久久毛片美女图片| 国产精品欧美激情在线播放| 国产精品视频免费一区| 欧美国产日韩在线播放| 2024最新电影免费在线观看| 亚洲人成网www| 99久久婷婷国产综合精品| 精品成人av一区| 久久久久久久久久久免费精品 | 久久久女女女女999久久| 国产精品久久精品国产| 国产视频一视频二| 一二三四区在线观看| 首页国产精品| 国产欧美精品一区| 精品亚洲国产视频| 成人免费看片网址| 中文字幕在线中文字幕二区| 大胆国模一区二区三区| 国产麻豆午夜三级精品| 欧美一区二区高清| 超碰在线97av| wwwav91com| eeuss鲁片一区二区三区| 懂色av一区二区三区蜜臀| 国产精品乱码久久久久久| 欧美日韩精品在线| 性视频1819p久久| 久艹视频在线免费观看| 悠悠资源网亚洲青| 欧美日韩一区二区高清| √…a在线天堂一区| 午夜精品理论片| 波多野结衣综合网| 精品免费av在线| 风间由美一区二区三区在线观看| 91精品婷婷国产综合久久性色| 国产日韩在线一区二区三区| 亚洲xxxxxx| 精品一区二区免费看| 日韩久久精品电影| 分分操这里只有精品| 欧美日韩中出| 亚洲日本在线看| 国产欧美日韩精品在线观看| 在线理论视频| 在线播放一区| 亚洲视频电影图片偷拍一区| 六月激情综合网| 欧美电影免费播放| 日韩午夜中文字幕| 久久视频这里有精品| 一本久道综合色婷婷五月| 亚洲宅男网av| 欧美片网站yy| 亚洲精品影院| jizz性欧美2| 精品视频资源站| 自拍日韩亚洲一区在线| 欧美日韩破处| 日韩视频在线你懂得| 男女猛烈激情xx00免费视频| 成人高清电影网站| 精品国产乱码久久久久久影片| 男人添女人下部高潮视频在观看| 免费看成人吃奶视频在线| 日韩欧美一区二区免费| 已婚少妇美妙人妻系列| 99精品福利视频| 久久99精品视频一区97| 精品av中文字幕在线毛片| 欧美aaaaaa午夜精品| 日本欧美一二三区| 人人鲁人人莫人人爱精品| 亚洲制服欧美中文字幕中文字幕| 午夜精品一区二区三区在线观看 | 久草在线新免费首页资源站| 久久九九国产精品| 日韩亚洲不卡在线| 久久精品av| 色综合天天狠天天透天天伊人| 麻豆传媒在线免费| 亚洲自拍与偷拍| 日本手机在线视频| 美女黄网久久| 电影午夜精品一区二区三区| 国产精品天天看天天狠| 亚洲激情久久久| 男女啪啪在线观看| 欧美视频在线免费| 四虎永久在线高清国产精品| 福利电影一区二区| 在线电影看在线一区二区三区| 婷婷精品在线观看| 久久国产色av| 一本大道熟女人妻中文字幕在线| 一区二区小说| 九九久久精品一区| 日韩国产网站| 亚洲成人aaa| 成人在线观看免费网站| 在线观看亚洲a| 男人天堂午夜在线| 国产精品午夜电影| 亚洲一级免费在线观看| 91小视频免费看| 男的插女的下面视频| 国产精品一区二区在线看| 亚洲v国产v| 麻豆成人久久精品二区三区红 | 久久精品人人| 免费在线看黄色片| 国产精品乱码人人做人人爱| 国产视频一二区| 日韩**一区毛片| 欧美日本韩国在线| 国产精品18久久久| 黑森林精品导航| 欧美性猛交视频| 丝袜美女在线观看| 在线一区二区日韩| 欧美色图激情小说| 一本一本a久久| 国产欧美一区二区精品仙草咪 |