CN102929722A - 一种基于大页面万兆网卡的收包及其系统 - Google Patents
一种基于大页面万兆网卡的收包及其系统 Download PDFInfo
- Publication number
- CN102929722A CN102929722A CN2012103972932A CN201210397293A CN102929722A CN 102929722 A CN102929722 A CN 102929722A CN 2012103972932 A CN2012103972932 A CN 2012103972932A CN 201210397293 A CN201210397293 A CN 201210397293A CN 102929722 A CN102929722 A CN 102929722A
- Authority
- CN
- China
- Prior art keywords
- page
- large page
- packet receiving
- cpu core
- method based
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于大页面万兆网卡的收包方法及其系统,包括下述步骤:A.创建字符设备;B.定义至少一个队列的数据结构;C.每个队列对应一个CPU内核,在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;D.定义字符设备的mmap函数并定义映射策略;E.调用nopage函数;F.在CPU内核上进行内存分配;G.将每个页面划分为至少一个2KB的缓冲区单元。本发明利用Hugetlb机制,在系统默认页面大小为4KB不变的情况下,支持大页面,从而大大减少了CPU访问缓冲区时的TLB表项,提高了命中率,从而提升访问存储的性能。
Description
技术领域
本发明涉及网络传输与处理领域,具体涉及一种基于大页面万兆网卡的收包及其系统。
背景技术
目前的网络数据包发包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,在高速流量下有很高的性能损失,零拷贝技术就是通过内存映射的方式,将应用程序缓冲区直接映射给网卡驱动使用,从而减少这一次不必要的拷贝操作,提高了性能。
传统的零拷贝技术的内存分配都是基于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(),每个大页面的大小为2MB。
其中,所述步骤F中,根据映射到应用程序的地址空间位置,计算出对应的CPU内核号,并从该CPU内核上进行内存分配。
其中,所述步骤G中,所述数据缓冲区单元用于接收数据。
本发明基于另一目的提供的一种基于大页面万兆网卡的收包系统,其改进之处在于,所述系统包括:
创建字符设备模块:用于创建字符设备dash;
分配模块:在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;
定义函数模块:定义字符设备的mmap函数;
调用模块:用于调用nopage函数。
与现有技术比,本发明达到的有益效果是:
本发明利用大页面Hugetlb机制,在系统默认页面大小为4KB不变的情况下,支持大页面(可以支持到2MB),从而大大减少了CPU访问缓冲区时的TLB表项,提高了命中率,从而提升访问存储的性能。
附图说明
图1是本发明提供的基于大页面万兆网卡的收包方法流程图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
本发明的利用Hugetlb机制,在系统默认页面大小为4KB不变的情况下,支持大页面,从而大大减少了CPU访问缓冲区时的TLB表项,提高了命中率,从而提升访问存储的性能。
Hugetlb机制:超过4kB大小的页面分配被称为大页面,通过可以减少CPU中tlb表项的数目,加快寻址过程。
零拷贝:通过用户空间与内核空间的映射,减少网卡接收数据时从驱动到用户程序之间一次拷贝操作,提升性能。
Tlb表:Translation lookaside buffer,即旁路转换缓冲,或称为页表缓冲。
本发明提供的基于大页面万兆网卡的收包方法流程如图1所示,包括下述步骤:
(1)首先创建名为dash的字符设备(char device),然后定义出多队列的数据结构,每个队列对应一个CPU核,并在每个CPU核对应的物理内存区域中分配不连续的内存,并以连续的方式将数据缓冲区对应到应用程序的地址空间中。
(2)为方便应用程序的使用,数据缓冲区需要分配到连续的地址空间上,因此,定义字符设备的mmap函数以定义映射策略,mmap方法中采用参数:MAP_HUGETLB。
(3)真实内存页面的分配在nopage函数中实现,在内核分配内存页面时,采用大页面函数alloc_huge_page_node(),每个页面大小为2MB。
(4)根据映射到的地址空间的位置,计算出对应的CPU号,并从该CPU上进行内存分配,从而利用NUMA特性提高了内存访问的效率。
(5)将每个页面进行缓冲区划分,划分为若干个2KB的缓冲区单元,供数据接收时使用。
一种基于大页面万兆网卡的收包系统,该系统包括:
创建字符设备模块:用于创建字符设备dash;
分配模块:在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;
定义函数模块:定义字符设备的mmap函数;
调用模块:用于调用nopage函数。
本发明提供的基于大页面万兆网卡的收包方法,利用HugeTLB技术增大缓冲区的访问页面大小,从而减少CPU访存所需的TLB表项,提高TLB命中率,提高访存性能。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。
Claims (9)
1.一种基于大页面万兆网卡的收包方法,其特征在于,所述方法包括下述步骤:
A、创建字符设备;
B、定义至少一个队列的数据结构;
C、每个队列对应一个CPU内核,在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;
D、定义字符设备的mmap函数并定义映射策略;
E、调用nopage函数;
F、在CPU内核上进行内存分配;
G、将每个页面划分为至少一个2KB的缓冲区单元。
2.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述大页面指的是超过4KB的页面分配。
3.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤A中,所述字符设备的名称用dash表示。
4.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤C中,每个队列对应一个CPU内核,在每个CPU内核对应的物理内存区域中分配不连续的内存,并以连续的方式将数据缓冲区对应到应用程序的地址空间中。
5.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤D中,采用所述mmap函数中的参数:MAP_HUGETLB。
6.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤E中,在CPU内核中分配内存页面时,采用大页面函数alloc_huge_page_node(),每个大页面的大小为2MB。
7.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤F中,根据映射到应用程序的地址空间位置,计算出对应的CPU内核号,并从该CPU内核上进行内存分配。
8.如权利要求1所述的基于大页面万兆网卡的收包方法,其特征在于,所述步骤G中,所述数据缓冲区单元用于接收数据。
9.一种基于大页面万兆网卡的收包系统,其特征在于,所述系统包括:
创建字符设备模块:用于创建字符设备dash;
分配模块:在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;
定义函数模块:定义字符设备的mmap函数;
调用模块:用于调用nopage函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103972932A CN102929722A (zh) | 2012-10-18 | 2012-10-18 | 一种基于大页面万兆网卡的收包及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103972932A CN102929722A (zh) | 2012-10-18 | 2012-10-18 | 一种基于大页面万兆网卡的收包及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102929722A true CN102929722A (zh) | 2013-02-13 |
Family
ID=47644529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103972932A Pending CN102929722A (zh) | 2012-10-18 | 2012-10-18 | 一种基于大页面万兆网卡的收包及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929722A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365797A (zh) * | 2013-07-05 | 2013-10-23 | 华为技术有限公司 | 物理内存页分配方法和计算机系统 |
CN111031149A (zh) * | 2019-12-19 | 2020-04-17 | 北京浪潮数据技术有限公司 | 一种服务器管理方法、系统、设备及计算机可读存储介质 |
CN111884945A (zh) * | 2020-06-10 | 2020-11-03 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150487A (zh) * | 2007-11-15 | 2008-03-26 | 曙光信息产业(北京)有限公司 | 一种零拷贝网络报文发送方法 |
CN101616194A (zh) * | 2009-07-23 | 2009-12-30 | 中国科学技术大学 | 主机网络性能优化系统及方法 |
US20100106935A1 (en) * | 2004-08-18 | 2010-04-29 | International Business Machines Corporation | Pretranslating Input/Output Buffers In Environments With Multiple Page Sizes |
CN102184142A (zh) * | 2011-04-19 | 2011-09-14 | 中兴通讯股份有限公司 | 一种利用巨页映射降低cpu资源消耗的方法和装置 |
CN102339302A (zh) * | 2011-07-07 | 2012-02-01 | 曙光信息产业股份有限公司 | 一种基于hugetlbfs技术的龙芯刀片文件系统的实现方法 |
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
-
2012
- 2012-10-18 CN CN2012103972932A patent/CN102929722A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100106935A1 (en) * | 2004-08-18 | 2010-04-29 | International Business Machines Corporation | Pretranslating Input/Output Buffers In Environments With Multiple Page Sizes |
CN101150487A (zh) * | 2007-11-15 | 2008-03-26 | 曙光信息产业(北京)有限公司 | 一种零拷贝网络报文发送方法 |
CN101616194A (zh) * | 2009-07-23 | 2009-12-30 | 中国科学技术大学 | 主机网络性能优化系统及方法 |
CN102184142A (zh) * | 2011-04-19 | 2011-09-14 | 中兴通讯股份有限公司 | 一种利用巨页映射降低cpu资源消耗的方法和装置 |
CN102339302A (zh) * | 2011-07-07 | 2012-02-01 | 曙光信息产业股份有限公司 | 一种基于hugetlbfs技术的龙芯刀片文件系统的实现方法 |
CN102402487A (zh) * | 2011-11-15 | 2012-04-04 | 北京天融信科技有限公司 | 一种零拷贝接收报文的方法和系统 |
Non-Patent Citations (1)
Title |
---|
陈鸣春等: ""一个基于IA-64体系的内存管理大页面的实现模型"", 《计算机科学》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365797A (zh) * | 2013-07-05 | 2013-10-23 | 华为技术有限公司 | 物理内存页分配方法和计算机系统 |
CN103365797B (zh) * | 2013-07-05 | 2017-05-31 | 华为技术有限公司 | 物理内存页分配方法和计算机系统 |
CN111031149A (zh) * | 2019-12-19 | 2020-04-17 | 北京浪潮数据技术有限公司 | 一种服务器管理方法、系统、设备及计算机可读存储介质 |
CN111884945A (zh) * | 2020-06-10 | 2020-11-03 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
CN111884945B (zh) * | 2020-06-10 | 2022-09-02 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
CN104133780B (zh) | 一种跨页预取方法、装置及系统 | |
WO2015066489A2 (en) | Efficient implementations for mapreduce systems | |
CN101901248A (zh) | 一种布隆过滤器的生成、更新以及查询元素方法和装置 | |
CN103678172A (zh) | 一种本地数据缓存管理方法及装置 | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
CN100342353C (zh) | 嵌入式操作系统中进程映射实现方法 | |
CN104216838A (zh) | 双缓存数据处理方法及系统 | |
CN108984130A (zh) | 一种分布式存储的缓存读取方法及其装置 | |
CN101673271A (zh) | 分布式文件系统及其文件分片方法 | |
CN102929722A (zh) | 一种基于大页面万兆网卡的收包及其系统 | |
WO2021061446A1 (en) | Storage management apparatus, storage management method, processor, and computer system | |
CN203313219U (zh) | 一种局域网缓存加速系统 | |
CN102968395A (zh) | 用于微处理器的内存拷贝加速方法及装置 | |
CN111694765A (zh) | 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法 | |
CN104899159B (zh) | 高速缓冲存储器Cache地址的映射处理方法和装置 | |
CN103077198B (zh) | 一种操作系统及其文件缓存定位方法 | |
CN105988941A (zh) | 缓存数据处理方法和装置 | |
CN104252423B (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN103905539A (zh) | 内容中心网络中基于内容受欢迎度的最优缓存放置方法 | |
CN106126434A (zh) | 中央处理器的缓存区的缓存行的替换方法及其装置 | |
CN103207843A (zh) | 一种数据行宽度可动态配置的cache结构设计方法 | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
CN104850508B (zh) | 基于数据局部性的访存方法 | |
Fang et al. | Miss-aware LLC buffer management strategy based on heterogeneous multi-core |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130213 |