新四季網

基於非一致性內存訪問系統的網絡設備及其設置方法

2023-04-28 20:10:56

基於非一致性內存訪問系統的網絡設備及其設置方法
【專利摘要】本發明基於非一致性內存訪問系統的網絡設備及其設置方法,涉及網絡數據傳輸領域,本發明是由多核計算機處理器、處理器內存、PCIeI/O控制器、n(n≥1)個進程模塊以及網卡等部分組成,並通過對系統的NUMA節點與相關部件綁定後形成運行域,以保證進程和網卡只使用離自己最近的內存。本發明充分利用了NUMA系統的特性,在系統正常運行的情況下,運行域是相互獨立運行的,一個運行域中的進程和網卡不會訪問另外一個運行域的內存。這樣就能發揮NUMA系統的最大效率。
【專利說明】基於非一致性內存訪問系統的網絡設備及其設置方法
[0001]本發明涉及網絡數據傳輸領域,特別涉及一種基於非一致性內存訪問系統的網絡設備及其設置方法。

【背景技術】
[0002]NUMACNon Uniform Memory Access Achitecture,非一致性內存訪問或者非統一內存架構)是一種用於多處理器計算機的內存設計方案。在NUMA系統中,內存訪問時間取決於處理器與內存相對位置。也就是說,處理器訪問它自己的本地存儲器的速度要比訪問非本地存儲器的速度要塊。
[0003]英特爾公司的最新處理器,比如代號為Nehalem, Sandy Bridge和ivy bridge等至強處理器,都使用的是這種NUMA架構。這些系統中的一個最大的變化是在處理器中整合了內存控制器,而不像以前的處理器,把內存控制器放在北橋晶片組中。因此,當一個處理器要訪問另一個處理器所帶的內存時,首先要通過處理器間的鏈路才能訪問到對方的內存,這就比訪問本地內存所花費的時間多。
[0004]英特爾公司的另外一項技術:QuickPath interconnect (QPI)互聯技術,來連接處理器與處理器,以及處理器和外部I/O的連接。這是一種點對點的連接方式,替代了以前的總線共享方式。這種技術雖然能減輕訪問遠端節點的耗費,但並不能完全去掉,因此從本質上說,訪問本地和遠程內存的差異使得這些多核處理器系統成為了符合NUMA架構的系統。
[0005]另外,代號為sandy bridge處理器還把PC1-express I/O (新一代的總線接口)子系統集成到晶片中,並與晶片中的其他部分,如:處理器核心,處理器的高速緩存,集成的內存控制器,以及QPI代理,通過一個32位的雙向環直接相連。這種連接方式大大減少了PC1-express設備的訪問延遲。根據英特爾公司的測量的數據,讀取本地的數據會減少32%延遲。除此之外,英特爾的DD1技術(Data Direct 1/0,直接的I/O的橋)可以使PCIe網卡直接讀寫處理器的高速緩存,而不必先寫到內存,再到高速緩存。這樣不但減少了功耗,還進一步減少了訪問的延遲。在這種架構下,處理器很容易處理萬兆級別的乙太網絡。如圖1中顯示的是兩個NUMA節點,每個節點包含了一個六個核心的處理器以及與它直連的內存。
[0006]為了適應上述硬體系統的發展,現代作業系統,比如linux/FreeBSD,做了很多改進。與NUMA方面的相關改進有:①實現了根據NUMA節點信息來分配內存。②進程的綁定:當進程需要運行時,作業系統會根據某種調度算法來選擇一個計算機核給這個進程,當運行一段時間或者需要睡眠時,又會被調度出去,等待再次被調度運行。但進程調度往往不會考慮已使用的內存在哪個節點上,因此進程有個可能會從一個處理器的核心遷移到另外一個處理器的核心。如果進程在第一個處理器中分配內存,而在調度到第二個處理器使用這些內存,那就會影響系統的性能。作業系統提供的綁定功能是指進程只能在所指定的幾個處理器核心上運行,這樣可以使得被綁定的進程訪問數據都在本地節點中。
[0007]作為網絡設備,必須儘快地處理包,提高網絡的吞吐,減少延遲。目前該領域已有技術中,有的採用虛擬化技術來使用NUMA伺服器,根據NUMA節點把系統分成幾個獨立的系統,雖然實現起來簡單,但多個虛擬系統整合起來很不方便,性能方面也會有不少損失。
[0008]另外的方法是採用作業系統提供有些基本功能,比如進程綁定和NUMA內存分配功能,來對系統進行調優,以減少對遠程系統內存的訪問所帶來的開銷。但這些只是些通用的功能,並沒有為網絡產品提供完整的解決方案。目前的作業系統,例如linux/unix雖然都支持了此方法,但都不能有效的解決NUMA所引起的內存訪問衝突的問題,從而不能100%的有效發揮硬體的性能。
[0009]再次,上述已有技術沒充分利用現有處理器架構,即把PCIe總線控制器集成到處理器的特性。目前網卡技術已經發展到採用PCIe接口,上述已有技術尚未充分利用這點來提高網口的性能。


