本發明涉及CPU技術領域,具體涉及一種CPU負載信息的處理方法及處理裝置。
背景技術:
隨著CPU正在處理以及等待處理的業務增多,CPU負載不斷增大,但是任何網絡設備對業務的處理能力是有上限的,當CPU過載時,會因無法處理接收的所有業務而出現數據包丟失的情況,可能影響已接受業務的接續性,甚至,當CPU負載繼續增大到一定程度時,會出現CPU崩潰。因此需要檢測CPU的負載狀態,判斷CPU是否發生過載,以便采取進一步的過載保護措施。
現有技術中通常通過檢測CPU利用率來確定CPU的負載狀態。隨著CPU正在處理以及等待處理的業務增多,檢測到的CPU利用率逐漸升高,認為此時的CPU負載越大。
但是,在CPU利用率升高至100%之后,若CPU負載繼續增大,CPU利用率不再升高,維持在100%,此時便難以依靠CPU利用率來檢測CPU負載狀態,因此難以準確的判斷CPU是否發生過載。
技術實現要素:
本發明實施例提供了一種CPU負載信息的處理方法及處理裝置,用于解決現有技術通過CPU利用率來檢測CPU負載狀態準確率不高的問題。
為達到上述目的,本發明實施例的一方面提供了一種CPU負載信息的處理方法,所述方法包括:
在執行目標線程時,將所述目標線程的執行時刻記錄在執行時刻表中,所述目標線程為預先創建的最低優先級的循環線程,每次循環包括預設時長的睡眠;
計算所述執行時刻表中時間相鄰的所述執行時刻之間的間隔時長;
根據所述間隔時長確定時延參數的取值,所述時延參數的取值與所述間隔時長正相關;
當所述時延參數的取值超過第一預設值時,判定所述CPU中央處理器處于過載狀態。
結合第一方面,在第一方面的第一種可能的實現方式中,所述根據所述間隔時長確定時延參數的取值包括:
計算所述間隔時長與所述預設時長的時長差值;
對所述時長差值進行加權平均計算,得到所述時延參數的取值。
結合第一方面或者第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述方法還包括:
接收目標數據包;
判斷所述目標數據包是否為已接受業務;
若是,則放通所述目標數據包;
若否,則獲取所述時延參數的取值;
根據所述時延參數的取值來判斷是否放通所述目標數據包。
結合第一方面的第二種可能的實現方式,在第一方面的第三種可能的實現方式中,所述根據所述時延參數的取值來判斷是否放通所述目標數據包包括:
判斷所述時延參數的取值是否超過第二預設值,所述第二預設值小于或者等于所述第一預設值;
若否,則放通所述目標數據包;
若是,則判斷所述時延參數的取值是否超過第三預設值,所述第三預設值大于所述第二預設值,并且小于第四預設值,所述第四預設值對應于所述CPU的崩潰狀態;
若是,則丟棄所述目標數據包;
若否,則根據所述時延參數的取值進行概率丟包,所述概率丟包的丟包概率與時延參數的取值正相關。
結合第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,所述根據所述時延參數的取值進行概率丟包包括:
生成所述第二預設值至所述第三預設值之間的隨機數;
判斷所述隨機數是否處于所述第二預設值與所述時延參數的取值之間;
若是,則丟棄所述目標數據包;
若否,則放通所述目標數據包。
本發明實施例的第二方面提供了一種CPU負載信息的處理裝置,包括:
記錄模塊,用于在執行目標線程時,將所述目標線程的執行時刻記錄在執行時刻表中,所述目標線程為預先創建的最低優先級的循環線程,每次循環包括預設時長的睡眠;
計算模塊,用于計算所述執行時刻表中時間相鄰的所述執行時刻之間的間隔時長;
確定模塊,用于根據所述間隔時長確定時延參數的取值,所述時延參數的取值與所述間隔時長正相關;
判定模塊,用于當所述時延參數的取值超過第一預設值時,判定所述CPU處于過載狀態。
結合第二方面,在第二方面的第一種可能的實現方式中,所述確定模塊包括:
第一計算單元,用于計算所述間隔時長與所述預設時長的時長差值;
第二計算單元,用于對所述時長差值進行加權平均計算,得到所述時延參數的取值。
結合第二方面或者第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述處理裝置還包括:
接收模塊,用于接收目標數據包;
第一判斷模塊,用于判斷所述目標數據包是否為已接受業務;
放通模塊,用于當所述判斷模塊判定所述目標數據包為已接受業務時,放通所述目標數據包;
獲取模塊,用于當所述判斷模塊判定所述目標數據包不是已接受業務時,獲取所述時延參數的取值;
第二判斷模塊,用于根據所述獲取模塊獲取的所述時延參數的取值來判斷是否放通所述目標數據包。
結合第二方面的第二種可能的實現方式,在第二方面的第三種可能的實現方式中,所述第二判斷模塊包括:
第一判斷單元,用于判斷所述時延參數的取值是否超過第二預設值,所述第二預設值小于或者等于所述第一預設值;
第一放通單元,用于當所述第一判斷單元判定所述時延參數的取值未超過第二預設值時,放通所述目標數據包;
第二判斷單元,用于當所述第一判斷單元判定所述時延參數的取值超過第二預設值時,判斷所述時延參數的取值是否超過第三預設值,所述第三預設值大于所述第二預設值,并且小于第四預設值,所述第四預設值對應于所述CPU的崩潰狀態;
第一丟包單元,用于當所述第二判斷單元判定所述時延參數的取值超過第三預設值時,丟棄所述目標數據包;
第二丟包單元,用于當所述第二判斷單元判定所述時延參數的取值未超過第三預設值時,根據所述時延參數的取值進行概率丟包。
結合第二方面的第三種可能的實現方式,在第二方面的第四種可能的實現方式中,所述第二丟包單元包括:
生成子單元,用于生成所述第二預設值至所述第三預設值之間的隨機數;
判斷子單元,用于判斷所述隨機數是否處于所述第二預設值與所述時延參數的取值之間;
丟包子單元,用于當所述判斷子單元判定所述隨機數處于所述第二預設值與所述時延參數的取值之間時,丟棄所述目標數據包;
放通子單元,用于當所述判斷子單元判定所述隨機數不處于所述第二預設值與所述時延參數的取值之間時,放通所述目標數據包。
從以上技術方案可以看出,本發明實施例具有以下優點:
本發明實施例基于預先創建的最低優先級的循環線程,每次循環包括預設時長的睡眠,CPU在執行目標線程時,會將目標線程的執行時刻記錄在執行時刻表中,計算執行時刻表中時間相鄰的執行時刻之間的間隔時長,并根據間隔時長確定時延參數的取值,時延參數的取值與間隔時長正相關。隨著CPU正在處理以及等待處理的業務增多,CPU負載不斷增大,執行目標線程的間隔時長不斷延長,確定的時延參數的取值不斷增大,這樣,即使在CPU利用率升高至100%之后,若CPU負載繼續增大,時延參數的取值仍然隨之繼續增大,因此依靠確定時延參數的取值能夠更加準確的檢測CPU負載狀態,當時延參數的取值超過第一預設值時,可以判定CPU處于過載狀態。
附圖說明
圖1是本發明CPU負載信息的處理方法一個實施例示意圖;
圖2是本發明CPU負載信息的處理方法另一個實施例示意圖;
圖3是本發明CPU負載信息的處理方法另一個實施例示意圖;
圖4是本發明CPU負載信息的處理裝置一個實施例示意圖;
圖5是本發明CPU負載信息的處理裝置另一個實施例示意圖。
具體實施方式
本發明實施例提供了一種CPU負載信息的處理方法及處理裝置,用于更加準確的檢測CPU負載狀態。
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的實施例能夠以除了在這里圖示或描述的內容以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
在CPU負載較小的情況下,CPU能夠對接收的全部數據包進行正常處理,隨著CPU正在處理以及等待處理的業務增多,CPU負載不斷增大,由于網絡設備對業務的處理能力是有上限的,當CPU過載時,CPU沒有能力處理接收到的全部數據包,導致部分數據包丟失,若丟失的數據包屬于已接受業務,會影響已接受業務的接續性,甚至,當CPU負載繼續增大到一定程度時,會出現CPU崩潰,CPU將丟棄接收到的所有數據包。因此當CPU負載較大時,需要對CPU接收到的數據包進行卡控,主動丟棄一些新業務的數據包,一方面能夠防止CPU因負載過大而崩潰,另一方面能夠盡量保證已接受業務的接續性。為此,首要的需要對CPU的負載狀態進行檢測,判斷CPU是否發生過載。
現有技術中通常通過檢測CPU利用率來確定CPU的負載狀態,隨著CPU正在處理以及等待處理的業務增多,檢測到的CPU利用率逐漸升高,認為此時的CPU負載增大。但是,在CPU利用率升高至100%之后,若CPU正在處理以及等待處理的業務繼續增多,CPU利用率不再升高,仍維持在100%,但是此時CPU負載繼續增大,因此依靠CPU利用率難以準確的檢測CPU負載狀態,難以準確的判斷CPU是否發生過載。
為解決上述問題,本發明預先創建最低優先級的循環線程,該線程的每次循環包括預設時長的睡眠。若CPU正在處理以及等待處理的業務只有該循環線程,那么在該線程睡眠預設時長之后,CPU可以馬上執行該線程,那么此次執行該線程的時刻距離前一次執行該線程的時刻的間隔時長最小,接近預設時長。隨著CPU接收的業務不斷增多,CPU正在處理以及等待處理的業務增多,那么在該線程睡眠預設時長之后,CPU無法馬上執行該線程,該線程進入待處理線程隊列,并且由于該線程的優先級最低,因此CPU需要優先處理其他待處理業務,最后才會執行該線程,那么此次執行該線程的時刻距離前一次執行該線程的時刻的間隔時長延長,遠大于預設時長。因此,隨著CPU正在處理以及等待處理的業務不斷增多,CPU負載不斷增大,此次執行該循環線程的時刻距離前一次執行該線程的時刻的間隔時長不斷增大。這樣,即使在CPU利用率升高至100%之后,若CPU負載繼續增大,此次執行該循環線程的時刻距離前一次執行該線程的時刻的間隔時長仍然隨之繼續增大,因此依靠該間隔時長能夠更加準確的檢測CPU負載狀態,判斷CPU的過載狀態。
為了便于本領域技術人員的理解,本發明通過以下實施例對本發明提供的技術方案的具體實現過程進行說明。
請參閱圖1,本發明實施例中CPU負載信息的處理方法一個實施例包括:
101、將目標線程的執行時刻記錄在執行時刻表中;
預先創建目標線程,該目標線程為最低優先級的循環線程,每次循環包括預設時長的睡眠。在執行目標線程時,將目標線程的執行時刻記錄在執行時刻表中。若CPU為多核CPU,那么需要在每個CPU核上創建一個目標線程,并將該目標線程與該CPU核綁定,即該目標線程始終運行在該CPU上,用以檢測各個CPU核的負載狀態。
102、計算執行時刻表中時間相鄰的執行時刻之間的間隔時長;
將目標線程的執行時刻記錄在執行時刻表中之后,可以計算執行時刻表中時間相鄰的執行時刻之間的間隔時長。
103、根據間隔時長確定時延參數的取值;
計算執行時刻表中時間相鄰的執行時刻之間的間隔時長之后,可以根據最近一次或幾次的間隔時長,可以確定時延參數的取值,時延參數的取值與間隔時長正相關。
104、當時延參數的取值超過第一預設值時,判定CPU處于過載狀態。
在確定時延參數的取值之后,可以根據時延參數的取值判斷CPU是否處于過載狀態,當時延參數的取值超過第一預設值時,可以判定CPU處于過載狀態。若CPU為多核CPU,確定的時延參數對應于該目標線程綁定的CPU核,根據該時延參數的取值可以判斷其對應的CPU核是否處于過載狀態。
隨著CPU正在處理以及等待處理的業務增多,CPU負載不斷增大,執行目標線程的間隔時長不斷延長,確定的時延參數的取值不斷增大,這樣,即使在CPU利用率升高至100%之后,若CPU負載繼續增大,時延參數的取值仍然隨之繼續增大,因此依靠確定時延參數的取值能夠更加準確的檢測CPU負載狀態,當時延參數的取值超過第一預設值時,可以判定CPU處于過載狀態。
在CPU上創建的目標線程可以為最低優先級的循環線程,每次循環包括預設時長的睡眠。那么,CPU每次執行該目標線程之后,該目標線程會轉入睡眠狀態,在睡眠預設時長后,該目標線程會進入CPU的待處理業務隊列等待CPU再次執行。CPU在執行目標線程時,會將目標線程的執行時刻記錄在執行時刻表中,計算執行時刻表中時間相鄰的執行時刻之間的間隔時長,并根據間隔時長確定時延參數的取值,時延參數的取值與間隔時長正相關。在CPU上創建目標線程之后,可以目標線程之外設置目標線程的檢測程序,檢測目標線程的運行情況,并將目標線程的執行時刻記錄在執行時刻表中,計算執行時刻表中時間相鄰的執行時刻之間的間隔時長,并根據間隔時長確定時延參數的取值。為了提高記錄的目標線程的執行時刻的準確性,減少另建目標線程的檢測程序所占用的資源,可以在目標線程中加入相應的程序,來記錄當前時刻,計算執行時刻表中時間相鄰的執行時刻之間的間隔時長,并根據間隔時長確定時延參數的取值,將確定的時延參數的取值進行存儲,供CPU獲取,以檢測CPU的負載狀態。
其中,選取的預設時長過小,目標線程執行過于頻繁,對CPU資源浪費過多,但是預設時長過長,由于CPU無法對睡眠時長內的負載狀態進行檢測,檢測準確性降低。因此,使用者應根據實際應用需要對預設時長進行合理設置,一般情況下,預設時長的設置范圍可以在2毫秒至100毫秒之間。
可選的,圖1對應的實施例中,時延參數可以用以表示間隔時長相對于預設時長的時延,進一步的,為了減小時延參數的波動,可以對多個間隔時長對應的時延取平均值。具體,步驟103根據間隔時長確定時延參數的取值可以包括:計算間隔時長與預設時長的時長差值,之后可以對時長差值進行加權平均計算,得到時延參數的取值。為了便于本領域技術人員的理解,以下進行具體舉例,以檢測多核CPU的某一個CPU核負載狀態為例,并且以在目標線程中加入相應的程序,來記錄當前時刻,計算間隔時長,確定時延參數的取值為例,請參閱圖2,本發明實施例中CPU負載信息的處理方法另一個實施例包括:
201、執行目標線程時,在第一時刻記錄當前時刻;
在CPU核上創建的目標線程可以為最低優先級的循環線程,每次循環包括預設時長的睡眠。預設時長過小,目標線程執行過于頻繁,對CPU資源浪費過多,但是預設時長過長,由于CPU無法對睡眠時長內的負載狀態進行檢測,檢測的準確性降低。因此,使用者應根據實際應用需要對預設時長進行合理設置,一般情況下,預設時長的設置范圍可以在2毫秒至100毫秒之間,本發明實施例以預設時長為20毫秒為例進行舉例說明。本發明當該CPU核第n次執行該目標線程時(n為正整數),可以按照該目標線程中預設的程序記錄當前時刻,記錄的時刻即為該目標線程的執行時刻,并將記錄的時刻存儲在執行時刻表中。假設此時為第n次執行該目標線程,記錄的當前時刻為第一時刻。
202、計算執行時刻表中第一時刻和與其時間相鄰的第二時刻之間的間隔時長;
在記錄第一時刻之后,可以從執行時刻表中獲取與第一時刻時間相鄰的第二時刻,第二時刻即為第一時刻之前該CPU核最近一次執行目標線程時記錄的時刻,或者說,為該CPU核第n-1次執行該目標線程時記錄的時刻,若n為1,那么第二時刻可以預設為0。比如執行時刻表中記錄有三個時刻,分別是1點30分20秒5毫秒、1點30分20秒30毫秒、1點30分20秒60毫秒,假設1點30分20秒60毫秒為第一時刻,那么獲取的第二時刻為1點30分20秒30毫秒。獲取第二時刻之后,可以計算第一時刻與第二時刻之間的間隔時長,在本實施例中,第一時刻與第二時刻之間的間隔時長為30毫秒。
接下來需要根據間隔時長確定時延參數的取值,時延參數的取值與間隔時長正相關,具體的,可以為:
203、計算間隔時長與預設時長的時長差值;
計算得到第一時刻與第二時刻之間的間隔時長之后,可以計算間隔時長與預設時長的時長差值,在本實施例中,由于預設時長設置為20毫秒,因此時長差值為10毫秒。
204、對時長差值進行加權平均計算,得到時延參數的取值;
在第n-1次執行目標進程的過程中,CPU核計算的間隔時長為1點30分20秒5毫秒與1點30分20秒30毫秒之間的時間間隔,為25毫秒,得到的間隔時長與預設時長的時長差值為5毫秒。在計算得到第n次執行目標線程的時長差值之后,可以對第n次以及第n-1次執行該目標線程得到的時長差值進行加權平均計算,距離當前時刻越近,其權重可以越重,比如,最近一次的時長差值的權重為80%,其前一次計算得到的時長差值的權重為20%,那么經過加權平均計算得到的時延參數的取值為(80%*10毫秒+20%*5毫秒)=9毫秒。
可以理解的是,還可以選取更多的時長差值進行加權平均計算,本領域技術人員可以根據需要對加權平均計算的具體過程進行設置,此處不做限定。
205、判斷時延參數的取值是否超過第一預設值,若是,則執行步驟206,若否,則執行步驟207;
在根據間隔時長確定時延參數的取值之后,可以判斷時延參數的取值是否超過第一預設值,若是,則執行步驟206,若否,則執行步驟207。第一預設值可以通過對CPU的檢測來具體設置,比如可以將CPU開始發生丟包時對應的時延參數的取值設置為第一預設值。
206、判定CPU處于過載狀態;
若判定時延參數的取值超過第一預設值,則判定該CPU核處于過載狀態。
207、執行其他操作。
若判定時延參數的取值不超過第一預設值,則可以執行其他操作。
通過圖1和圖2對應的實施例,可以計算執行目標線程的時延參數的取值,用于檢測CPU的負載狀態,時延參數的取值越大,表明CPU負載越大,當時延參數的取值超過第一預設值時,可以確定CPU處于過載狀態。為了防止CPU的負載不斷增大導致CPU崩潰,需要在CPU負載較大時,對CPU接收的數據包進行卡控,即選擇性丟包,以下具體介紹CPU在接收數據包時,根據圖1或者圖2對應的實施例得到的時延參數的取值進行選擇性丟包的過程,請參閱圖3,本發明實施例中CPU負載信息的處理方法另一個實施例包括:
301、接收目標數據包;
網卡接收到目標數據包之后,可以通知CPU對目標數據包進行獲取,對于多核CPU來說,某個CPU核可以接收目標數據包。
302、判斷目標數據包是否為已接受業務,若是,則執行步驟303,若否,則執行步驟304;
CPU核接收目標數據包之后,可以判斷目標數據包是否為已接受業務,比如目標數據包可以帶有業務標識,若業務標識表明該目標數據包屬于某一視頻業務,那么在用戶觀看相應視頻的過程中,該視頻業務的數據包即為已接受業務。判斷的具體方法有很多,為現有技術,此處不再贅述。
303、放通目標數據包;
若判定目標數據包屬于已接受業務,則放通目標數據包,對目標數據包進行后續處理。
304、獲取時延參數的取值;
若判定目標數據包不屬于已接受業務,則可以獲取該CPU核對應的時延參數的取值。可以理解的是,為了更加準確的表示當前CPU的負載狀態,該時延參數的取值為最近一次執行目標線程的過程中計算得到的時延參數的取值,在本實施例中,假設獲取的時延參數的取值為30毫秒。
在獲取時延參數的取值之后,可以根據時延參數的取值來判斷是否放通目標數據包。比如,可以當時延參數的取值超過某一預設值時,比如第一預設值時,便將目標數據包丟棄,這樣雖然可以防止CPU崩潰,但是會產生CPU負載波動,即負載超過預設值時丟包,負載快速降低,造成負載短時間內過低,此時大量放通業務,又會導致CPU負載短時間內上升過多,這樣波動的負載狀態不利于系統穩定。為了穩定CPU負載,可以通過以下步驟進行選擇性丟包:
305、判斷時延參數的取值是否超過第二預設值,若否,則執行步驟306,若是,則執行步驟307;
在獲取時延參數的取值之后,可以判斷時延參數的取值是否超過第二預設值,第二預設值小于或者等于第一預設值,第二預設值設置為等于第一預設值時,對CPU的利用更加充分。
306、放通目標數據包;
當判定時延參數的取值不超過第二預設值時,表明此時CPU的負載較小,可以放通目標數據包。
307、判斷時延參數的取值是否超過第三預設值,若是,則執行步驟308,若否,則執行步驟309;
當判定時延參數的取值超過第二預設值時,可以判斷時延參數的取值是否超過第三預設值,第三預設值大于第二預設值,并且小于第四預設值,第四預設值對應于CPU的崩潰狀態。
308、丟棄目標數據包;
若判定時延參數的取值超過第三預設值,則表明此時CPU負載過大,需丟棄目標數據包,以防止CPU負載繼續增大。
309、生成第二預設值至第三預設值之間的隨機數;
若判定時延參數的取值不超過第三預設值,則可以根據時延參數的取值進行概率丟包,使得概率丟包的丟包概率與時延參數的取值正相關。具體的,作為舉例,可以生成第二預設值至第三預設值之間的隨機數,假設第二預設值為20毫秒,第三預設值為100毫秒,那么則生成20至100的隨機數。
310、判斷隨機數是否處于第二預設值與時延參數的取值之間,若是,則執行步驟311,若否,則執行步驟312;
在生成第二預設值至第三預設值之間的隨機數之后,可以判斷隨機數是否處于第二預設值與時延參數的取值之間,在本實施例中,即判斷生成的隨機數是否處于20至30之間,若隨機數處于20至30之間,比如生成的隨機數為22,則執行步驟311,若隨機數不處于20至30之間,比如生成的隨機數為40,則執行步驟312。
311、丟棄目標數據包;
若隨機數處于20至30之間,比如生成的隨機數為22,則丟棄目標數據包。可見,若時延參數的取值距離第二預設值更近,則CPU負載相對較小,生成的隨機數落入第二預設值與時延參數的取值之間的概率更小,丟棄目標數據包的概率更小。
312、放通目標數據包。
若隨機數不處于20至30之間,則處于30至100之間,比如生成的隨機數為40,則放通目標數據包。可見,若時延參數的取值距離第三預設值更近,則CPU負載相對較大,生成的隨機數落入第二預設值與時延參數的取值之間的概率更大,丟棄目標數據包的概率更大,放通目標數據包的概率更小,能夠有效防止CPU負載增大。
通過步驟310至步驟312,能夠將時延參數的取值穩定在第二預設值和第三預設值之間的某個值,盡量減少CPU負載狀態的波動。
上面對本發明實施例中的方法進行了描述,下面對本發明實施例中的裝置進行描述。
請參閱圖4,本發明實施例中CPU負載信息的處理裝置的一個實施例包括:
記錄模塊401,用于在執行目標線程時,將目標線程的執行時刻記錄在執行時刻表中,目標線程為預先創建的最低優先級的循環線程,每次循環包括預設時長的睡眠;
計算模塊402,用于計算執行時刻表中時間相鄰的執行時刻之間的間隔時長;
確定模塊403,用于根據間隔時長確定時延參數的取值,時延參數的取值與間隔時長正相關;
判定模塊404,用于當時延參數的取值超過第一預設值時,判定CPU處于過載狀態。
優選的,確定模塊403可以包括:
第一計算單元4031,用于計算間隔時長與預設時長的時長差值;
第二計算單元4032,用于對時長差值進行加權平均計算,得到時延參數的取值。
在通過圖4對應的實施例中的裝置獲取時延參數的取值,并判斷CPU的過載狀態的基礎上,本發明實施例中CPU負載信息的處理裝置還可以包括圖5對應的實施例中的裝置,請參閱圖5,本發明實施例中CPU負載信息的處理裝置的另一個實施例包括:
接收模塊501,用于接收目標數據包;
第一判斷模塊502,用于判斷目標數據包是否為已接受業務;
放通模塊503,用于當判斷模塊判定目標數據包為已接受業務時,放通目標數據包;
獲取模塊504,用于當判斷模塊判定目標數據包不是已接受業務時,獲取時延參數的取值;
第二判斷模塊505,用于根據獲取模塊獲取的時延參數的取值來判斷是否放通目標數據包。
優選的,第二判斷模塊505包括:
第一判斷單元5051,用于判斷時延參數的取值是否超過第二預設值,第二預設值小于或者等于第一預設值;
第一放通單元5052,用于當第一判斷單元判定時延參數的取值未超過第二預設值時,放通目標數據包;
第二判斷單元5053,用于當第一判斷單元判定時延參數的取值超過第二預設值時,判斷時延參數的取值是否超過第三預設值,第三預設值大于第二預設值,并且小于第四預設值,第四預設值對應于CPU的崩潰狀態;
第一丟包單元5054,用于當第二判斷單元判定時延參數的取值超過第三預設值時,丟棄目標數據包;
第二丟包單元5055,用于當第二判斷單元判定時延參數的取值未超過第三預設值時,根據時延參數的取值進行概率丟包。
優選的,第二丟包單元5055包括:
生成子單元50551,用于生成第二預設值至第三預設值之間的隨機數;
判斷子單元50552,用于判斷隨機數是否處于第二預設值與時延參數的取值之間;
丟包子單元50553,用于當判斷子單元判定隨機數處于第二預設值與時延參數的取值之間時,丟棄目標數據包;
放通子單元50554,用于當判斷子單元判定隨機數不處于第二預設值與時延參數的取值之間時,放通目標數據包。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述,以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。