一種基於大頁面萬兆網卡的收包及其系統的製作方法
2023-04-29 22:07:26
專利名稱:一種基於大頁面萬兆網卡的收包及其系統的製作方法
技術領域:
本發明涉及網絡傳輸與處理領域,具體涉及一種基於大頁面萬兆網卡的收包及其系統。
背景技術:
目前的網絡數據包發包過程中,應用程式需要以拷貝的方式與內核中的網卡報文緩衝區進行交互,在高速流量下有很高的性能損失,零拷貝技術就是通過內存映射的方式,將應用程式緩衝區直接映射給網卡驅動使用,從而減少這一次不必要的拷貝操作,提高了性能。傳統的零拷貝技術的內存分配都是基於4KB大小的頁面。這是由作業系統的配置決定的。CPU每次訪問收包緩衝區時,都會先從TLB緩衝區查找頁面的地址。而基於4KB的頁面,每個頁面最多只能存放2個數據包緩衝區(每個數據包緩衝區大小必須大於MTU,即1518位元組)。這樣,TLB中的表項就會非常多。
發明內容
針對現有技術的不足,本發明一種基於大頁面萬兆網卡的收包及其系統,本發明利用Hugetlb機制,在系統默認頁面大小為4KB不變的情況下,支持大頁面,從而大大減少了 CPU訪問緩衝區時的TLB表項,提高了命中率,從而提升訪問存儲的性能。本發明的目的是採用下述技術方案實現的一種基於大頁面萬兆網卡的收包方法,其改進之處在於,所述方法包括下述步驟A、創建字符設備;B、定義至少一個隊列的數據結構;C、每個隊列對應一個CPU內核,在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中;D、定義字符設備的mmap函數並定義映射策略;E、調用 nopage 函數;F、在CPU內核上進行內存分配;G、將每個頁面劃分為至少一個2KB的緩衝區單元。其中,所述大頁面指的是超過4KB的頁面分配。其中,所述步驟A中,所述字符設備的名稱用dash表示。其中,所述步驟C中,每個隊列對應一個CPU內核,在每個CPU內核對應的物理內存區域中分配不連續的內存,並以連續的方式將數據緩衝區對應到應用程式的地址空間中。其中,所述步驟D中,採用所述mmap函數中的參數:MAP_HUGETLB。其中,所述步驟E中,在CPU內核中分配內存頁面時,採用大頁面函數alloc_huge_page_node O ,每個大頁面的大小為2MB。其中,所述步驟F中,根據映射到應用程式的地址空間位置,計算出對應的CPU內核號,並從該CPU內核上進行內存分配。其中,所述步驟G中,所述數據緩衝區單元用於接收數據。本發明基於另一目的提供的一種基於大頁面萬兆網卡的收包系統,其改進之處在於,所述系統包括創建字符設備模塊用於創建字符設備dash ;分配模塊在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中;定義函數模塊定義字符設備的mmap函數;調用模塊用於調用nopage函數。與現有技術比,本發明達到的有益效果是本發明利用大頁面Hugetlb機制,在系統默認頁面大小為4KB不變的情況下,支持大頁面(可以支持到2MB),從而大大減少了 CPU訪問緩衝區時的TLB表項,提高了命中率,從而提升訪問存儲的性能。
圖I是本發明提供的基於大頁面萬兆網卡的收包方法流程圖。
具體實施例方式下面結合附圖對本發明的具體實施方式
作進一步的詳細說明。本發明的利用Hugetlb機制,在系統默認頁面大小為4KB不變的情況下,支持大頁面,從而大大減少了 CPU訪問緩衝區時的TLB表項,提高了命中率,從而提升訪問存儲的性倉泛。Hugetlb機制超過4kB大小的頁面分配被稱為大頁面,通過可以減少CPU中tlb表項的數目,加快尋址過程。零拷貝通過用戶空間與內核空間的映射,減少網卡接收數據時從驅動到用戶程序之間一次拷貝操作,提升性能。Tlb表Translation lookaside buffer,即旁路轉換緩衝,或稱為頁表緩衝。本發明提供的基於大頁面萬兆網卡的收包方法流程如圖I所示,包括下述步驟(I)首先創建名為dash的字符設備(char device),然後定義出多隊列的數據結構,每個隊列對應一個CPU核,並在每個CPU核對應的物理內存區域中分配不連續的內存,並以連續的方式將數據緩衝區對應到應用程式的地址空間中。(2)為方便應用程式的使用,數據緩衝區需要分配到連續的地址空間上,因此,定義字符設備的mmap函數以定義映射策略,mmap方法中採用參數MAP_HUGETLB。(3)真實內存頁面的分配在nopage函數中實現,在內核分配內存頁面時,採用大頁面函數alloc_huge_page_node O,每個頁面大小為2MB。(4)根據映射到的地址空間的位置,計算出對應的CPU號,並從該CPU上進行內存分配,從而利用NUMA特性提高了內存訪問的效率。
(5)將每個頁面進行緩衝區劃分,劃分為若干個2KB的緩衝區單元,供數據接收時使用。一種基於大頁面萬兆網卡的收包系統,該系統包括創建字符設備模塊用於創建字符設備dash ;分配模塊在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中;定義函數模塊定義字符設備的mmap函數;調用模塊用於調用nopage函數。本發明提供的基於大頁面萬兆網卡的收包方法,利用HugeTLB技術增大緩衝區的訪問頁面大小,從而減少CPU訪存所需的TLB表項,提高TLB命中率,提高訪存性能。最後應當說明的是以上實施例僅用以說明本發明的技術方案而非對其限制,儘管參照上述實施例對本發明進行了詳細的說明,所屬領域的普通技術人員應當理解依然可以對本發明的具體實施方式
進行修改或者等同替換,而未脫離本發明精神和範圍的任何修改或者等同替換,其均應涵蓋在本發明的權利要求範圍當中。
權利要求
1.一種基於大頁面萬兆網卡的收包方法,其特徵在於,所述方法包括下述步驟 A、創建字符設備; B、定義至少一個隊列的數據結構; C、每個隊列對應一個CPU內核,在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中; D、定義字符設備的mmap函數並定義映射策略; E、調用nopage函數; F、在CPU內核上進行內存分配; G、將每個頁面劃分為至少一個2KB的緩衝區單元。
2.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述大頁面指的是超過4KB的頁面分配。
3.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟A中,所述字符設備的名稱用dash表示。
4.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟C中,每個隊列對應一個CPU內核,在每個CPU內核對應的物理內存區域中分配不連續的內存,並以連續的方式將數據緩衝區對應到應用程式的地址空間中。
5.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟D中,採用所述—ap函數中的參數:MAP_HUGETLB。
6.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟E中,在CPU內核中分配內存頁面時,採用大頁面函數alloc_huge_page_node O ,每個大頁面的大小為2MB。
7.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟F中,根據映射到應用程式的地址空間位置,計算出對應的CPU內核號,並從該CPU內核上進行內存分配。
8.如權利要求I所述的基於大頁面萬兆網卡的收包方法,其特徵在於,所述步驟G中,所述數據緩衝區單元用於接收數據。
9.一種基於大頁面萬兆網卡的收包系統,其特徵在於,所述系統包括 創建字符設備模塊用於創建字符設備dash ; 分配模塊在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中; 定義函數模塊定義字符設備的mmap函數; 調用模塊用於調用nopage函數。
全文摘要
本發明涉及一種基於大頁面萬兆網卡的收包方法及其系統,包括下述步驟A.創建字符設備;B.定義至少一個隊列的數據結構;C.每個隊列對應一個CPU內核,在每個CPU內核對應的物理內存區域中分配內存,並對應到應用程式的地址空間中;D.定義字符設備的mmap函數並定義映射策略;E.調用nopage函數;F.在CPU內核上進行內存分配;G.將每個頁面劃分為至少一個2KB的緩衝區單元。本發明利用Hugetlb機制,在系統默認頁面大小為4KB不變的情況下,支持大頁面,從而大大減少了CPU訪問緩衝區時的TLB表項,提高了命中率,從而提升訪問存儲的性能。
文檔編號G06F9/50GK102929722SQ20121039729
公開日2013年2月13日 申請日期2012年10月18日 優先權日2012年10月18日
發明者萬偉 申請人:曙光信息產業(北京)有限公司