【發明內容】

[0010]為克服已有技術中存在的問題,本發明的目的是提供一種基於非一致性內存訪問系統的網絡設備及設置方法,在充分發揮現有硬體技術發展性能的基礎上使得訪問系統高效率、且用戶操作方便。
[0011]基於非一致性內存訪問系統的網絡設備,包括多核計算機處理器、處理器內存、PCIel/O控制器、n (n ^ I)個進程模塊以及網卡,所述的進程模塊或稱工作進程模塊,可以是內核線程,以下統稱進程,所述的進程綁定在一個核心或者同一個處理器上的不同核心上。其中η個進程模塊並發處理不同網絡協議的數據包,每個進程模塊綁定在所述多核處理器的一個核心或者同一個處理器的m(m> I)個核心上,並同時與所述多核處理器的PCIel/O控制器綁定,以形成由多核處理器、處理器內存及PCIel/O控制器構成的運行域。
[0012]進一步地,所述的運行域間保持相互獨立,所述的η個進程在所述的運行域中處理各自的數據包。
[0013]進一步地,所述的運行域根據多核計算機處理器的NUMA節點情況劃分,每個運行域至少包括一個NUMA節點以保證進程和網卡使用離自己較近的內存。
[0014]進一步地,所述的網卡和與其相連的、內嵌於處理器的PCIe I/O控制器所在的運行域綁定,由該運行域的進程來處理所述網卡的數據包。
[0015]基於非一致性內存訪問系統的網絡設備設置方法,包括以下步驟:
[0016]步驟1,根據主板提供的信息,確定系統的NUMA節點數、每個節點的處理器核心、以及每個節點所帶的物理內存地址的範圍,並記錄這些信息以供內存分配的時候使用;
[0017]步驟2,初始化網卡:根據PCI總線探測的結果,獲得所述網卡屬於哪個主橋(HostBridge,主板上離CPU最近的晶片)下,找到該主橋對應的處理器,從而確定它所在的運行域;
[0018]步驟3,啟動進程:根據配置把進程綁定到相應的處理器核心上,進程初始化全局變量。
[0019]進一步地,上述步驟3所述的進程,它們的主函數操作包括以下分步驟:
[0020]—通過查詢的方式,看本進程綁定的網卡隊列中是否接收到了網絡數據包,如果有,則從該隊列中拿出來,然後根據固定的算法,把網絡數據包放在某個進程的接收隊列中,等待它做網絡協議層方面的處理,算法根據網絡協議有所不同;
[0021]—上面的操作會使網卡的接收隊列空出新的空間,所以需要用新的空閒內存來填,進程從網卡所屬的運行域中獲得內存,並把內存地址寫到網卡的接收隊列中;
[0022]—查詢網卡發送隊列是否有數據包已經發出去了,有的話,則釋放相應的內存;
[0023]—如果進程的發送隊列中有數據包要發送,則把數據包發到網卡的發送隊列中;
[0024]—進程從自己的接收隊列中獲得數據包,並對其進行網絡協議層方面的處理。如果有數據包需要發出去,先放在進程的發送隊列中,進程發送隊列的數據包通過所述網卡發送隊列發送出去。
[0025]進一步地,上述步驟I中所述的內存分配包括普通內存分配和網絡內存分配,所述普通內存分配包括以下分步驟:
[0026]——先確定從哪個運行域中分配內存,如果輸入參數中沒指定,則根據當前進程所在的運行域中分配內存,否則,從指定的運行域中分配;
[0027]——如果該運行域中有內存,則從系統的該運行域中分配所需內存,否則,
[0028]——如果遠端域中有內存,則從其他運行域中獲得,否則,
[0029]——分配失敗。
[0030]進一步地,所述的網絡內存為每個並行處理的進程配置網絡內存緩存模塊,以便於高速處理網絡數據包。
[0031]進一步地,所述的為每個進程配置網絡內存緩存模塊分為鍊表和環形隊列兩級:
[0032]第一級是個鍊表,包括有頭指針,鍊表長度和這個鍊表允許的最大長度等欄位。釋放內存的時候,如果長度不超過鍊表的最大長度,則都插到鍊表中。否則,就掛到自己的隊列中(如果隊列也沒滿)。分配內存的時候,如果鍊表中有內存就從鍊表中分配。如果沒有,就從其他進程的環形隊列轉移一些網絡內存到自己的鍊表中,然後再從鍊表中分配內存。
[0033]第二級為環形隊列,環形隊列是進程間用來交換內存的,因為有可能某些進程累積的內存多,有些累積的少。少的進程就可以從多的進程的隊列裡獲得內存,而不必從系統中獲得內存。環形隊列本質上是個指針數組,有寫指針和讀指針。寫指針由自己來控制(因此不需要互斥鎖來避免並發),當所述自己的鍊表已滿,則把內存插入到本進程的隊列中。讀指針由其它的進程操作,因此有個互斥鎖來避免並發操作產生的衝突。其它的進程操作前必須獲得隊列的互斥鎖,然後才能從隊列中獲得內存,並移動讀指針。
[0034]進一步地,所述的為每個進程配置網絡內存緩存模塊的分步驟如下:
[0035]—如果本進程鍊表內有空閒的內存,則分配並返回;否則,
[0036]—從本進程的環形隊列開始,依次遍歷同運行域中的所有進程的環形隊列:首先嘗試獲得該環形隊列的互斥鎖:如果能拿到互斥鎖,則把該隊列上所有的空閒內存移到本進程的鍊表中,然後分配一個內存並退出。如果隊列中沒有空閒內存或則是不能拿到互斥鎖,則嘗試下一個進程的環形隊列,直到遍歷完所有進程的環形隊列;
[0037]—如果所有的環形隊列都沒有空閒內存,則從該運行域的系統內存中獲得。
[0038]進一步地,所述的進程釋放內存的分步驟如下:
[0039]——如果本進程的鍊表長度小於設定的最大長度,則把要釋放的內存插到鍊表中;否則,
[0040]—如果本進程的環形隊列還沒滿,則把空閒隊列掛上去,並修改寫指針;否則,
[0041]——把所述內存釋放到系統中。
[0042]本發明充分利用了 NUMA系統的特性,在系統正常運行的情況下,運行域是相互獨立運行的,一個運行域中的進程和網卡不會訪問另外一個運行域的內存。這樣就能發揮NUMA系統的最大效率。本發明設計從硬體結構入手,改造系統軟體,讓它更符合NUMA系統的特性,以減少內存訪問所帶來的損耗,有效發揮硬體所能提供的性能。

