專利名稱:一種多核中央處理器系統中內存池的調度方法以及裝置的制作方法
技術領域:
本發明涉及計算機領域,尤其涉及一種多核中央處理器系統中內存池的調度方法以及裝置。
背景技術:
中央處理器(Central Processing Unit, CPU)主要實現對報文的處理,具體地,CPU毎次接收到ー個報文,就要從系統內存中分配一塊內存空間來存儲該報文,并在處理完該報文且發送后,就要將分配給該報文的內存空間釋放回系統內存,一個報文從被CPU接收到被CPU發送的過程稱為一條流水線。隨著CPU處理報文數量的增多,由于接收報文的時間的不確定性以及報文需要的內存空間大小的不同,CPU為每個報文分配內存以及釋放內存的操作會消耗大量的CPU資源。針對此問題,較常見的解決辦法就是一次性從系統內存中申請ー個較大的內存塊,將該內存塊分割成大小相等的多個緩沖單元(即buffer),該被分割成大小相等的多個buffer的內存塊稱為內存池(即Memory Pool))。通過采用內存池技術,可以減少CPU在每次接收到報文時分配內存空間以及釋放內存空間的開銷。目前,對于內存池的管理機制主要包括兩個方面,即軟件管理機制和硬件管理機制,以下對這兩種管理機制進行如下介紹。軟件管理機制,即通過鏈表結構管理內存池中每個buffer的機制。具體地,將內存池中每個buffer的buffer頭鏈成鏈表,基于該鏈表進行統一管理。基于軟件管理機制,內存池管理程序接收到流水線線程發送的內存分配申請時,內存池管理程序查找該鏈表中的空閑buffer表,根據設定的算法選擇出當前要分配的空閑buffer,并根據鏈表中該buffer的buffer頭指示的buffer分配給發送內存分配申請的流水線線程,并相應地更新鏈表中的空閑buffer表。類似地,在姆次釋放buffer后,需要更新鏈表,即將該釋放的buffer的buffer頭重新加入到空閑buffer表中。硬件管理機制,即采用硬件管理単元(稱為硬件內存池)對內存池進行管理的機制。具體地,在實現硬件管理機制時,在系統初始化時,從系統內存中分配大小相等的多個buffer,并分別將該多個buffer的buffer ptr (即頭指針)分配給硬件管理單元,如圖I所示,硬件內存池通過n個buffer ptr映射到系統內存的n個buffer,姆個buffer ptr對應系統內存中的ー個buffer。基于硬件軟件管理機制,硬件內存池管理著系統內存中每個buffer的頭指針,當硬件內存池接收到流水線線程發送的內存分配申請時,從管理的buffer ptr中分配出ー個buffer ptr給發送內存分配申請的流水線線程,即該流水線線程獲得對該buffer ptr對應的buffer的使用權,存放報文數據,在流水線線程發送報文后,將該buffer ptr釋放回硬件內存池即可。上述對內存池的軟件管理機制以及硬件管理機制在面對單核CPU系統時,在同一 時間一般只需要對ー個流水線線程進行處理,可以較好地對流水線線程的內存分配申請以及內存釋放進行處理。而隨著多核CPU系統的普及,上述的對內存池的軟件管理機制以及硬件管理機制在多核CPU系統中應用時,會存在如下問題在多核CPU系統中,往往會存在多個流水線線程同時申請內存的情況,即會有多條流水線同時有收發報文的處理需求,按照上述的軟件管理機制或硬件管理機制,毎次只能將資源池中的buffer分配給ー個流水線線程,這樣,只能在ー個流水線線程結束后,再將資源池中的buffer分配給下ー個流水線線程,如圖2所示的內存處理示意圖,當n個流水線線程同時發起內存分配申請時,每個流水線線程發送的內存分配申請將被保存至內存分配申請隊列,內存池管理程序或硬件內存池每次從該內存分配申請隊列獲取ー個內存分配申請,并對該內存分配申請進行處理,即為發送該內存分配申請的流水線線程分配相應的buffer,在該流水線線程釋放buffer后,從內存分配申請隊列中獲取下ー個內存分配申請,直至內存分配申請隊列中所有的內存分配申請處理完畢。可見,在多核CPU系統中,基于上述的處理機制只能串行處理各流水線線程,大多數流水線線程的內存分配申請會處于等待狀態,并且越在后面被處理的流水線等待的時間會越長,從而降低了多核CPU系統對數據處理的及時性,降低了多核CPU系統的處理性能。
發明內容
有鑒于此,本發明實施例提供一種多核中央處理器系統中內存池的調度方法以及裝置,采用該技術方案,能夠提高多核CPU系統對數據處理的及時性。本發明實施例通過如下技術方案實現根據本發明實施例的ー個方面,提供了一種多核中央處理器系統中內存池的調度方法,包括內存池調度程序接收至少兩個流水線線程分別發送的內存分配申請;所述內存池調度程序針對接收的每個內存分配申請,分別執行從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用,其中,所述ー級內存池包括的緩沖單元從ニ級內存池包括的緩沖單元中調度。根據本發明實施例的另ー個方面,還提供了一種多核中央處理器系統中內存池的調度裝置,包括內存分配申請接收単元,用于接收至少兩個流水線線程分別發送的內存分配申請;內存池調度単元,用于針對接收的每個內存分配申請,分別執行從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用,其中,所述ー級內存池包括的緩沖單元從ニ級內存池包括的緩沖單元中調度。通過本發明實施例提供的上述至少ー個技術方案,內存池調度程序接收至少兩個流水線線程分別發送的內存分配申請后,針對接收的每個內存分配申請,分別執行分配內存池的處理,具體地,該分配內存池的處理過程包括從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的一 級內存池包括的緩沖單元分配給該流水線線程調用,其中,一級內存池包括的緩沖單元從ニ級內存池包括的緩沖單元中調度。根據該技術方案,在有多個流水線線程并發時,能夠針對該多個流水線線程分別分配對應的內存池資源以供調度,與現有的串行處理各流水線線程的內存分配申請的技術相比,減少了流水線線程等待內存池分配的時間,從而提高了多核CPU系統對數據處理的及時性,進而提升了多核CPU系統對數據處理的性能。本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明實施例一起用于解釋本發明,并不構成對本發明的限制。在附圖中圖I為背景技術提供的硬件內存池通過η個buffer ptr映射到系統內存的η個buffer的示意圖;圖2為背景技術提供的內存處理示意圖;圖3為本發明實施例一提供的生成一級內存池的流程示意圖;圖4為本發明實施例一提供的逐個生成一級內存池的處理流程圖;圖5為本發明實施例一提供的內存池調度程序生成一級內存池后對一級內存池進行監控的流程示意圖;圖6為本發明實施例一提供的逐個監控一級內存池的處理流程圖;圖7為本發明實施例二提供的一級內存池、二級內存池以及流水線線程的關系示意圖;圖8為本發明實施例二提供的多核CPU系統中調度內存池的流程示意圖;圖9為本發明實施例二提供的動態釋放buffer資源的處理流程示意圖;圖10為本發明實施例三提供的多核CPU系統中內存池的調度裝置的結構示意圖。
具體實施例方式為了給出提高多核CPU系統對數據處理的及時性的實現方案,本發明實施例提供了一種多核中央處理器系統中內存池的調度方法以及裝置,以下結合說明書附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明。并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相
互組合。本發明提供的多核CPU系統中內存池的調度方法中,需要預先生成多個分別與不同流水線線程對應的內存池,從而在有多個流水線線程并發時,能夠針對該多個流水線線程分別分配對應的內存池資源以供調度,從而減少了流水線線程等待內存池分配的時間,提高了多核CPU系統對數據處理的及時性。本發明各實施例中涉及的內存池被劃分為一級內存池和二級內存池,其中,一級 內存池即用于分配給各流水線線程調用的內存池,二級內存池可以為采用硬件管理機制的多核CPU系統中的硬件內存池,也可以為采用軟件管理機制的多核CPU系統中由內存池管理程序管理的內存池。在初始生成一級內存池時,每個一級內存池中包括的buffer主要從二級內存池包括的buffer中調度,并且根據后續的數據處理情況,該一級內存池中的buff er和二級內存池中的buf f er可以相互調度,例如,將一級內存池中的buf f er釋放給二級內存池,或利用二級內存池中的buffer補充一級內存池中的buffer。
實施例一本發明實施例一提供了一級內存池的生成過程,該一級內存池的生成過程一般在系統初始化階段完成,并且隨著系統的運行情況,可以根據實際情況增加一級內存池或減少一級內存池。圖3示出了生成一級內存池的流程示意圖,具體地,生成一級內存池主要包括如下步驟301以及步驟302 步驟301、內存池調度程序確定待生成的一級內存池的數量以及每個一級內存池的內存大小。其中,待生成的一級內存池的數量可以根據多核CPU系統中并發的流水線線程的數量確定,優選地,生成的一級內存池的數量可以等于并發的流水線線程的。實際應用中,也可以根據系統中內存資源對生成的一級內存池的數量進行調整,例如,在內存資源較少(如低于設定閾值)的情況下,可以確定生成的一級內存池的數量小于并發的流水線線程,在此情況下,可以將一個一級內存池分配給至少兩個流水線線程。其中,多核CPU系統中并發的流水線線程的數量可以根據多核CPU系統中多核數量確定,例如,在雙核CPU系統中,可以確定并發的流水線線程為2。待生成的一級內存池的內存大小可以根據所對應的流水線線程處理的業務量確定,即首先確定該一級內存池要被分配給的流水線線程,根據該流水線線程處理的業務量,將與該業務量匹配的內存大小確定為待生成的一級內存池的內存大小。其中,流水線線程處理的業務量可以為該流水線處理的業務量的平均值,即在設定時長內可能產生的業務量。步驟302、根據每個一級內存池的內存大小,從二級內存池包括的緩沖單元中分別調度與每個一級內存池的內存大小匹配的緩沖單元,生成所述數量的一級內存池。至此,內存池調度程序生成一級內存池的流程結束。圖3對應流程包括的步驟302中,可以逐個生成一級內存池。為便于理解,以下結合具體實例對該逐個生成一級內存池的處理過程進行說明。該具體實例中,生成η個一級內存池,每個一級內存池的內存大小通過所需要的內存長度以及在內存中對應的起始地址表征。圖4示出了該逐個生成一級內存池的處理流程圖,如圖4所示,主要包括如下步驟步驟401、啟動一級內存池初始化程序;步驟402、取i = O;其中,i為變量,表示當前已生成的一級內存池的數量;步驟403、判斷i是否小于n,若是,繼續執行步驟404,否則結束流程;其中,η為待生成的一級內存池的總數量;步驟404、根據當前要生成的一級內存池的內存大小,從二級內存池中取出相應數量的buffer,將取出的buffer分配給當前待生成的一級內存池;其中,將取出的buffer分配給當前待生成的一級內存池,主要是根據為當前待生成的一級內存池分配的標識,將該標識分配給取出的buffer ;
步驟405、將取出的buffer按照分配的標識生成一級內存池;步驟406、令i = i+Ι,并返回步驟403。至此,逐個生成一級內存池的流程結束。通過上述過程,能夠預先針對多核CPU系統中可能并發的流水線線程,生成多個一級內存池。在生成多個一級內存池的基 礎上,本實施例一還提供了一種對生成的一級內存池進行監控的方案,該方案主要是針對一級內存池中包括的buffer數進行監控,通過對每個一級內存池中包括的buffer數量的監控,能夠避免一級內存池為空或由于系統運行錯誤等原因導致的一級內存池中buffer數不足以對應的流水線線程調度的情況。圖5示出了內存池調度程序生成一級內存池后對一級內存池進行監控的流程示意圖,具體地,該監控過程主要包括如下步驟步驟501、內存池調度程序監控生成的每個一級內存池中包括的buffer的數量。為了節省資源,內存池調度程序可以定時對每個一級內存池中包括的buffer的數量進行監控。步驟502、判斷是否存在包括的緩沖單元的數量低于第一閾值的一級內存池,若是,繼續執行步驟503,否否,則結束本次監控。該步驟502中,第一閾值用于表征該一級內存池中應該包括的buffer數的最小值,該值可以設置為大于等于I的值。優選地,為了提高流水線線程調度一級內存池的成功率,該第一閾值可以根據該一級內存池對應的流水線線程處理的業務量進行設置,例如,根據該一級內存池對應的流水線線程處理的業務量確定需要的buffer數,并設置該第一閾值為確定出的該buffer數。步驟503、利用二級內存池中的buffer對該確定出的包括的緩沖單元的數量低于第一閾值的一級內存池進行buffer補充。該步驟503中,在利用二級內存池中的buffer對一級內存池中的buffer進行補充時,可以首先確定出該第一閾值與該一級內存池目前包括的buffer的數量的差值,并根據該差值從二級內存池包括的buffer中調度相應數量的buffer分配給該一級內存池,其中,該相應數量大于等于確定出的差值。至此,內存池調度程序對一級內存池進行監控的流程結束。上述圖5對應的監控過程可以串行進行,即內存池調度程序逐個對生成的一級內存池進行監控,便于理解,以下結合具體實例對該逐個監控一級內存池的處理過程進行說明。該具體實例中,對生成的η個一級內存池逐個監控,圖6示出了該逐個監控一級內存池的處理流程圖,如圖6所示,主要包括如下步驟步驟601、啟動一級內存池監控程序;步驟602、取i = O;其中,i為變量,表示當前已監控的一級內存池的數量;步驟603、判斷i是否小于n,若是,繼續執行步驟604,否則結束流程;步驟604、確定一個未被監控的一級內存池,并判斷當前一級內存池中包括的buffer數是否低于對應的閾值,若是,執行步驟605,若否,執行步驟606 ; 其中,在具體應用時,可以對各一級內存池進行排序,并根據排序結果依次選取一級內存池進行監控;步驟605、利用二級內存池中的buffer對該一級內存池中的buffer進行補充,并執行步驟606。步驟606、令i = i+Ι,并返回步驟603。至此,逐個監控一級內存池的流程結束。通過上述實施例一提供的處理流程能夠得到多個一級內存池,以供并發的多個流 水線線程調度,優選情況下,生成的一級內存池數量和并發的流水線線程數量相等,即每個流水線線程對應一個一級內存池。應當理解,每個流水線線程對應一個一級內存池僅為本發明實現的優選情況,實際應用中,生成的一級內存池數量也可以根據多核CPU系統的實際內存情況,大于或小于并發的流水線線程數量。例如,若多核CPU系統的實際內存資源較為充足,則可以控制一級內存池數量大于并發的流水線線程數量,以應對突發線程的出現;若多核CPU系統的實際內存資源較為緊缺,則可以控制一級內存池數量小于并發的流水線線程數量,即至少兩個流水線線程共享一個一級內存池資源,在此情況下,內存池調度程序需要逐個對共享一個一級內存池資源的流水線線程進行資源調度。實施例二本發明實施例二提供了一種多核CPU系統中內存池的調度方法,該方法主要利用上述實施例一生成的至少兩個一級內存池實現對并發的流水線線程的內存池調度。圖7示出了對二級內存池集成了內存池調度程序功能的情況下,一級內存池、二級內存池以及流水線線程的關系示意圖,該圖7中,以每個流水線線程對應一個一級內存池為例,由圖7可見,每個流水線會通過箭頭I向二級內存池發送內存分配申請,二級內存池確定出與該流水線線程對應的一級內存池后,通過箭頭2和3將該一級內存池分配給相應的流水線線程,后續,該流水線線程可以通過箭頭3調用對應的一級內存池中的buffer資源。圖8示出了多核CPU系統中調度內存池的流程示意圖,如圖8所示,主要包括如下步驟步驟801、內存池調度程序接收至少兩個流水線線程分別發送的內存分配申請。步驟802、內存池調度程序針對接收的每個內存分配申請,分別向發送內存分配申請的流水線線程分配對應的一級內存池進行調度。該步驟802中,內存池調度程序分別向發送內存分配申請的流水線線程分配對應的一級內存池進行調度,即從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的一級內存池包括的緩沖單元分配給該流水線線程調用。其中,內存池調度程序從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,主要根據預先分配給流水線線程的標識以及一級內存池的標識,即確定發送該內存分配申請的流水線線程的標識,并從預先生成的至少兩個分別對應不同標識的一級內存池中,確定出與該流水線線程的標識對應的一級內存池,并將確定出的該一級內存池確定為預先分配給發送該內存分配申請的流水線線程的一級內存池。其中,流水線線程的標識以及一級內存池的標識,可以在一級內存池生成階段分配。至此,多核CPU系統中調度內存池的流程結束。
根據圖8對應的流程,能夠針對該多個流水線線程分別分配對應的內存池資源以供調度,當η條流水線線程同時有內存分配申請時,可以并行的從相應的一級內存池中獲取buffer。而根據圖2對應的現有技術,η條流水線線程同時有內存分配申請時,是逐一對流水線線程的內存分配申請進行處理的,即在一條流水線完成內存池調用以及釋放后,才給另一個流水線線程分配內存池,這樣,在內存分配申請隊列中就會同時保存η條內存分配申請,假如響應每條內存分配申請的時間為t,則完成η條流水線線程內存分配的時間大概為η乘以t的時間,會明顯的導致系統性能的下降。而根據本發明圖8對應的處理流程,在同樣的情況下,完成η條流水線線程內存分配的時間大概為t,即使存在至少兩個流水線線程共享一個一級內存池的情況,完成η條流水線線程內存分配的時間也是小于η乘以t的時間的。在基于圖8對應的流程,內存池調度程序分別向發送內存分配申請的流水線線程分配對應的一級內存池后,流水線線程可以從相應的一級內存池中獲取buffer,并在流水線結束后(即發送完報文后),流水線釋放相應的buffer資源,一般情況下,流水線線程會將buffer釋放回相應的一級內存池,本實施例二提供的一個優選實施方式中,可以動態釋放buffer資源。具體地,圖9示出了該動態釋放buffer資源的處理流程,主要包括如下步 驟步驟901、內存池調度程序接收流水線線程在調用一級內存池包括的buffer后發送的內存釋放請求。其中,內存釋放請求中會攜帶請求釋放的buffer對應的一級內存池的標識。步驟902、確定該內存釋放請求所請求釋放的buffer對應的一級內存池包括的空閑buffer的數量。步驟903、確定空閑buffer的數量是否大于第二閾值,若是,執行步驟904,若否,執行步驟905。其中,第二閾值用于表征該一級內存池中應該包括的空閑buffer數的最大值,該值可以根據一級內存池包括的buffer總數量以及設置的最大空閑率確定,例如,一級內存池中包括m個buffer,設置的最大空閑率為40 %,則可以設置第二閾值為m乘以40 %。步驟904、將該內存釋放請求所請求釋放的buffer釋放給二級內存池。步驟905、將該內存釋放請求所請求釋放的buffer釋放給對應的一級內存池。至此,動態釋放buffer資源的處理流程結束。通過圖9對應的流程,能夠根據一級內存池中包括的空閑buffer數量動態釋放buffer,從而盡量減少buffer資源的空閑,提高資源利用率。實施例三與上述實施例一以及實施例二提供的多核CPU中內存池的調度方法對應,本實施例三提供了一種多核CPU中內存池的調度裝置,圖10示出了該多核CPU中內存池的調度裝置的結構示意圖,如圖10所示,該裝置主要包括內存分配申請接收單元1001、內存池生成單元1002以及內存池調度單元1003 ;其中內存分配申請接收單元1001,用于接收至少兩個流水線線程分別發送的內存分配申請;
內存池生成單元1002,用于生成至少兩個一級內存池,并將生成的每個一級內存池分別分配給流水線線程,其中,一級內存池包括的緩沖單元從二級內存池包括的緩沖單元中調度;內存池調度單元1003,用于針對接收的每個內存分配申請,分別執行從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的一級內存池包括的緩沖單元分配給該流水線線程調用。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池調度單元1003,具體用于確定發送該內存分配申請的流水線線程的標識,從預先生成的至少兩個分別對應不同標識的一級內存池中,確定出與流水線線程的標識對應的一級內存池,并將確定出的一級內存池確定為預先分配給發送該內存分配申請的流水線線程的一級內存池。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池生成單元1002,具體用于確定待生成的一級內存池的數量以及每個一級內存池的內存大小,根據每個一級內存池的內存大小,從二級內存池包括的緩沖單元中分別調度與每個一級內存池的內存大小匹配的緩沖單元,生成數量的一級內存池。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池生成單元1002,具體用于確定所在多核中央處理器系統并發的流水線線程的數量,并根據并發的流水線線程的數量,確定待生成的一級內存池的數量。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池生成單元1002,具體用于確定待生成的一級內存池對應的流水線線程,根據流水線線程處理的業務量,將與業務量匹配的內存大小確定為待生成的一級內存池的內存大小。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池調度單元1003,還用于生成數量的一級內存池后,監控生成的每個一級內存池中包括的緩沖單元的數量,在存在包括的緩沖單元的數量低于第一閾值的一級內存池時,確定第一閾值與該一級內存池包括的緩沖單元的數量的差值,并從二級內存池包括的緩沖單元中調度相應數量的緩沖單元分配給該一級內存池,其中,相應數量大于等于差值。本實施例三提供的一個優選實施方式中,圖10所示的裝置包括的內存池調度單元1003,還用于將確定出的一級內存池包括的緩沖單元分配給該流水線線程調用后,接收流水線線程在調用一級內存池包括的緩沖單元后發送的內存釋放請求,確定內存釋放請求所請求釋放的緩沖單元對應的一級內存池包括的空閑緩沖單元的數量,若空閑緩沖單元的數量大于第二閾值,則將內存釋放請求所請求釋放的緩沖單元釋放給二級內存池,否則,將內存釋放請求所請求釋放的緩沖單元釋放給對應的一級內存池。應當理解,以上多核CPU系統中內存池的調度裝置包括的單元僅為根據該裝置實現的功能進行的邏輯劃分,實際應用中,可以進行上述單元的疊加或拆分。并且該實施例三提供的多核CPU系統中內存池的調度裝置所實現的功能與上述實施例一以及實施例二提供的相應方法流程一一對應,對于該裝置所實現的更為詳細的處理流程,在上述方法實施例中已做詳細描述,此處不再詳細描述。
并且,本實施例三中的多核CPU系統中內存池的調度裝置還具有能夠實現實施例一和實施例二方案的功能模塊,此處不再贅述。盡管已描述了本申請的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本申請范圍的所有變更和修改。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍 之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種多核中央處理器系統中內存池的調度方法,其特征在于,包括 內存池調度程序接收至少兩個流水線線程分別發送的內存分配申請; 所述內存池調度程序針對接收的每個內存分配申請,分別執行 從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用,其中,所述ー級內存池包括的緩沖單元從ニ級內存池包括的緩沖單元中調度。
2.如權利要求I所述的方法,其特征在于,預先生成一級內存池的過程,包括 內存池調度程序確定待生成的ー級內存池的數量以及每個ー級內存池的內存大小;根據每個ー級內存池的內存大小,從ニ級內存池包括的緩沖單元中分別調度與每個ー級內存池的內存大小匹配的緩沖單元,生成所述數量的一級內存池。
3.如權利要求2所述的方法,其特征在干,內存池調度程序確定待生成的一級內存池的數量,包括 內存池調度程序確定所在多核中央處理器系統并發的流水線線程的數量; 根據所述并發的流水線線程的數量,確定待生成的一級內存池的數量。
4.如權利要求2所述的方法,其特征在于,內存池調度程序確定待生成的一級內存池的內存大小,包括 內存池調度程序確定待生成的ー級內存池對應的流水線線程; 根據所述流水線線程處理的業務量,將與所述業務量匹配的內存大小確定為待生成的一級內存池的內存大小。
5.如權利要求2所述的方法,其特征在干,生成所述數量的一級內存池后,還包括 監控生成的姆個ー級內存池中包括的緩沖單元的數量; 在存在包括的緩沖單元的數量低于第一閾值的ー級內存池時,確定所述第一閾值與該一級內存池包括的緩沖單元的數量的差值; 從ニ級內存池包括的緩沖單元中調度相應數量的緩沖單元分配給該ー級內存池,其中,所述相應數量大于等于所述差值。
6.如權利要求I所述的方法,其特征在干,內存池調度程序將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用后,還包括 內存池調度程序接收所述流水線線程在調用所述ー級內存池包括的緩沖單元后發送的內存釋放請求; 確定所述內存釋放請求所請求釋放的緩沖單元對應的ー級內存池包括的空閑緩沖單元的數量; 若所述空閑緩沖單元的數量大于第二閾值,則將所述內存釋放請求所請求釋放的緩沖單元釋放給所述ニ級內存池,否則,將所述內存釋放請求所請求釋放的緩沖單元釋放給對應的ー級內存池。
7.一種多核中央處理器系統中內存池的調度裝置,其特征在于,包括 內存分配申請接收単元,用于接收至少兩個流水線線程分別發送的內存分配申請;內存池生成単元,用于生成至少兩個一級內存池,并將生成的每個ー級內存池分別分配給流水線線程,其中,所述ー級內存池包括的緩沖單元從ニ級內存池包括的緩沖單元中調度;內存池調度単元, 用于針對接收的每個內存分配申請,分別執行從預先生成的至少兩個ー級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,并將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用。
8.如權利要求7所述的裝置,其特征在于,所述內存池生成単元,具體用于確定待生成的一級內存池的數量以及每個ー級內存池的內存大小,根據每個一級內存池的內存大小,從ニ級內存池包括的緩沖單元中分別調度與每個ー級內存池的內存大小匹配的緩沖單元,生成所述數量的一級內存池。
9.如權利要求8所述的裝置,其特征在于,所述內存池生成単元,具體用于確定所在多核中央處理器系統并發的流水線線程的數量,并根據所述并發的流水線線程的數量,確定待生成的一級內存池的數量。
10.如權利要求8所述的裝置,其特征在于,所述內存池生成単元,具體用于確定待生成的一級內存池對應的流水線線程,根據所述流水線線程處理的業務量,將與所述業務量匹配的內存大小確定為待生成的一級內存池的內存大小。
11.如權利要求8所述的裝置,其特征在于,所述內存池調度單元,還用于生成所述數量的一級內存池后,監控生成的每個ー級內存池中包括的緩沖單元的數量,在存在包括的緩沖單元的數量低于第一閾值的ー級內存池時,確定所述第一閾值與該ー級內存池包括的緩沖單元的數量的差值,并從ニ級內存池包括的緩沖單元中調度相應數量的緩沖單元分配給該ー級內存池,其中,所述相應數量大于等于所述差值。
12.如權利要求7所述的裝置,其特征在于,所述內存池調度單元,還用于將確定出的所述ー級內存池包括的緩沖單元分配給該流水線線程調用后,接收所述流水線線程在調用所述ー級內存池包括的緩沖單元后發送的內存釋放請求,確定所述內存釋放請求所請求釋放的緩沖單元對應的ー級內存池包括的空閑緩沖單元的數量,若所述空閑緩沖單元的數量大于第二閾值,則將所述內存釋放請求所請求釋放的緩沖單元釋放給所述ニ級內存池,否則,將所述內存釋放請求所請求釋放的緩沖單元釋放給對應的ー級內存池。
全文摘要
本發明公開了一種多核中央處理器系統中內存池的調度方法以及裝置,根據該技術方案,內存池調度程序接收至少兩個流水線線程分別發送的內存分配申請后,針對接收的每個內存分配申請,分別執行分配內存池的處理,即從預先生成的至少兩個一級內存池中,確定出預先分配給發送該內存分配申請的流水線線程的一級內存池,將確定出的一級內存池包括的緩沖單元分配給該流水線線程調用,其中,一級內存池包括的緩沖單元從二級內存池包括的緩沖單元中調度。根據該技術方案,在有多個流水線線程并發時,能夠針對該多個流水線線程分別分配對應的內存池資源以供調度,從而提高了多核CPU系統對數據處理的及時性。
文檔編號G06F9/38GK102662761SQ20121008388
公開日2012年9月12日 申請日期2012年3月27日 優先權日2012年3月27日
發明者李磊 申請人:福建星網銳捷網絡有限公司