新聞中心
在現(xiàn)代計算機中,中斷是處理器和外部設(shè)備之間的通信方式。設(shè)備需要與計算機交互時,會發(fā)送一個中斷信號,將控制權(quán)移交給操作系統(tǒng),由操作系統(tǒng)負(fù)責(zé)處理該中斷并調(diào)用相應(yīng)的設(shè)備驅(qū)動程序。而設(shè)備的中斷處理程序,則可以在完成任務(wù)后將控制權(quán)返還回操作系統(tǒng)。

在 Linux 操作系統(tǒng)中,中斷是一個非常重要的機制,對系統(tǒng)的性能和可靠性都有很大的影響。隨著計算機系統(tǒng)的進(jìn)一步發(fā)展和性能的提高,中斷處理成為系統(tǒng)性能的瓶頸之一。為了提高系統(tǒng)的性能和可靠性,Linux 內(nèi)核引入了中斷聚合(Interrupt Aggregation)機制。本文將詳細(xì)介紹 linux 中斷聚合的原理、實現(xiàn)和應(yīng)用,以及其對系統(tǒng)性能和可靠性的影響。
一、中斷聚合的原理和實現(xiàn)
中斷聚合是將多個中斷請求合并成一個,由操作系統(tǒng)一次性處理的一項技術(shù)。例如,多個網(wǎng)絡(luò)包到達(dá)網(wǎng)絡(luò)接口時,會產(chǎn)生多個網(wǎng)絡(luò)中斷請求,中斷聚合將這些中斷請求合并成一個,由操作系統(tǒng)一次性處理,從而減少了中斷處理的次數(shù),提高了系統(tǒng)的性能。中斷聚合的基本原理是:將多個中斷請求合并成一個,讓一次中斷處理可以同時處理多個請求。這需要對硬件和操作系統(tǒng)進(jìn)行改造,以支持中斷聚合機制。
在硬件層面上,中斷聚合需要支持多個中斷請求的排隊和緩存,使多個中斷請求可以以較小的存儲空間暫存下來,等待一次性處理。在操作系統(tǒng)層面上,中斷聚合需要有一個中斷聚合引擎(Interrupt Coalescing Engine),負(fù)責(zé)將多個中斷請求合并成一個,并將其交給操作系統(tǒng)處理。在 Linux 內(nèi)核中,中斷聚合的實現(xiàn)是通過軟件層面的方式實現(xiàn)的,即使用了 NAPI(New API)機制。
NAPI 機制是 Linux 內(nèi)核中一種高效的網(wǎng)絡(luò)中斷處理機制,通過合并和壓縮網(wǎng)絡(luò)中斷請求,降低了 CPU 的中斷處理負(fù)載。其基本原理是:在接受網(wǎng)絡(luò)流量時,先將數(shù)據(jù)存入環(huán)形緩沖區(qū)中,當(dāng)緩沖區(qū)滿時,中斷引擎會觸發(fā)一次中斷處理程序,并將緩沖的大塊數(shù)據(jù)一次性處理。
二、中斷聚合的應(yīng)用和影響
中斷聚合機制的應(yīng)用領(lǐng)域不僅限于網(wǎng)絡(luò),還可以應(yīng)用到存儲系統(tǒng)、圖形系統(tǒng)等領(lǐng)域。中斷聚合可以大大減少中斷的數(shù)量和中斷處理的開銷,提高了系統(tǒng)的性能和可靠性。相比傳統(tǒng)的中斷處理方式,中斷聚合機制的性能提升可以達(dá)到 3 倍以上,且系統(tǒng)的吞吐量和響應(yīng)時間也有所改善。
另外,中斷聚合還具有降低 CPU 能耗的優(yōu)點。中斷聚合機制可以減少 CPU 的中斷響應(yīng)頻率,因此可以延長 CPU 上下文切換的時間間隔,降低系統(tǒng)的功耗和溫度。通過中斷聚合技術(shù),計算機系統(tǒng)的能效比可以提高幾倍,極大地降低了系統(tǒng)的運行成本。
三、中斷聚合的局限和解決方案
中斷聚合機制雖然可以提高系統(tǒng)的性能和可靠性,但也存在一些局限性。由于中斷聚合機制需要緩存和排隊多個中斷請求,因此會帶來一定的延遲。特別是在低延遲和高吞吐量應(yīng)用中,中斷聚合的延遲可能會成為瓶頸。此外,在單核或低核心數(shù)的系統(tǒng)中,可能不夠有效,因為中斷聚合需要多核心的支持才能發(fā)揮其更佳性能。
為了解決這些局限性,可以采用多種局部調(diào)整和系統(tǒng)優(yōu)化方案。例如,可以針對特定的應(yīng)用和設(shè)備進(jìn)行中斷聚合優(yōu)化,以降低延遲和提高吞吐量。還可以通過優(yōu)化中斷處理程序和中斷代價的方式,來降低中斷處理的負(fù)擔(dān)和功耗。此外,可采用基于多核的聚合方案,來提高中斷聚合的并發(fā)性和側(cè)緣效應(yīng),以進(jìn)一步提高性能和可靠性。
中斷聚合是 Linux 操作系統(tǒng)中一個重要的功能,可有效提高系統(tǒng)的性能和可靠性。通過合并和壓縮多個中斷請求,中斷聚合可以降低中斷的數(shù)量和處理負(fù)載,提高計算機系統(tǒng)的吞吐量和響應(yīng)時間。雖然中斷聚合存在一些局限性,但通過合理的優(yōu)化和系統(tǒng)設(shè)計,可以克服其局限,更大程度地發(fā)揮其優(yōu)點。
相關(guān)問題拓展閱讀:
- Linux內(nèi)核中斷之獲取中斷號
- linux應(yīng)用層怎么select底層的中斷
Linux內(nèi)核中斷之獲取中斷號
Linux內(nèi)核中可使用 platform_get_irq() 函數(shù)獲取 dts 文吵灶件中設(shè)置的中斷號。
函數(shù)原型: int platform_get_irq(struct platform_device *dev, unsigned int num)
定義文件: drivers\base\platform.c
中斷號獲取函數(shù) platform_get_irq() 調(diào)用流程如盯知下:
rk3399 使用的是 GICv3 ,對應(yīng) irq_domain->name 。
文件: drivers/irqchip/irq-gic-v3.c 。
translate() 函數(shù)實現(xiàn)如下:
以 RockPI 4A 單板 Debian 系統(tǒng)Linux 4.4內(nèi)核中的獲取 HDMI 中斷號為例。
1、查找中斷號
從手冊“Rockchip RK3399 TRM V1.3 Part1.pdf”中,可以查到 HDMI_IRQ 中斷號,即55。
2、 dts 配置
文件: arch/arm64/boot/dts/rockchip/rk3399.dtsi
hdmi 使用的是 GIC_SPI 中斷,按照 gic_irq_domain_translate() 函數(shù)中處理,需要將中斷號55減去32,得到 dts 中的中斷號23。
注: interrupts =
3、驅(qū)動函數(shù)
文凱碰消件: drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c
此時, irq 返回值為55。
后續(xù)會介紹 GIC 和中斷注冊等實現(xiàn)函數(shù)。
linux應(yīng)用層怎么select底層的中斷
我也不完全理解,但是比你知道的多點。
Linux中,分內(nèi)核態(tài)和用戶態(tài)。
你寫的所有的驅(qū)動,都是出于內(nèi)核態(tài)->可以直接使用內(nèi)核相關(guān)資源;
應(yīng)用層,都是用戶態(tài)->無法直接操作底層的東西 -> 想要操作,比如獲得權(quán)限,切換到內(nèi)核態(tài),然后才能操作。
你這里的需求,我的理解是:
對應(yīng)你這句
“在中斷服務(wù)程序中操作另一個外設(shè)”
不知道你的目的和打算用的手段是啥
一般的,ISR中,操作別的設(shè)備,常見的是:
設(shè)置對應(yīng)的(比如該硬件本身,或者別的設(shè)備B的)寄存器的對應(yīng)的位,以便通知其某種事情發(fā)送或狀態(tài)變化了。
然后設(shè)備B會:
要么是由于(被修改了寄存器而)發(fā)生了中斷,然后可以接著處理其所要做的事情;
要么是一直輪訓(xùn),檢測對應(yīng)的某種資源釋放變化,比如上面被改的寄存器的對應(yīng)的位,發(fā)現(xiàn)變化了,再去調(diào)用你的函數(shù),做對應(yīng)的處理。
注意:
中斷,不論是哪個設(shè)備的中斷,都不應(yīng)該占用(CPU)太長時間
-> 導(dǎo)致別的中斷或服務(wù)無法及時運行
關(guān)于linux 中斷聚合的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機房服務(wù)器托管/機柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機房租用、服務(wù)器托管、機柜租賃、大帶寬租用,可選線路電信、移動、聯(lián)通等。
當(dāng)前題目:Linux中斷聚合:提高性能與可靠性(linux中斷聚合)
標(biāo)題來源:http://m.fisionsoft.com.cn/article/cosecgo.html


咨詢
建站咨詢
