新四季網

網絡處理器線程調度方法

2023-06-09 10:16:56 2

專利名稱:網絡處理器線程調度方法
技術領域:
本發明涉及數據通信領域,尤其是一種數據通信中的網絡處理器線程調度方法。
背景技術:
目前在數據通信中經常用到網絡處理器,網絡處理器有很多功能,比如數據通信中協議的分析、處理、數據包的調度等。網絡處理器內部一般包含若干個獨立的微型包處理器,簡稱包引擎,而每個包引擎又可分為若干個互相交替運行的線程。網絡處理器中的包引擎是互相獨立的,能夠同時運行,因此可以同時處理不同的數據流;而包引擎內部的線程是交替運行的,它們佔用公共的引擎資源,不能同時運行。如何協調各個線程或者引擎之間的運行關係,是提高網絡處理器性能的關鍵。
一般一個網絡處理器會服務若干個數據埠,埠之間沒有優先級的要求。那麼如何分配空閒的線程和引擎去服務有數據的埠呢?怎樣分配才可以達到最優效果呢?目前已有的調度方法有兩種,分別介紹如下一、集中調度法在網絡處理器中,分配一個專門的調度線程,統一調度所有的資源。該調度線程可以設在網絡處理器的任意一個引擎中。該方法調度的過程是調度線程查詢外部數據埠,即外埠的狀態,經過處理,得到要服務的埠;然後,調度線程查詢網絡處理器是否有其它的空閒線程,選擇最小編號的空閒線程;最後,通過要服務的埠與最小編號的空閒線程之間的簡單的映射關係,分配空閒線程去處理要服務的埠。
這種方法的缺點是它專門佔用一個線程資源,客觀上降低了網絡處理器的效率;而且,調度線程所在引擎的其它線程也不能處理複雜業務,因為引擎內部的線程是不能同時運行的,必須交替運行,因此當其它線程處理複雜業務,佔用這個引擎的資源時,調度線程的任務將被延遲,導致調度效率下降,同時也限制了資源的最大利用;另外,它也很難合理安排任務,安排的任務理想的狀態是均勻分布在各個引擎,不是集中在一個引擎,因為不同引擎可以同時運行,而引擎內部的不同線程卻必須交替運行,而集中調度的簡單分配原則,總是會把任務分配到最小編號的線程上,當埠數少時,造成引擎運行的不合理,浪費了引擎資源。
二、分布式綁定調度法在這種方法中,網絡處理器沒有一個專門的調度線程,而是固定指定固定的線程去服務對應的埠,即把線程和埠捆綁起來,由各個處理線程自己決定是否處理它所服務的唯一埠。所以每個處理線程都有自己的調度功能。比如0線程只服務0埠,1線程只服務1埠.....以此類推。
這種方法的缺點是由於它捆綁線程和埠,服務的埠受限於線程的數目,而一般線程數目是有限的,而服務的埠有可能很多,這樣超出線程數目的埠就可能得不到服務;此外,它不能充分利用線程資源,一個線程處理能力有限,當埠流量很大時,無法線性處理,可是其它線程依然空閒,沒有充分利用網絡處理器的並行處理體系,造成線程資源的浪費。