【專利附圖】

【附圖說明】
[0043]圖1是已有技術中NUMA系統結構示意圖;
[0044]圖2是本發明NUMA系統的網絡設備結構示意圖;
[0045]圖3是本發明系統的運行域為每個進程配置網絡內存緩存模塊的流程框圖。【具體實施方式】
[0046]在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術細節。但是,本領域的普通技術人員可以理解,即使沒有這些技術細節和基於以下各實施方式的種種變化和修改,也可以實現本申請各權利要求所要求保護的技術方案。
[0047]為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明的實施方式作進一步地詳細描述。
[0048]如圖2所示,基於非一致性內存訪問系統的網絡設備,包括多核計算機處理器110、處理器內存120、PCIEI/0控制器140、η (η≥1)個進程模塊130以及網卡150,其中η個進程模塊並發處理不同網絡協議的數據包,所述的進程或稱工作進程可以是內核線程,每個進程模塊綁定在所述多核處理器的一個核心或者同一個處理器的m(m> I)個不同核心上,並同時與所述多核處理器的PCIEI/0控制器綁定,以形成由多核處理器、處理器內存及PCIEI/0控制器構成的運行域100,所述的運行域間保持相互獨立,所述的η個進程在所述的運行域中處理各自的數據包。所述的運行域根據多核計算機處理器的NUMA節點情況劃分,每個運行域至少包括一個NUMA節點以保證進程和網卡使用離自己較近的內存。由於進程屬於一個運行域,通過這種方法很容易把網卡綁定到離它較近的運行域中,所述的網卡應採用PCIe接口的網卡。一般來說,萬兆網卡都有多個發送和接收隊列,如上所述可以把不同的一對發送和接收隊列綁定到同一個運行域的不同進程中。
[0049]進一步地,所述的網卡和與其相連的、內嵌於處理器的PCIe PCIEI/0控制器所在的運行域綁定,由該運行域的進程來處理所述網卡的數據包。
[0050]上述進程和網卡的運行域固定下來以後,我們就能根據就近原則從它們所屬的運行域中分配內存。一方面,避免訪問遠程節點所帶來的額外延遲;另一方面,減少不同處理器訪問同一個內存所帶來的訪問衝突。為此,我們改造了系統內存的分配函數,以便從指定的運行域中分配內存,當指定的運行域中沒有可用內存以後,才到其它運行域中獲取內存,例如較遠端的運行域中獲取內存。
[0051]同時,為了排除作業系統對加載進程的影響,每個進程使用的全局變量數組應當動態分配,通過改造後的內存分配函數,從它所屬的運行域中分配。此外,進程的運行棧也必須從它所在運行域的內存中分配。總的原則是,進程所需要的內存都從它所屬的運行域中獲得。
[0052]基於非一致性內存訪問系統的網絡設備設置方法,包括以下步驟:
[0053]步驟1,根據主板提供的信息,確定系統的NUMA節點數、每個節點的處理器核心、以及每個節點所帶的物理內存地址的範圍,並記錄這些信息以供內存分配的時候使用;
[0054]步驟2,初始化網卡:根據PCI總線探測的結果,獲得所述網卡屬於哪個主橋(HostBridge,主板上離CPU最近的晶片)下,也就可以知道它與哪個處理器離得近,從而確定它所在的運行域;此步驟用於確定網卡與進程的關係,也就是確定由哪個進程來處理網卡的流量,原則是網卡必須由同一個運行域中的進程來處理;
[0055]步驟3,啟動進程:根據配置把進程綁定到相應的處理器核心上,進程初始化全局變量,在這個時候可以從進程所屬的運行域中獲得。一般來說,每個處理器核心上都有一個進程,我們給在同一個運行域的進程從「O」開始統一編號。
[0056]進一步地,步驟3所述的在同一個運行域的進程,它們的主函數操作包括以下分步驟:
[0057]—通過查詢的方式,看自己綁定的網卡隊列中是否接收到了網絡數據包,如果有,則從該隊列中拿出來,然後根據固定的算法,把網絡數據包放在某個進程的接收隊列中,等待它做網絡協議層方面的處理,算法根據網絡協議有所不同,例如,對於TCP和UDP,可以根據數據包的源埠和目的埠相加,然後與運行域中總進程數取模來獲得目的進程的編號;
[0058]—上面的操作會使網卡的接收隊列空出新的空間,所以需要用新的空閒內存來填,進程從網卡所屬的運行域中獲得內存,並把內存地址寫到網卡的接收隊列中;
[0059]—查詢網卡發送隊列是否有數據包已經發出去了,有的話,則釋放相應的內存;
[0060]—如果進程的發送隊列中有數據包要發送,則把數據包發到網卡的發送隊列中;
[0061]—進程從自己的接收隊列中獲得數據包,並對其進行網絡協議層方面的處理。如果有數據包需要發出去,先放在進程的發送隊列中,進程發送隊列的數據包通過所述網卡發送隊列發送出去。
[0062]進一步地,上述步驟I中所述的內存分配包括普通內存分配和網絡內存分配,網絡內存是給網絡模塊用的,用於保存網卡收發的數據包,它有固定大小,例如2048位元組,大於乙太網幀的最大長度。除了網絡內存,就是普通內存。所述普通內存分配包括以下分步驟:
[0063]——先確定從哪個運行域中分配內存,如果輸入參數中沒指定,則根據當前進程所在的運行域中分配內存,否則,從指定的運行域中分配;
[0064]—如果該運行域中有內存,則從系統的該運行域中分配所需內存,否則,
[0065]——如果遠端域中有內存,則從其他運行域中獲得,否則,
[0066]——分配失敗。
[0067]一般高速網絡每秒要處理幾百萬個包,上述普通內存的分配方式明顯不能適應這樣的網絡狀況。因此為了更有效的發送和接收數據包,我們給每個並行處理的進程增加了一層內存緩存模塊。當需要內存的時候,先看該緩存中有沒有,如果有就從中分配,否則按上面說的普通內存分配方式從系統中分配。當釋放內存的時候,先釋放到內存緩存模塊中,當內存緩存模塊已滿則釋放到系統中。
[0068]進一步地,所述的網絡內存為每個並行處理的進程配置網絡內存緩存模塊,以便於高速處理網絡數據包。
[0069]進一步地,所述的為每個進程配置網絡內存緩存模塊分為鍊表和環形隊列兩級:
[0070]第一級是個鍊表,包括有頭指針,鍊表長度和這個鍊表允許的最大長度等欄位。釋放內存的時候,如果長度不超過鍊表的最大長度,則都插到鍊表中。否則,就掛到自己的隊列中(如果隊列也沒滿)。分配內存的時候,如果鍊表中有內存就從鍊表中分配。如果沒有,就從其他進程的環形隊列轉移一些網絡內存到自己的鍊表中,然後再從鍊表中分配內存。
[0071]第二級為環形隊列,環形隊列是進程間用來交換內存的,因為有可能某些進程累積的內存多,有些累積的少。少的進程就可以從多的進程的隊列裡獲得內存,而不必從系統中獲得內存。環形隊列本質上是個指針數組,有寫指針和讀指針。寫指針由自己來控制(因此不需要互斥鎖來避免並發),當所述自己的鍊表已滿,則把內存插入到本進程的隊列中。讀指針由其它的進程操作,因此有個互斥鎖來避免並發操作產生的衝突。其它的進程操作前必須獲得隊列的互斥鎖,然後才能從隊列中獲得內存,並移動讀指針。
[0072]進一步地,如圖3所示,所述的為每個進程配置網絡內存緩存模塊的分步驟如下:
[0073]—如果本進程鍊表內有空閒的內存,則分配並返回;否則,
[0074]從本進程的環形隊列開始,依次遍歷同運行域中的所有進程的環形隊列:首先嘗試獲得該環形隊列的互斥鎖:如果能拿到互斥鎖,則把該隊列上所有的空閒內存移到本進程的鍊表中,然後分配一個內存並退出。如果隊列中沒有空閒內存或則是不能拿到互斥鎖,則嘗試下一個進程的環形隊列,直到遍歷完所有進程的環形隊列;
[0075]—如果所有的環形隊列都沒有空閒內存,則從該運行域的系統內存中獲得。
[0076]進一步地,所述的進程釋放內存的分步驟如下:
[0077]——如果本進程的鍊表長度小於設定的最大長度,則把要釋放的內存插到鍊表中;否則,
[0078]—如果本進程的環形隊列還沒滿,則把空閒隊列掛上去,並修改寫指針;否則,
[0079]——把所述內存釋放到系統中。
[0080]採用本發明的網絡產品使用的是通用伺服器主板,比其他專業網絡處理平臺相t匕,它的優點是成本低,設計靈活。雖然硬體上沒專業的網絡處理器強大,但如果能隨著英特爾公司硬體的發展,採用多核多進程技術,並充分利用新的NUMA架構平臺優勢,也可以達到理想的性能。本發明設計從硬體結構入手,改造系統軟體,讓它更符合NUMA系統的特性,以減少內存訪問所帶來的損耗,有效發揮硬體所能提供的性能。
[0081]需要說明的是,本發明各設備實施方式中提到的各單元都是邏輯單元,在物理上,一個邏輯單元可以是一個物理單元,也可以是一個物理單元的一部分,還可以以多個物理單元的組合實現,這些邏輯單元本身的物理實現方式並不是最重要的,這些邏輯單元所實現的功能的組合才是解決本發明所提出的技術問題的關鍵。此外,為了突出本發明的創新部分,本發明沒有引入上述各設備實施方式以及與解決本發明所提出的技術問題關係不太密切的單元,但這並不表明不存在上述設備實施方式以及其它有關實施單元。
[0082]雖然通過參照本發明的某些優選實施方式,已經對本發明進行了圖示和描述,但本領域的普通技術人員應該明白,可以在形式上和細節上對其作各種改變,而不偏離本發明的精神和範圍。
【權利要求】
1.一種基於非一致性內存訪問系統的網絡設備,包括多核計算機處理器、處理器內存、PCIel/O控制器、η (η ^ I)個進程模塊以及網卡,其特徵是η個進程模塊並發處理不同網絡協議的數據包,每個進程模塊綁定在所述多核處理器的一個核心或者同一個處理器的m(m≥I)個核心上,並同時與所述多核處理器的PCIel/O控制器綁定,以形成由多核處理器、處理器內存及PCIel/O控制器構成的運行域。
2.根據權利要求1所述的基於非一致性內存訪問系統的網絡設備,其特徵是所述的運行域間保持相互獨立,所述的η個進程模塊在所述的運行域中處理各自的數據包。
3.根據權利要求1或2所述的基於非一致性內存訪問系統的網絡設備,其特徵是所述的運行域根據多核計算機處理器的NUMA節點情況劃分,每個運行域至少包括一個NUMA節點以保證進程和網卡使用離自己較近的內存。
4.根據權利要求1或2所述的基於非一致性內存訪問系統的網絡設備,其特徵是所述的網卡和與其相連的、內嵌於處理器的PCIe I/O控制器所在的運行域綁定,由該運行域的進程來處理所述網卡的數據包。
5.一種基於非一致性內存訪問系統的網絡設備設置方法,其特徵是包括以下步驟: 步驟1,根據主板提供的信息,確定系統的NUMA節點數、每個節點的處理器核心、以及每個節點所帶的物理內存地址的範圍,並記錄這些信息以供內存分配的時候使用; 步驟2,初始化網卡:根據PCI總線探測的結果,獲得所述網卡屬於哪個主橋下,找到該主橋對應的處理器,從而確定它所在的運行域; 步驟3,啟動進程:根據配置把進程綁定到相應的處理器核心上,進程初始化全局變量。
6.根據權利要求5所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是上述步驟3所述的進程,其主函數操作包括以下分步驟: —通過查詢的方式,看自己綁定的網卡隊列中是否接收到了網絡數據包,如果有,則從該隊列中拿出來,然後根據固定的算法,把網絡數據包放在某個進程的接收隊列中,等待它做網絡協議層方面的處理,算法根據網絡協議有所不同; —上面的操作會使網卡的接收隊列空出新的空間,所以需要用新的空閒內存來填,進程從網卡所屬的運行域中獲得內存,並把內存地址寫到網卡的接收隊列中; —查詢網卡發送隊列是否有數據包已經發出去了,有的話,則釋放相應的內存; —如果進程的發送隊列中有數據包要發送,則把數據包發到網卡的發送隊列中;——進程從自己的接收隊列中獲得數據包,並對其進行網絡協議層方面的處理。如果有數據包需要發出去,先放在進程的發送隊列中,進程發送隊列的數據包通過所述網卡發送隊列發送出去。
7.根據權利要求5所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是上述步驟I中所述的內存分配包括普通內存分配和網絡內存分配,所述普通內存分配包括以下分步驟: ——先確定從哪個運行域中分配內存,如果輸入參數中沒指定,則根據當前進程所在的運行域中分配內存,否則,從指定的運行域中分配; ——如果該運行域中有內存,則從系統的該運行域中分配所需內存,否則, ——如果遠程運行域中有內存,則從其他運行域中獲得,否則,—分配失敗。
8.根據權利要求7所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是所述的網絡內存為每個並行處理的進程配置網絡內存緩存模塊,以便於高速處理網絡數據包。
9.根據權利要求8所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是所述的為每個並行處理的進程配置網絡內存緩存模塊分為鍊表和環形隊列兩級,其中 第一級是個鍊表,包括有頭指針,鍊表長度和這個鍊表允許的最大長度等欄位。釋放內存的時候,如果長度不超過鍊表的最大長度,則都插到鍊表中。否則,就掛到自己的隊列中(如果隊列也沒滿)。分配內存的時候,如果鍊表中有內存就從鍊表中分配。如果沒有,就從其他進程的環形隊列轉移一些網絡內存到自己的鍊表中,然後再從鍊表中分配內存。 第二級為環形隊列,環形隊列是進程間用來交換內存的,因為有可能某些進程累積的內存多,有些累積的少。少的進程就可以從多的進程的隊列裡獲得內存,而不必從系統中獲得內存。環形隊列本質上是個指針數組,有寫指針和讀指針。寫指針由自己來控制(因此不需要互斥鎖來避免並發),當所述自己的鍊表已滿,則把內存插入到本進程的隊列中。讀指針由其它的進程操作,因此有個互斥鎖來避免並發操作產生的衝突。其它的進程操作前必須獲得隊列的互斥鎖,然後才能從隊列中獲得內存,並移動讀指針。
10.根據權利要求9所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是所述的為每個並行處理的進程配置網絡內存緩存模塊的分步驟如下: —如果本進程鍊表內有空閒的內存,則分配並返回;否則, —從本進程的環形隊列開始,依次遍歷同運行域中的所有進程的環形隊列,首先嘗試獲得該環形隊列的互斥鎖,如果能拿到互斥鎖,則把該隊列上所有的空閒內存移到本進程的鍊表中,然後分配一個內存並退出;如果隊列中沒有空閒內存或則是不能拿到互斥鎖,則嘗試下一個進程的環形隊列,直到遍歷完所有進程的環形隊列; ——如果所有的環形隊列都沒有空閒內存,則從該運行域的系統內存中獲得。
11.根據權利要求9所述的基於非一致性內存訪問系統的網絡設備設置方法,其特徵是所述的進程釋放內存的分步驟如下: ——如果本進程的鍊表長度小於設定的最大長度,則把要釋放的內存插到鍊表中;否則, —如果本進程的環形隊列還沒滿,則把空閒隊列掛上去,並修改寫指針;否則, ——把所述內存釋放到系統中。
【文檔編號】G06F15/177GK104050091SQ201210585985
【公開日】2014年9月17日 申請日期:2012年12月28日 優先權日:2012年12月28日
【發明者】劉劍波 申請人:華耀(中國)科技有限公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