一种基于大页面万兆网卡的收包及其系统技术方案

技术编号:8323285 阅读:228 留言:0更新日期:2013-02-14 00:22
本发明专利技术涉及一种基于大页面万兆网卡的收包方法及其系统,包括下述步骤:A.创建字符设备;B.定义至少一个队列的数据结构;C.每个队列对应一个CPU内核,在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;D.定义字符设备的mmap函数并定义映射策略;E.调用nopage函数;F.在CPU内核上进行内存分配;G.将每个页面划分为至少一个2KB的缓冲区单元。本发明专利技术利用Hugetlb机制,在系统默认页面大小为4KB不变的情况下,支持大页面,从而大大减少了CPU访问缓冲区时的TLB表项,提高了命中率,从而提升访问存储的性能。

【技术实现步骤摘要】

本专利技术涉及网络传输与处理领域,具体涉及一种基于大页面万兆网卡的收包及其系统
技术介绍
目前的网络数据包发包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,在高速流量下有很高的性能损失,零拷贝技术就是通过内存映射的方式,将应用程序缓冲区直接映射给网卡驱动使用,从而减少这一次不必要的拷贝操作,提高了性能。传统的零拷贝技术的内存分配都是基于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命中率,提高访存性能。最后应当说明的是以上实施例仅用以说明本专利技术的技术方案而非对其限制,尽管参照上述实施例对本专利技术进行了详细的说明,所属领域的普通技术人员应当理解依然可以对本专利技术的具体实施方式进行修改或者等同替换,而未脱离本专利技术精神和范围的任何修改或者等同替换,其均应涵盖在本专利技术的权利要求范围当中。本文档来自技高网...

【技术保护点】
一种基于大页面万兆网卡的收包方法,其特征在于,所述方法包括下述步骤:A、创建字符设备;B、定义至少一个队列的数据结构;C、每个队列对应一个CPU内核,在每个CPU内核对应的物理内存区域中分配内存,并对应到应用程序的地址空间中;D、定义字符设备的mmap函数并定义映射策略;E、调用nopage函数;F、在CPU内核上进行内存分配;G、将每个页面划分为至少一个2KB的缓冲区单元。

【技术特征摘要】
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所述的基...

【专利技术属性】
技术研发人员:万伟
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1