] 示例性的,本發明實施例提供的一種多核競爭自旋鎖的示意圖可以參見圖4。
[0089] 需要說明的是,與現有技術中無論是否有CPU內核獲取到自旋鎖各CPU內核均頻 繁競爭自旋鎖不同,在本發明實施例中,輔助核只有在滿足預設條件時才會在宿主核處理 報文期間競爭自旋鎖,而在不滿足預設條件時,即使在宿主核處理報文期間也不會競爭自 旋鎖,并且,在宿主核接收報文期間也不會競爭自旋鎖,從而減少了輔助核對鎖進行無效的 競爭,降低了多個CPU內核競爭自旋鎖的資源開銷,提高了系統性能。
[0090] 進一步地,步驟102中,網絡設備確定滿足預設條件具體可以包括以下步驟:
[0091] 104、網絡設備預設參考值。
[0092]其中的參考值可以用以標識接收隊列的繁忙程度,初始參考值可以根據需要進行 設定,例如可以為[0, 100]范圍內的數值。
[0093] 105、網絡設備根據宿主核本輪從接收隊列接收到的報文數量確定檔位。
[0094]其中的檔位是根據宿主核本輪從接收隊列接收到的報文數量的多少確定的,可以 反映宿主核當前的繁忙程度,檔位包括的等級和等級的劃分機制可根據具體需要進行設 置,以下僅為舉例說明。
[0095]可選地,檔位可以包括第一檔、第二檔、第三檔和第四檔,網絡設備根據宿主核本 輪從接收隊列接收到的報文數量確定檔位可以包括:當宿主核本輪從接收隊列接收到的報 文數量小于第一預設值時,確定檔位為第一檔;
[0096]當宿主核本輪從接收隊列接收到的報文數量大于或者等于第一預設值且小于第 二預設值時,確定檔位為第二檔;
[0097]當宿主核本輪從接收隊列接收到的報文數量大于或者等于第二預設值且小于第 三預設值時,確定檔位為第三檔;
[0098]當宿主核本輪從接收隊列接收到的報文數量大于或者等于第三預設值且小于或 者等于第四預設值時,確定檔位為第四檔。
[0099] 由于宿主核每輪從接收隊列接收到的報文的數量一定小于或者等于預設閾值T, 因而,示例性的,可以將第四預設值設置為預設閾值T,而第一預設值至第三預設值均小于 預設閾值T,且第一預設值可以為,第二預設值可以為第三預設值可以為ir,預 44 4 設閾值T可以為32個報文。第一檔到第四檔對應的宿主核的繁忙程度逐漸提高。
[0100] 106、網絡設備根據檔位以及狀態機的當前狀態,確定狀態機的將來狀態并結合預 設步長機制調整參考值。
[0101] 其中,狀態機的狀態可以反映接收隊列的繁忙程度,狀態機的當前狀態可以反映 接收隊列過去的繁忙程度,當前檔位可以表明宿主核當前的繁忙程度并一定程度上可以反 映接收隊列當前的繁忙程度,狀態機的將來狀態用以反映接收隊列將來的繁忙程度,網絡 設備可以根據從過去到現在的大致趨勢預測接收隊列將來的繁忙程度。即,狀態機的將來 狀態可以根據狀態機的當前狀態以及當前檔位來確定。確定狀態機的將來狀態的基本原則 可以為:檔位越高,狀態機的將來狀態越趨向于較為繁忙的狀態。確定狀態機的將來狀態的 具體規則可以根據需要進行設定,以下僅為舉例說明。
[0102] 可選地,參見圖5所示的狀態機的狀態轉換示意圖,狀態機的狀態可以包括保持、 繁忙、空閑、趨向繁忙和趨向空閑,網絡設備根據宿主核本輪從接收隊列接收到的報文數量 確定的檔位以及狀態機的當前狀態,確定狀態機的將來狀態可以包括:
[0103] A、當檔位為第一檔時,網絡設備可以確定狀態機的將來狀態為空閑。
[0104] 當檔位為第一檔時,可以說明宿主核本輪接收到的報文特別少,接收隊列當前特 別空閑,因而無論狀態機的當前狀態是何種狀態,均可以將狀態機的將來狀態設置為空閑。
[0105] B、當檔位為第二檔時,網絡設備可以確定狀態機的將來狀態與狀態機的當前狀態 一致。
[0106] 當檔位為第二檔時,可以說明宿主核本輪接收到的報文較少,接收隊列當前較為 空閑,狀態機的將來狀態可以保存當前的狀態不變。
[0107] C、當檔位為第三檔時,若狀態機的當前狀態為繁忙,則網絡設備可以確定狀態機 的將來狀態為趨向空閑;若狀態機的當前狀態為保持、空閑、趨向繁忙或趨向空閑,則網絡 設備可以確定狀態機的當前狀態為空閑。
[0108] 當檔位為第三檔時,可以說明宿主核本輪接收到的報文不是特別多,接收隊列當 前不是特別繁忙,因而當狀態機的當前狀態為繁忙(說明接收隊列之前特別繁忙)時,狀 態機的將來狀態可以為趨向空閑,當狀態機的當前狀態為保持、空閑、趨向繁忙或趨向空閑 時,狀態機的當前狀態可以為空閑。
[0109] D、當檔位為第四檔時,若狀態機的當前狀態為空閑,則網絡設備可以確定狀態機 的將來狀態為趨向繁忙;若狀態機的當前狀態為保持、繁忙、趨向繁忙、或趨向空閑,則網絡 設備可以確定狀態機的將來狀態為繁忙。
[0110] 當檔位為第四檔時,可以說明宿主核本輪接收到的報文特別多,接收隊列當前特 別繁忙,當狀態機的當前狀態為空閑(說明接收隊列之前特別空閑)時,狀態機的將來狀態 可以為趨向繁忙;當狀態機的當前狀態為保持、繁忙、趨向繁忙、或趨向空閑時,狀態機的將 來狀態可以為繁忙。
[0111] 需要說明的是,上述根據不同檔位和狀態機的不同當前狀態確定狀態機的將來狀 態的機制,使得狀態機在空閑狀態到繁忙狀態之間的轉換是一個漸變的過程,這與實際情 況中接收隊列的流量一般不會突然發生劇烈變化一致。
[0112] 在步驟106中,網絡設備根據宿主核本輪從接收隊列接收到的報文數量確定的檔 位以及狀態機的當前狀態,并結合預設步長機制調整參考值可以包括:
[0113] (1)、當檔位為第一檔時,將參考值增加第一預設步長;當檔位為第二檔時,保持參 考值不變;當檔位為第三檔時,若狀態機的當前狀態為保持或空閑,則將參考值增加第二預 設步長;若狀態機的當前狀態為繁忙、趨向繁忙或趨向空閑,則保持參考值不變;當檔位為 第四檔時,若狀態機的當前狀態為保持、繁忙或趨向繁忙,則將參考值減小第三預設步長; 若狀態機的當前狀態為空閑或趨向空閑,則保持參考值不變;其中,第一預設步長、第二預 設步長和第三預設步長為正數,第四預設步長大于第一預設步長和第二預設步長。
[0114] 具體的,網絡設備可以根據表1所示的規則增加或者減小參考值。
[0115] 表 1
[0116]
[0118] 其中,第一預設步長至第三預設步長的具體取值可以根據需要進行設置,第一預 設步長和第二預設步長可以相同也可以不同,第三預設步長大于第一預設步長和第二預設 步長。示例性的,預設參考值可以在[0, 100]范圍內,第一預設步長和第二預設步長可以相 同且均為25,第三預設步長可以為75。
[0119] (2)、網絡設備對參考值進行校正。
[0120] 其中,網絡設備對上述步驟(1)中增加或減小后的參考值進行校正的規則可以根 據需要進行設定,本發明實施例不做限定,以下僅舉例說明。
[0121] 示例性的,當預設參考值在[0, 100]范圍內時,若經過上述步驟(1)后得到的參考 值小于〇,則將參考值校正為〇 ;若經過上述步驟(1)后得到的參考值大于100,則將參考值 校正為100,使得校正后的參考值保持在[0, 100]范圍內。
[0122] 107、若參考值落入預設范圍,則網絡設備確定滿足預設條件。
[0123]其中,預設范圍可以為一個數值或者一個數值范圍,具體可以根據實際情況進行 設定。例如,當預設范圍內一個數值范圍時,該數值范圍可以是〇附近的數值范圍例如 [0, 5];或者預設范圍也可以是具體的數值0。本發明實施例將以預設范圍為具體數值0為 例進行說明。
[0124]當預設范圍為具體數值0時,若調整后(即校正后)的參考值為0,則確定滿足預 設條件。當校正后的參考值為〇時,說明校正前的參考值小于或者等于〇,可以說明宿主核 最近幾輪從接收隊列接收的報文中,大多數報文的數量接近甚至等于預設閾值T,接收隊列 當前處于非常繁忙的狀態,可以通過輔助核輔助接收報文。因而,在宿主核完成本輪報文的 接收并進行報文處理時,若調整后的參考值為〇,則允許輔助核競爭自旋鎖,從而通過獲取 到自旋鎖的輔助核從接收隊列接收報文,并在宿主核完成報文處理后,由宿主核優先競爭 并持有自旋鎖。
[0125]需要說明的是,由于第三預設步長對應本輪接收報文數量非常多的第四檔,而第 三預設步長大于第一預設步長和第二預設步長,因而當本輪接收報文的數量對應第四檔 時,參考值急劇減小,當本輪接收報文的數量對應其它