Numa平臺的內存緩存方法及系統的制作方法
【專利摘要】本發明公開了一種NUMA平臺的內存緩存方法,所述方法包括:通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區中運行一個對網卡進行監聽的派發者線程;將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程;通過所述工作者線程將緩存對象通過與緩存對象處于同一分區的網卡發出。本發明還公開了一種NUMA平臺的內存緩存系統,能夠最大限度減少遠端IO訪問,并且在線程之間進行相應的負載均衡,提高內存緩存系統的吞吐量和降低系統延遲。
【專利說明】
NUMA平臺的內存緩存方法及系統
技術領域
[0001]本發明涉及互聯網技術領域,尤其涉及一種NUMA平臺的內存緩存方法及系統。
【背景技術】
[0002]在非一致性內存訪問(NUMA,NonUniform Memory Access Architecture)平臺上,不僅僅存在訪存的不對稱性,而且在輸入輸出(10)訪問方面也具有不對稱性。10訪問不對稱性對內存緩存系統的性能有重要的影響。內存緩存系統利用內存來存儲訪問代價昂貴的數據,在需要的時候直接返回暫存的數據,能夠作為中間層加速系統的整體性能。目前并沒有一種針對NUMA平臺特點而設計的內存緩存系統。
[0003]對于包含8個節點、2個分區的雙網卡NUMA平臺,節點0-3屬于分區I,節點4-7屬于分區2。由于NUMA平臺的特點,當工作者線程和其處理的數據緩存在不同分區中時,例如工作者線程運行在節點7(分區2)而對象緩存在節點0(分區I),由于分區間的數據傳輸開銷比較大,造成網絡數據傳輸速度比較慢。
[0004]因此,針對NUMA平臺上的非對稱1訪問問題,需要一種能夠適應NUMA特點的、多網卡情況下的內存緩存方案。
【發明內容】
[0005]為解決現有存在的技術問題,本發明實例提供一種NUMA平臺的內存緩存方法及系統。
[0006]為達到上述目的,本發明實施的技術方案是這樣實現的:
[0007]—種NUMA平臺的內存緩存方法,所述方法包括:
[0008]通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區中運行一個所述派發者線程,所述分區是網卡與其臨近的NUMA節點構成的區域;
[0009]將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程;
[0010]通過所述工作者線程將緩存對象通過與所述緩存對象所在同一分區的網卡發出。[0011 ]其中,通過派發者線程接收來自網卡的任務請求之前,所述方法還包括:建立所述派發者線程及其下屬的所述工作者線程,所述派發者線程與所述NUMA平臺的分區一一對應,一個所述派發者線程下屬有至少一個所述工作者線程。
[0012]其中,所述方法還包括:檢測到有派發者線程空閑時,則從檢測為繁忙的派發者線程或者工作者線程拉取任務到所述空閑的派發者線程或者工作者線程。
[0013]其中,所述方法還包括:實時監測每個所述派發者線程任務隊列的任務數;在所述任務數低于預設的低水印時,則認為所述派發者線程為空閑;在所述任務數高于預設的高水印時,則認為所述派發者線程為繁忙。
[0014]其中,所述NUMA平臺包括兩個或兩個以上的網卡。
[0015]其中,所述將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,包括:所述派發者線程根據任務請求的數據包含的所屬分區位置信息,優先選擇與數據所在位置處于同一分區的工作者線程進行處理。
[0016]一種NUMA平臺的內存緩存系統,所述系統包括:
[0017]接收模塊,用于通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區上運行一個所述派發者線程,所述分區是網卡與其臨近的NUMA節點構成的區域;
[0018]處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行與數據相關處理,所述工作者線程為所述派發者線程下屬的線程;
[0019]發送模塊,用于通過所述工作者線程將緩存對象通過與所述緩存對象所在同一分區的網卡發出。
[0020]其中,所述系統還包括:建立模塊,用于建立所述派發者線程及其下屬的工作者線程,所述派發者線程與所述NUMA平臺的分區一一對應,一個所述派發者線程下屬有至少一個所述工作者線程。
[0021]其中,所述系統還包括:負載均衡模塊,用于檢測到有派發者線程空閑時,則從檢測為繁忙的派發者線程或者工作者線程拉取任務到所述空閑的派發者線程或者工作者線程。
[0022]其中,所述負載均衡模塊還用于實時監測每個所述派發者線程任務隊列的任務數;在所述任務數低于預設的低水位時,則認為所述派發者線程為空閑;在所述任務數高于預設的高水位時,則認為所述派發者線程為繁忙。
[0023]其中,所述NUMA平臺包括兩個或兩個以上的網卡。
[0024]其中,所述處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,包括:所述派發者線程根據任務請求的數據包含的所屬分區位置信息,優先選擇與數據所在位置處于同一分區的工作者線程進行處理。
[0025]本發明實例針對NUMA平臺上的非對稱1訪問問題,通過對應不同網卡的派發者線程及其下屬的工作線程,充分利用NUMA平臺的特點,首次提出一種在NUMA平臺下的內存緩存方法及系統,本發明實例能夠最大限度減少遠端1訪問,并且在線程之間進行相應的負載均衡,提高內存緩存系統的吞吐量和降低系統延遲。
【附圖說明】
[0026]在附圖(其不一定是按比例繪制的)中,相似的附圖標記可在不同的視圖中描述相似的部件。具有不同字母后綴的相似附圖標記可表示相似部件的不同示例。附圖以示例而非限制的方式大體示出了本文中所討論的各個實施例。
[0027]圖1為本發明實施例基于NUMA平臺的內存緩存方法的流程示意圖;
[0028]圖2為本發明實例雙網卡情況下內存緩存系統的架構示意圖;
[0029]圖3為本發明實施例基于NUMA平臺的內存緩存系統的組成結構示意圖;
[0030]圖4為雙網卡NUMA平臺的架構示意圖。
【具體實施方式】
[0031 ]本發明實施例的主要思想是:根據NUMA平臺下1訪問的非對稱性,充分利用NUMA平臺的特點,減少內存緩存系統中線程的非對稱訪問,提出一種在NUMA平臺下的內存緩存方法及系統,以最大限度減少遠端1訪問,并且本發明實施例的內存緩存方法及系統任務處理時在線程之間還進行相應的負載均衡,以提高系統吞吐量并降低系統延遲。
[0032]如圖1所示,本發明實例還提供了一種基于NUMA平臺的內存緩存方法,在NUMA平臺機構的基礎上實現,主要可以包括如下步驟:
[0033]步驟101:通過派發者線程(Dispatcher)接收來自網卡(NIC,Network InterfaceCard)的任務請求,NUMA平臺中每個分區上運行一個所述派發者線程;
[0034]這里,所述NUMA平臺包括含有至少兩個或兩個以上網卡的NUMA平臺。派發者線程接收同一分區的網卡的任務請求。派發者線程在每個分區中運行的。所謂分區就是網卡與其臨近的NUMA節點所構成的區域。在圖4中所示的互聯模塊連接的兩部分,這兩部分分別運行一個派發者線程監聽。分區中可以有一個或者多個NUMA節點。所述分區是網卡與其臨近的NUMA節點構成的區域。步驟102:將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程(Worker),通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程;
[0035]這里,通過派發者線程接收任務請求后,將所述任務請求(Request)加入到所述派發者線程的任務隊列中,之后,通過派發者線程將所述任務隊列中的任務請求派發給下屬的工作者線程。所述派發者線程下屬有至少一個工作者線程,一般來說,一個派發者線程下屬有多個工作者線程。例如,在如圖2所示的雙網卡實例中,每個分區中運行一個所述派發者線程,每個所述派發者線程下屬有四個工作者線程。
[0036]其中,不同派發者線程之間能夠相互通信。當派發者線程任務繁忙時,空閑的派發者線程可以主動從該派發者線程拉取任務進行處理。派發者線程有各自的任務隊列;當任務隊列中的任務數低于預設的某個低數值(低水印),即此派發者線程比較空閑,查看另外一個派發者線程的隊列的任務數是否高于預設的某個高數值(高水印),如果高了,即此派發者線程比較繁忙,比較空閑的派發者線程就從該比較繁忙的任務隊列中拉取任務過來處理。
[0037]步驟103:通過所述工作者線程將緩存對象通過與所述緩存對象處于同處一個分區的網卡發出。
[0038]這里,在步驟101之前,所述方法還包括:建立所述派發者線程及其下屬的工作者線程,所述派發者線程與NUMA平臺的分區一一對應。
[0039]被請求的數據中含有所屬分區位置信息,派發者線程根據數據中的位置信息,優先選擇數據所在分區的工作者線程進行處理;當派發者線程繁忙的時候進行負載均衡。
[0040]如圖3所示,本發明實例還提供了一種基于NUMA平臺的內存緩存系統,所述系統可以包括:接收模塊,用于通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區上運行一個所述派發者線程;處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程;發出模塊,用于通過所述工作者線程將緩存對象通過與所述緩存對象所在分區的網卡發出。這里,所述NUMA平臺包括含有兩個或兩個以上網卡的NUMA平臺。
[0041]其中,所述系統還包括:建立模塊,用于建立所述派發者線程及其下屬的工作者線程,所述派發者線程與所述NUMA平臺的分區一一對應,一個所述派發者線程下屬有至少一個所述工作者線程。
[0042]其中,所述系統還包括:負載均衡模塊,用于在檢測到有派發者線程的任務隊列為空時,則從其他的派發者線程拉取任務到任務隊列為空的派發者線程中。這里,所述負載均衡模塊還用于實時監測每個所述派發者線程的任務隊列。
[0043]這里,所述處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,包括:所述派發者線程根據任務請求的數據包含的所屬分區位置信息,優先選擇與數據所在位置處于同一分區的工作者線程進行處理。
[0044]下面以雙網卡的NUMA平臺的情況為例,對本發明實施例的具體實現過程進行詳細說明。
[0045]如圖4所示,為雙網卡情況下的NUMA平臺架構示意圖。其中,QPI表示QuickPathInterconnect,HT表示HyperTransport,兩者都是芯片間的互聯方式。芯片間的連接方式不限于QPI和HT,也可以是其他方式。
[0046]對于如圖4所示的雙網卡NUMA平臺,如圖2所示,其內存緩存方法具體實現過程如下:
[0047]A:針對每個分區運行一個派發者線程,如圖2所示,兩個派發者線程分別接收來自對應分區的網卡的任務請求。
[0048]B:每個派發者線程通過任務隊列將任務請求派發給下屬的工作者線程,工作者線程從任務隊列中取出任務,分析任務內容,進行相應的處理工作。
[0049]C:工作者線程在任務請求處理完畢后,將相應緩存對象從與緩存對象所在同一分區的網卡發送出去。
[0050]D:負載均衡:兩個任務派發者線程之間可以相互通信;當其中一個派發者線程比較繁忙的時候,另外一個空閑的派發者線程或者工作者線程可以主動拉取任務進行處理。
[0051]本發明實施例的內存緩存系統及方法在網站加速方面具有重要應用:將本發明實施例的內存緩存系統置于網站前端應用程序和后端數據庫之間,用于緩存數據庫的訪問結果,減少數據庫訪問次數和訪問延遲。例如,Facebook、YouTube、Wikipedia、Yahoo等等都在使用分布式緩存(Memcached)來支持其每天數億級的頁面訪問。本發明實施例的內存緩存系統也可以作為Hadoop、MapReduce甚至虛擬機的加速系統。
[0052]以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
【主權項】
1.一種非一致性內存訪問NUMA平臺的內存緩存方法,其特征在于,所述方法包括: 通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區中運行一個所述派發者線程,所述分區是網卡與其臨近的NUMA節點構成的區域; 將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程; 通過所述工作者線程將緩存對象通過與所述緩存對象處于同處一個分區的網卡發出。2.根據權利要求1所述的方法,其特征在于,通過派發者線程接收來自網卡的任務請求之前,所述方法還包括:建立所述派發者線程及其下屬的所述工作者線程,所述派發者線程與所述NUMA平臺的分區一一對應,一個所述派發者線程下屬有至少一個所述工作者線程。3.根據權利要求1所述的方法,其特征在于,所述方法還包括: 檢測到有派發者線程空閑時,則進行負載均衡操作。4.根據權利要求3所述的方法,其特征在于,所述方法還包括:實時監測每個所述派發者線程任務隊列的任務數;在所述任務數低于預設的低水位時,則認為所述派發者線程為空閑;在所述任務數高于預設的高水位時,則認為所述派發者線程為繁忙。5.根據權利要求1所述的方法,其特征在于,所述NUMA平臺包括兩個或兩個以上分屬于不同分區的網卡。6.根據權利要求1所述的方法,其特征在于,所述將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,包括: 所述派發者線程根據任務請求的緩存數據包含的所屬分區位置信息,優先選擇與數據所在位置處于同一分區的工作者線程進行處理。7.—種非一致性內存訪問NUMA平臺的內存緩存系統,其特征在于,所述系統包括: 接收模塊,用于通過派發者線程接收來自網卡的任務請求,NUMA平臺中每個分區上運行一個所述派發者線程,所述分區是網卡與其臨近的NUMA節點構成的區域; 處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,通過所述工作者線程從所述任務隊列中取出所述任務請求并進行處理,所述工作者線程為所述派發者線程下屬的線程; 發出模塊,用于通過所述工作者線程將緩存對象通過與所述緩存對象所在同一分區的網卡發出。8.根據權利要求7所述的系統,其特征在于,所述系統還包括:建立模塊,用于建立所述派發者線程及其下屬的工作者線程,所述派發者線程與所述NUMA平臺的分區一一對應,一個所述派發者線程下屬有至少一個所述工作者線程。9.根據權利要求7所述的系統,其特征在于,所述系統還包括:負載均衡模塊,用于檢測到有派發者線程空閑時,則從檢測為繁忙的派發者線程或者工作者線程拉取任務到所述空閑的派發者線程或者工作者線程。10.根據權利要求9所述的系統,其特征在于,所述負載均衡模塊還用于實時監測每個所述派發者線程任務隊列的任務數;在所述任務數低于預設的低水印時,則認為所述派發者線程為空閑;在所述任務數高于預設的高水印時,則認為所述派發者線程為繁忙。11.根據權利要求7所述的系統,其特征在于,所述NUMA平臺包括兩個或兩個以上的網卡。12.根據權利要求6所述的系統,其特征在于,所述處理模塊,用于將所述派發者線程的任務隊列中的所述任務請求派發給工作者線程,包括:所述派發者線程根據任務請求的數據包含的所屬分區位置信息,優先選擇與數據所在位置處于同一分區的工作者線程進行處理。
【文檔編號】G06F9/50GK106020974SQ201610308324
【公開日】2016年10月12日
【申請日】2016年5月11日
【發明人】羅秋明, 王梅, 張義軍, 劉杰
【申請人】深圳大學