發明內容
本發明的目的是提供一種網絡處理器線程調度方法,它既不佔用專門的線程資源而降低網絡處理器的效率,又使服務的埠不受限於線程的數目,而且能夠充分網絡處理器的並行處理體系,以充分利用線程資源。
為實現上述目的,本發明的解決方案是一種網絡處理器線程調度方法,它包括a、設定外埠的優先級;b、各線程一旦空閒,判斷該線程和該線程所在的引擎是否都有權服務外埠,一旦兩者都可以服務外埠,通知本引擎的其他線程不能服務外埠;c、該線程按預先設定的外埠的優先級選擇優先級最高的外埠,並進行屏蔽;d、該線程構造一個用該線程去服務選擇好的外埠的任務,通知其他引擎和此引擎的其他線程可以服務外埠,下一引擎的固定線程得到服務外埠的權利;e、執行該任務的過程中解除屏蔽。
其中,步驟b的具體過程包括b1、線程判斷本線程是否可以查詢外埠的狀態;b2、如果判斷出不能查詢外埠的狀態,則釋放本線程的控制權;如果能夠查詢外埠的狀態,則通知本引擎的其他線程不能查詢外埠的狀態;b3、線程判斷本線程所在的引擎是否有權利服務外埠;b4、如果判斷出不能服務外埠,則釋放本線程的控制權;如果能夠服務外埠,讀取外埠的狀態,去除暫時不服務的外埠,獲得服務外埠列表;b5、判斷是否有外埠需要服務,如沒有則釋放本線程的控制權;如有則繼續進行。
在步驟b1中,線程判斷本線程是否可以查詢外埠的狀態的方法是根據本引擎的線程之間固有的切換關係,判斷是否輪到本線程進行服務。
在步驟b3中,判斷本引擎是否有權利服務外埠的方法是看是否接到了其他線程的下一引擎可以服務外埠的通知。
本發明的步驟d包括這樣的過程d1、線程構造一個用該線程去服務選擇好的外埠的任務;d2、該線程通知其他引擎可以服務該外埠;
d3、該線程分配該任務;d4、該線程通知所在引擎的其它線程可以查詢外部埠的數據狀態。
在步驟d2和d3之間可以包含這樣的過程再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外埠則釋放線程的控制權;如能夠分配任務,即能夠服務外埠則繼續進行。
由於本發明是在網絡處理器的每個線程中設有該線程自己的調度功能,它不佔用專門的線程資源,從而提高了網絡處理器的效率;由於本發明中的線程和外埠不是捆綁在一起的,而是任何一個空閒線程都可以有機會去服務有數據的埠,這樣就使服務的外埠不受限於線程的數目;另外,由於本發明通過在各引擎之間的通知機制和引擎內部各線程之間的固有服務外埠的順序,以及對外埠的屏蔽和解屏蔽,約束了線程和外埠之間的關係,當外埠流量很大時,能夠充分利用網絡處理器的並行處理體系,由多個線程平行進行處理,充分利用了線程資源。


