【技术实现步骤摘要】
本专利技术涉及网络传输与处理领域,具体涉及一种基于大页面万兆网卡的收包及其系统。
技术介绍
目前的网络数据包发包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,在高速流量下有很高的性能损失,零拷贝技术就是通过内存映射的方式,将应用程序缓冲区直接映射给网卡驱动使用,从而减少这一次不必要的拷贝操作,提高了性能。传统的零拷贝技术的内存分配都是基于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中,所述字符设备的名称用d ...
【技术保护点】
一种基于大页面万兆网卡的收包方法,其特征在于,所述方法包括下述步骤: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所述的基...
【专利技术属性】
技术研发人员:万伟,
申请(专利权)人:曙光信息产业北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。