本發明涉及數據處理領域,具體涉及一種中斷處理方法、系統及可編程中斷控制器。
背景技術:
目前,防火墻設備等網絡數據轉發設備使用平均分配的方式對來自網卡的中斷進行分發處理,即將中斷按順序輪流分發給各個CPU進行處理。這種平均分配的方式雖然能夠合理分流中斷,防止出現個別CPU壓力過大的問題,但是也有其弊端。
由于CPU在處理網卡的中斷時需要執行該網卡對應NAPI實例的poll函數,如果利用上述平均分配的方式,則每個CPU都可能處理到任意一個網卡的中斷,所以每個CPU都可能運行所有網卡的NAPI實例。
另外,CPU在處理不同網卡的中斷時,需要輪流執行掛在該CPU上對應的網卡NAPI實例,而執行每一個NAPI實例的時候都有加解鎖的操作。當每個CPU均需要處理所有網卡的中斷時,這種頻繁的加解鎖操作無疑會大量消耗CPU的處理資源。
技術實現要素:
本發明提供了一種中斷處理方法、系統及可編程中斷控制器,一定程度上能夠減少CPU處理資源的消耗。
本發明提供了一種中斷處理方法,所述中斷處理方法應用于可編程中斷控制器,所述可編程中斷控制器中預先設置有中斷處理CPU與網卡的對應關系,所述方法包括:
接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包;
在所述中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU,并將所述中斷處理請求轉發至所述中斷處理CPU,以便所述中斷處理CPU對所述網卡接收到的所述數據包進行處理。
本發明還提供了一種可編程中斷控制器,所述可編程中斷控制器中預先設置有中斷處理CPU與網卡的對應關系,所述可編程終端控制器包括:
接收模塊,用于接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包;
查詢模塊,用于在所述中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU;
轉發模塊,用于將所述中斷處理請求轉發至所述中斷處理CPU,以便所述中斷處理CPU對所述網卡接收到的所述數據包進行處理。
本發明還提供了一種中斷處理方法,所述方法包括:
可編程中斷控制器接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包;在預先設置的中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU,并將所述中斷處理請求轉發至所述中斷處理CPU;
所述中斷處理CPU在接收到來自所述可編程中斷控制器的中斷處理請求時,從所述網卡獲取所述數據包;并從業務處理CPU中,確定一業務處理CPU對所述數據包進行處理,將所述數據包發送至所述業務處理CPU;
所述業務處理CPU處理所述數據包。
優選地,所述中斷處理CPU在接收到來自所述可編程中斷控制器的中斷處理請求時,從所述網卡獲取所述數據包,包括:
所述中斷處理CPU在接收到來自所述可編程中斷控制器的中斷處理請求時,調用所述網卡對應的NAPI實例,從所述網卡獲取所述數據包。
優選地,所述方法還包括:
所述業務處理CPU運行所述數據包對應的上層應用程序。
優選地,所述中斷處理方法應用于防火墻設備。
本發明還提供了一種中斷處理系統,所述系統包括上述權利要求2中的可編程中斷控制器、中斷處理CPU和業務處理CPU;
所述中斷處理CPU包括取包模塊和計算模塊;
所述取包模塊,用于在接收到來自所述可編程中斷控制器的中斷處理請求時,從發送所述中斷處理請求的網卡獲取數據包;
所述計算模塊,用于從所述業務處理CPU中,確定一業務處理CPU對所述數據包進行處理,并將所述數據包發送至所述業務處理CPU;
所述業務處理CPU,用于處理所述數據包。
優選地,所述取包模塊,具體用于在接收到來自所述可編程中斷控制器的中斷處理請求時,調用發送所述中斷處理請求的網卡對應的NAPI實例,從所述網卡獲取所述數據包。
優選地,所述業務處理CPU,還用于運行所述數據包對應的上層應用程序。
優選地,所述中斷處理系統應用于防火墻設備。
本發明提供了一種中斷處理方法、系統及可編程中斷控制器,所述中斷處理方法應用于可編程中斷控制器,所述可編程中斷控制器中預先設置有中斷處理CPU與網卡的對應關系,所述方法包括:接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包;在所述中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU,并將所述中斷處理請求轉發至所述中斷處理CPU,以便所述中斷處理CPU對所述網卡接收到的所述數據包進行處理。本發明中的中斷處理CPU與網卡具有對應關系,每個中斷處理CPU只用于處理與其具有對應關系的網卡的中斷處理請求,在接收到來自網卡的中斷處理請求時,中斷處理CPU當前運行的NAPI實例很大幾率可能正好是該網卡對應的NAPI實例,此時不需要進行NAPI實例切換,節省了中斷處理CPU的處理資源。
附圖說明
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的一種中斷處理方法流程圖;
圖2為本發明實施例提供的另一種中斷處理方法流程圖;
圖3為本發明實施例提供的一種可編程中斷控制器的結構示意圖;
圖4為本發明實施例提供的一種中斷處理系統結構示意圖。
具體實施方式
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
以下進行實施例具體內容的介紹。
本發明實施例提供了一種中斷處理方法,參考圖1,為本發明實施例提供的一種中斷處理方法流程圖,其中,所述中斷處理方法應用于可編程中斷控制器,所述可編程中斷控制器中預先設置有中斷處理CPU與網卡的對應關系,所述方法具體包括:
S101:接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包。
S102:在所述中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU,并將所述中斷處理請求轉發至所述中斷處理CPU進行處理。
本發明實施例中,可編程中斷控制器中預先設置有中斷處理CPU與網卡的對應關系,其中,中斷處理CPU僅用于處理來自與其具有對應關系的網卡的中斷處理請求。
值得指出的是,各個中斷處理CPU只需要配置有與其具有對應關系的網卡的NAPI實例即可,在處理來自網卡的中斷處理請求時,中斷處理CPU當前運行的NAPI實例很大幾率可能正好是該網卡對應的NAPI實例,此時不需要進行NAPI實例切換,節省了中斷處理CPU的處理資源。
實際應用中,可編程中斷控制器接收到來自任一網卡的中斷處理請求后,在預先設置的中斷處理CPU與網卡的對應關系中,查詢該網卡對應的中斷處理CPU,并將該中斷處理請求轉發至該中斷處理CPU處理。
實際應用中,由于可編程中斷控制器接收到的中斷處理請求可能來自網卡,也可能來自其他硬件設備。所以,本發明實施例的可編程中斷控制器需要能夠識別出來自網卡的中斷處理請求,以便對其進行處理。
一種實現方式中,中斷處理請求可以攜帶中斷號,在硬件電路及bios固件不變的情況下,網卡及其他硬件設備對應的中斷號是固定的。可編程中斷控制器在接收到中斷處理請求后,通過所述中斷處理請求攜帶的中斷號確定該中斷處理請求是否來自網卡。
本發明實施例還提供了一種中斷處理方法,參考圖2,為本發明實施例提供的一種中斷處理方法流程圖。所述方法具體包括:
S201:可編程中斷控制器接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包;在預先設置的中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU,并將所述中斷處理請求轉發至所述中斷處理CPU。
S202:所述中斷處理CPU在接收到來自所述可編程中斷控制器的中斷處理請求時,從所述網卡獲取所述數據包;并從業務處理CPU中,確定一業務處理CPU對所述數據包進行處理,將所述數據包發送至所述業務處理CPU。
S203:所述業務處理CPU處理所述數據包。
本發明實施例提供的中斷處理方法中,由于同時負擔處理網卡的中斷處理請求以及處理來自網卡的數據包,會使得CPU的負擔過重,可能產生數據包的丟包問題。所以,本發明實施例預先將處理中斷處理請求的CPU與處理業務數據包的CPU區分開。也就是說,本發明實施例中的中斷處理CPU用于處理來自網卡的中斷處理請求,而業務處理CPU則用于處理來自網卡的數據包。
實際應用中,當可編程中斷控制器確定接收到的中斷處理請求來自網卡后,查詢所述網卡對應的中斷處理CPU,并將其轉發至所述中斷處理CPU。所述中斷處理CPU調用所述網卡對應的NAPI實例,運行所述NAPI實例的poll函數,從所述網卡獲取數據包。
由于業務處理CPU負責處理來自網卡的數據包,所以,本發明實施例中的所述中斷處理CPU還用于從所述業務處理CPU中選擇一個作為所述數據包的目標業務處理CPU。其中,使用的選擇算法可以為經過調整的RPS/RFS方法,具體的,將RPS/RFS方法中的可選擇CPU范圍修改為本發明實施例中的用于處理來自網卡的數據包的業務處理CPU。具體的,接收到數據包的中斷處理CPU可以根據上述RPS/RFS方法,在用于處理來自網卡的數據包的業務處理CPU中確定一個業務處理CPU用于對所述數據包進行處理。所述中斷處理CPU確定用于處理所述數據包的業務處理CPU后,將所述數據包轉發至所述業務處理CPU。本發明實施例提供的中斷處理方法能夠應用于防火墻設備。
實際應用中,上層應用程序與其對應的數據包不在同一個CPU上進行處理,會導致數據包處理的過程中不同CPU之間的頻繁切換。為了避免上述問題,本發明實施例中,用于處理數據包的業務處理CPU上運行所述數據包對應的上層應用程序。
本發明實施例還提供了一種可編程中斷控制器,參考圖3,為本發明實施例提供的一種可編程中斷控制器的結構示意圖。其中,所述可編程中斷控制器100與網卡200和中斷處理CPU300相連,所述可編程中斷控制器100中預先設置有中斷處理CPU與網卡的對應關系,所述可編程終端控制器100包括:
接收模塊110,用于接收來自任一網卡的中斷處理請求,所述中斷處理請求用于請求處理所述網卡接收到的任一數據包。
查詢模塊120,用于在所述中斷處理CPU與網卡的對應關系中,查詢所述網卡對應的中斷處理CPU。
轉發模塊130,用于將所述中斷處理請求轉發至所述中斷處理CPU,以便所述中斷處理CPU對所述網卡接收到的所述數據包進行處理。
本發明實施例中的可編程中斷控制器預先存儲有中斷處理CPU與網卡的對應關系,中斷處理CPU僅用于處理與其對應的網卡發送的中斷處理請求。本發明實施例提供的可編程中斷控制器能夠減少中斷處理CPU在處理網卡中斷時對處理資源的浪費。
另外,本發明實施例還提供了一種中斷處理系統,參考圖4,為本發明實施例提供的一種中斷處理系統結構示意圖,所述中斷處理系統包括上述可編程中斷控制器100、中斷處理CPU300和業務處理CPU400;
所述中斷處理CPU300包括取包模塊和計算模塊;
所述取包模塊,用于在接收到來自所述可編程中斷控制器100的中斷處理請求時,從發送所述中斷處理請求的網卡獲取數據包;
所述計算模塊,用于從所述業務處理CPU中,確定一業務處理CPU對所述數據包進行處理,并將所述數據包發送至所述業務處理CPU;
所述業務處理CPU400,用于處理所述數據包。
如圖4所示,網卡4在接收到數據包后會產生中斷處理請求,并將所述中斷處理請求發送至可編程中斷控制器100,所述可編程中斷控制器100在接收到所述中斷處理請求后,查詢發送所述中斷處理請求的網卡對應的中斷處理CPU2,并由所述中斷處理CPU2從網卡4獲取所述數據包。所述中斷處理CPU2獲取所述數據包后,計算用于處理所述數據包的業務處理CPU,確定業務處理CPU2,并將所述數據包發送至所述業務處理CPU2,由其負責處理所述數據包。
本發明實施例提供的中斷處理系統中,用于處理網卡中斷的CPU與用于處理業務數據包的CPU分開,避免了使用同一CPU進行中斷處理和業務處理時出現的數據包丟包的問題。
實際應用中,本發明實施例的所述取包模塊,具體用于在接收到來自所述可編程中斷控制器的中斷處理請求時,調用發送所述中斷處理請求的網卡對應的NAPI實例,從所述網卡獲取所述數據包。
所述業務處理CPU400,還用于運行所述數據包對應的上層應用程序。
本發明實施例中的所述中斷處理系統能夠應用于防火墻設備。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上對本發明實施例所提供的一種中斷處理方法、系統及可編程中斷控制器進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。