圖1是本發明的方法流程簡圖。
圖2是本發明的方法流程詳圖。
具體實施例方式
」在圖1本發明的方法流程簡圖中,我們可以大體看出本發明的實現步驟,該步驟中的每一步大體與我們後面的每一個小標題相對應。
(1)設定外埠的優先級。該設定一般來說是人為的。由於在後面各線程服務外埠的過程中,都是先選擇優先級最高的外埠,在設定外埠的優先級時要考慮外埠上數據的重要程度,把最重要的外埠設為優先級最高的外埠。
在本發明中,各個引擎服務外埠的順序是通過調度方法中的通知機制進行的,該機制在後面的步驟(2)和(4)中得到了體現。引擎中各線程進行服務也是有一定順序的,只不過該順序是網絡處理器本身所固有的。比如說,我們的網絡處理器中有四個包引擎,分別編號為0、1、2、3,在每個引擎中分別有四個線程,分別編號為0、1、2、3,服務外埠的線程順序的理想狀態是均勻分布在各個引擎,因為不同引擎可以同時運行,而引擎內部的不同線程卻必須交替運行,這樣,我們首先讓0引擎的0線程(簡記為00)先服務於外埠,然後是1引擎中的0線程(簡記為10),再其次是20,再其次是30、01、11、21、31、02、12、22、32、03、13、23、33。假使有四個外埠分別編號為0、1、2、3,我們設0外埠具有最高優先級,然後依次是1、2、3。
另外在這一步驟中,還可以設定從開始執行任務到解除對外埠的屏蔽之間的時間,關於這一部分的詳細內容我們在(5)中加以論述。
(2)各線程一旦空閒,判斷該線程和該線程所在的引擎是否都有權服務外埠,一旦兩者都可以服務外埠,通知本引擎的其他線程不能服務外埠。
在這個過程中,線程空閒下來時,自動起調度任務,其具體過程包括1)線程判斷本線程是否可以查詢外埠的狀態,其具體方法是根據本引擎的線程之間固有的切換關係,判斷是否輪到本線程進行服務。
2)如果判斷出不能查詢外埠的狀態,則釋放本線程的控制權;如果能夠查詢外埠的狀態,則通知本引擎的其他線程不能查詢外埠的狀態。
3)線程判斷本線程所在的引擎是否有權利服務外埠,其具體方法是看是否接到了其他線程的下一引擎可以服務外埠的通知。實際上,其他線程是在後面所述的步驟(4)中進行通知的,該過程我們在後面詳細敘述,只不過每個線程獨立執行本發明的5個過程,其他線程是在它自身所執行的步驟(4)中進行通知的。
4)如果判斷出不能服務外埠,則釋放本線程的控制權;如果能夠服務外埠,讀取外埠的狀態,去除暫時不服務的外埠,獲得服務外埠列表。其具體方法是判斷外埠中哪些當前不需要服務、哪些被其他線程屏蔽掉了,關於屏蔽的部分我們將在後面的(3)中主要涉及,實際上這裡所說的屏蔽是指被其他線程執行的步驟(3)屏蔽掉了,與本線程的過程無關。然後從全部外埠中減去這些外埠,放在服務外埠列表中。
5)判斷是否有外埠需要服務,如沒有則釋放本線程的控制權;如有則繼續進行。在這一步驟中,判斷是否有外埠需要服務的具體過程是按照服務外埠列表中可以服務的埠,去檢查這些埠上是否有數據,如有則需要服務,如沒有則不需要服務。
關於以上5個詳細過程,在圖2左側清楚地顯示出來。
以上例來說,我們一般在初始化時表明先啟動0引擎的0線程,使它有權服務外埠,那麼,0線程首先判斷0線程能否查詢外埠的狀態,答案是肯定的,則0線程通知本引擎的1、2、3線程不能查詢外埠的狀態。然後,判斷0引擎能否服務外埠,答案也是肯定的,則讀取外埠的狀態,發現外埠1暫時不服務,則去除該埠,獲得服務外埠列表,在列表中只含有埠0、2、3。然後判斷是否有外埠需要服務,發現在埠0和2上面有數據,而在埠3上面沒有數據,則認為埠0、2需要服務,可以繼續進行下面的過程。
(3)該線程按預先設定的外埠的優先級選擇優先級最高的外埠,並進行屏蔽。
在上例中,在需要服務的埠0、2中,埠0的優先級最高,故選擇埠0服務,然後對埠0進行屏蔽。為什麼要進行屏蔽呢?因為當分配一個任務給此埠,即對此埠進行服務時,離任務執行或者說離真正的服務還有一段時間,這樣埠狀態不能立刻更新,而有可能在後續程序中又分配了一個任務,或者說,又有一個線程服務該埠,結果其接收到的就是未及時更新的數據,出現了重複接收。
(4)該線程構造一個用該線程去服務選擇好的外埠的任務,通知其他引擎和此引擎的其他線程可以服務外埠,下一引擎的固定線程得到服務外埠的權利。
本過程的具體實現如下1)線程構造一個用該線程去服務選擇好的外埠的任務。
2)該線程通知其他引擎可以服務該外埠。我們這一步驟只是給其他引擎這一權利,但實際上只有下一順序的引擎在這一步驟中才能真正服務外埠,這就是我們在步驟(2)的子步驟3)所述的內容。至於該引擎中的哪一線程能夠得到該權利,則是由網絡處理器引擎內部線程服務的固有順序決定的。
然後線程可以再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外埠則釋放線程的控制權;如能夠分配任務,即能夠服務外埠則繼續進行。這個判斷是為了使結果更精確,但不是特別必要的。
3)該線程分配該任務。
4)該線程通知所在引擎的其它線程可以查詢外部埠的數據狀態。
關於這一過程在圖2的中部和右部可以清楚地顯示出來。
仍以上例進行說明,0引擎的線程0構造了一個用線程0去服務外埠0的任務,然後通知其他引擎可以服務0埠,實際上是通知1引擎去服務0埠,在1引擎中按網絡處理器固有的順序默認了一個0線程去繼續服務0埠,然後可以再判斷以下本線程是否可以分配任務,之所以進行這樣一個重複的判斷是防止在第一次判斷後到目前之間程序的執行過程中,該埠已經被別的線程屏蔽,或不打算再進行服務。然後,0線程分配該任務,通知0引擎的1、2、3線程可以查詢外部埠的數據狀態。
(5)執行該任務的過程中解除屏蔽。然後,下一引擎中的固定線程就可以服務該外埠。
在這一過程中,可以按步驟(1)中預先設定的從開始執行任務到解除對外埠的屏蔽之間的時間來進行外埠屏蔽的解除,也就是說,不到該任務全部完成,新的引擎的新的線程,即1引擎的0線程又開始同時服務0埠。這樣,網絡處理器的資源得到了最大利用,大大提高了性能。當然,新的引擎的新的線程又開始服務同一個外埠,也要經過從(1)到(5)的過程。
由於這種調度方法的基礎是分布式綁定法,但消除了綁定法資源利用的不合理和不靈活,採用了自由式調度,任何一個空閒線程都可以有機會服務有數據的埠,我們稱之為分布式自由調度法。
權利要求
1.一種網絡處理器線程調度方法,它包括a、設定外埠的優先級;b、各線程一旦空閒,判斷該線程和該線程所在的引擎是否都有權服務外埠,一旦兩者都可以服務外埠,通知本引擎的其他線程不能服務外埠;c、該線程按預先設定的外埠的優先級選擇優先級最高的外埠,並進行屏蔽;d、該線程構造一個用該線程去服務選擇好的外埠的任務,通知其他引擎和此引擎的其他線程可以服務外埠,下一引擎的固定線程得到服務外埠的權利;e、執行該任務的過程中解除屏蔽。
2.根據權利要求1所述的網絡處理器線程調度方法,其特徵在於步驟b的具體過程包括b1、線程判斷本線程是否可以查詢外埠的狀態;b2、如果判斷出不能查詢外埠的狀態,則釋放本線程的控制權;如果能夠查詢外埠的狀態,則通知本引擎的其他線程不能查詢外埠的狀態;b3、線程判斷本線程所在的引擎是否有權利服務外埠;b4、如果判斷出不能服務外埠,則釋放本線程的控制權;如果能夠服務外埠,讀取外埠的狀態,去除暫時不服務的外埠,獲得服務外埠列表;b5、判斷是否有外埠需要服務,如沒有則釋放本線程的控制權;如有則繼續進行。
3.根據權利要求2所述的網絡處理器線程調度方法,其特徵在於在步驟b1中,線程判斷本線程是否可以查詢外埠的狀態的方法是根據本引擎的線程之間固有的切換關係,判斷是否輪到本線程進行服務。
4.根據權利要求2所述的網絡處理器線程調度方法,其特徵在於在步驟b3中,判斷本引擎是否有權利服務外埠的方法是看是否接到了其他線程的下一引擎可以服務外埠的通知。
5.根據權利要求2、3或4所述的網絡處理器線程調度方法,其特徵在於在步驟b4中,讀取外埠的狀態的具體方法是判斷外埠中哪些當前不需要服務、哪些被其他線程屏蔽掉了,從全部外埠中減去這些外埠,放在服務外埠列表中。
6.根據權利要求2、3或4所述的網絡處理器線程調度方法,其特徵在於在步驟b5中,判斷是否有外埠需要服務的具體過程是按照服務外埠列表中可以服務的埠,去檢查這些埠上是否有數據,如有則需要服務,如沒有則不需要服務。
7.根據權利要求1所述的網絡處理器線程調度方法,其特徵在於步驟d包括這樣的過程d1、線程構造一個用該線程去服務選擇好的外埠的任務;d2、該線程通知其他引擎可以服務該外埠;d3、該線程分配該任務;d4、該線程通知所在引擎的其它線程可以查詢外部埠的數據狀態。
8.根據權利要求7所述的網絡處理器線程調度方法,其特徵在於在步驟d2和d3之間包含這樣的過程再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外埠則釋放線程的控制權;如能夠分配任務,即能夠服務外埠則繼續進行。
9.根據權利要求1所述的網絡處理器線程調度方法,其特徵在於在步驟a中預先設定從開始執行任務到解除對外埠的屏蔽之間的時間;在步驟e中,按照該時間進行外埠屏蔽的解除。
全文摘要
一種網絡處理器線程調度方法,它包括設定外埠的優先級;各線程判斷該線程和該線程所在的引擎是否都有權服務外埠,一旦兩者都可以服務外埠,通知本引擎的其他線程不能服務外埠;該線程選擇優先級最高的外埠,並進行屏蔽;構造一個用該線程去服務選擇好的外埠的任務,通知其他引擎和本引擎的其他線程可以服務該外埠;執行該任務的過程中解除屏蔽。它既不降低網絡處理器的效率,又充分利用了線程資源。
文檔編號H04L12/24GK1402471SQ0112511
公開日2003年3月12日 申請日期2001年8月13日 優先權日2001年8月13日
發明者葉未川 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