System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及通信,特别是涉及一种基于大页内存的智能网卡hmu存储方法、系统、介质、程序产品及终端。
技术介绍
1、随着云计算业务的快速增长,业务应用软件的复杂度与日俱增,智能网卡得到了广泛应用,并承担了越来越多的业务量。为满足智能网卡技术的发展需求,提高存储组件的性能成为关键。智能网卡中,host memory unit(hmu,主机内存单元)是一种用于处理数据包的内存区域。在数据包到达网卡后将被复制到主机内存单元中,随后由主机处理器执行进一步的处理。该方式不仅提升了网络性能,还减少了主机处理器的负担。为了降低成本,业界提出了将网卡存储使用hmu内存的方式,即把大量存取频率不高的内容放到主机内存中,借用主机内存作为网卡的存储空间。
2、在传统的hmu内存管理方法中,智能网卡驱动程序在初始化时会申请网卡pciedma的多个物理内存块,并通过专门的通道将相关地址信息传递给用于hmu管理的网卡core线程,使其配置到智能网卡的一级或多级hmu转换表中。当网卡进入运行状态,其他网卡业务的核心程序程在读取hmu空间时,硬件逻辑通过hmu转换表将访问的地址转换成对应的pcie地址,然后通过pcie dma通道将主机内存中的数据导入到hmu缓存中。hmu缓存中的内容可以被所有网卡业务核心线程读写,直到内容被换出。
3、现有的hmu内存管理方法具有以下技术缺陷:首先,智能网卡期望使用较大块的hmu内存,以减少内存地址存储量,并获得较大的可用空间。然而,linux系统通常将4k作为内存页的默认大小,导致智能网卡需要申请大量不
技术实现思路
1、鉴于以上所述现有技术的缺点,本申请的目的在于提供一种基于大页内存的智能网卡hmu存储方法、系统、介质、程序产品及终端,用于解决现有的hmu内存管理方法不能有效应对linux系统默认的小内存页及内存交换机制,导致内存利用效率低且对影响网卡性能的问题。
2、为实现上述目的及其他相关目的,本申请的第一方面提供一种方法基于大页内存的智能网卡hmu存储方法,所述方法应用于主机,所述主机与智能网卡通信相连,所述方法包括:对智能网卡的驱动程序进行初始化,并获取智能网卡的网卡硬件信息以及网卡内存需求配置;基于所述网卡硬件信息和所述网卡内存需求配置,判断是否可以使用大页内存作为所述智能网卡的hmu内存,并生成对应的大页支持状态;当所述大页支持状态为支持的情况下,根据所述网卡硬件信息和所述网卡内存需求配置生成大页内存需求;基于所述大页内存需求在主机内存中申请预留大页内存,并获取所预留的大页内存的内存地址;将所述内存地址转换为hmu多级转换表,并将所述hmu多级转换表发送至所述智能网卡;当所述大页支持状态为不支持的情况下,在主机内存中申请预留普通页内存,并获取所预留的普通页内存的内存地址,将所述普通页内存的内存地址发送至所述智能网卡。
3、于本申请的第一方面的一些实施例中,所述hmu多级转换表包括:内存索引表:用于存储多个第一索引信息,其中每条第一索引信息指向一个对应的一级内存块地址表;其中,所述一级内存块地址表中存储有多个大小相同的内存块地址;以及/或者存储有一个或多个第二索引信息,其中每条第二索引信息进一步指向一个对应的二级内存块地址表,所述二级内存块地址表中存储有多个大小相同的内存块地址。
4、于本申请的第一方面的一些实施例中,所述一级内存块地址表中存储的内存块地址所指向的内存块大小与所述二级内存块地址表中存储的内存块地址所指向的内存块大小不同。
5、于本申请的第一方面的一些实施例中,基于所述大页内存需求在主机内存中申请预留大页内存的过程包括:基于所述大页内存需求,调用伙伴系统在主机内存中进行大页内存的分配;若大页内存的分配的过程中无法找到足够大的内存块,令所述伙伴系统合并邻近的内存碎片以满足大页内存的需求。
6、于本申请的第一方面的一些实施例中,将所述hmu多级转换表发送至所述智能网卡的过程包括:将所述hmu多级转换表以预设方式进行打包,以生成hmu数据包;将所述hmu数据包通过pcie总线发送至智能网卡的hmu管理核心,以供所述hmu管理核心对所述hmu数据包进行解析,并对解析得到的hmu多级转换表进行存储。
7、于本申请的第一方面的一些实施例中,基于所述大页内存需求在主机内存中申请预留大页内存的过程包括:在主机内存中申请一块大页内存,并所述大页内存映射到智能网卡的虚拟地址空间;在所述大页内存中分配一块物理内存块,获取所述物理内存块对应的虚拟地址,并将所述虚拟地址发送给所述智能网卡,以令所述智能网卡基于dma机制将所述虚拟地址转化为对应的物理地址,并基于所述物理地址对所述大页内存进行访问。
8、为实现上述目的及其他相关目的,本申请的第二方面提供一种基于大页内存的智能网卡hmu存储系统,所述系统包括智能网卡和主机,所述系统的交互方式包括:所述主机对智能网卡的驱动程序进行初始化,并获取智能网卡的网卡硬件信息以及网卡内存需求配置;所述主机基于所述网卡硬件信息和所述网卡内存需求配置,判断是否可以使用大页内存作为所述智能网卡的hmu内存,并生成对应的大页支持状态;当所述大页支持状态为支持的情况下,所述主机根据所述网卡硬件信息和所述网卡内存需求配置生成大页内存需求;所述主机基于所述大页内存需求在主机内存中申请预留大页内存,并获取所预留的大页内存的内存地址;所述主机将所述内存地址转换为hmu多级转换表,并将所述hmu多级转换表发送至所述智能网卡;当所述大页支持状态为不支持的情况下,所述主机在主机内存中申请预留普通页内存,并获取所预留的普通页内存的内存地址,将所述普通页内存的内存地址发送至所述智能网卡。
9、为实现上述目的及其他相关目的,本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述基于大页内存的智能网卡hmu存储方法。
10、为实现上述目的及其他相关目的,本申请的第四方面提供一种计算机程序产品,所述计算机程序产品中包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得所述计算机实现所述基于大页内存的智能网卡hmu存储方法。
11、为实现上述目的及其他相关目的,本申请的第五方面提供一种电子终端,包括存储器、处理器及存储在存储器上的计算机程序;所述处理器执行所述计算机程序以实现所述基于大页内存的智能网卡hmu存储方法。
12、如上所述,本申请的基于大页内存的智能网卡hmu存储方法、系统、介质、程序产品及本文档来自技高网...
【技术保护点】
1.一种基于大页内存的智能网卡HMU存储方法,其特征在于,所述方法应用于主机,所述主机与智能网卡通信相连,所述方法包括:
2.根据权利要求1所述的基于大页内存的智能网卡HMU存储方法,其特征在于,所述HMU多级转换表包括:
3.根据权利要求2所述的基于大页内存的智能网卡HMU存储方法,其特征在于,所述一级内存块地址表中存储的内存块地址所指向的内存块大小与所述二级内存块地址表中存储的内存块地址所指向的内存块大小不同。
4.根据权利要求1所述的基于大页内存的智能网卡HMU存储方法,其特征在于,基于所述大页内存需求在主机内存中申请预留大页内存的过程包括:
5.根据权利要求1所述的基于大页内存的智能网卡HMU存储方法,其特征在于,将所述HMU多级转换表发送至所述智能网卡的过程包括:
6.根据权利要求1所述的基于大页内存的智能网卡HMU存储方法,其特征在于,基于所述大页内存需求在主机内存中申请预留大页内存的过程包括:
7.一种基于大页内存的智能网卡HMU存储系统,其特征在于,所述系统包括智能网卡和主机,所述系统的交互方
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述基于大页内存的智能网卡HMU存储方法。
9.一种计算机程序产品,其特征在于,所述计算机程序产品中包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得所述计算机实现如权利要求1至6中任一项所述的基于大页内存的智能网卡HMU存储方法。
10.一种电子终端,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1至6中任一项所述基于大页内存的智能网卡HMU存储方法。
...【技术特征摘要】
1.一种基于大页内存的智能网卡hmu存储方法,其特征在于,所述方法应用于主机,所述主机与智能网卡通信相连,所述方法包括:
2.根据权利要求1所述的基于大页内存的智能网卡hmu存储方法,其特征在于,所述hmu多级转换表包括:
3.根据权利要求2所述的基于大页内存的智能网卡hmu存储方法,其特征在于,所述一级内存块地址表中存储的内存块地址所指向的内存块大小与所述二级内存块地址表中存储的内存块地址所指向的内存块大小不同。
4.根据权利要求1所述的基于大页内存的智能网卡hmu存储方法,其特征在于,基于所述大页内存需求在主机内存中申请预留大页内存的过程包括:
5.根据权利要求1所述的基于大页内存的智能网卡hmu存储方法,其特征在于,将所述hmu多级转换表发送至所述智能网卡的过程包括:
6.根据权利要求1所述的基于大页内存的智能网卡...
【专利技术属性】
技术研发人员:耿文娟,卢笙,
申请(专利权)人:芯云晟杭州电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。