CN109857553B - 内存管理方法及装置 - Google Patents

内存管理方法及装置 Download PDF

Info

Publication number
CN109857553B
CN109857553B CN201910027146.8A CN201910027146A CN109857553B CN 109857553 B CN109857553 B CN 109857553B CN 201910027146 A CN201910027146 A CN 201910027146A CN 109857553 B CN109857553 B CN 109857553B
Authority
CN
China
Prior art keywords
memory
server
address
network card
space
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.)
Active
Application number
CN201910027146.8A
Other languages
English (en)
Other versions
CN109857553A (zh
Inventor
李荣振
陈帅
徐聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN201910027146.8A priority Critical patent/CN109857553B/zh
Publication of CN109857553A publication Critical patent/CN109857553A/zh
Application granted granted Critical
Publication of CN109857553B publication Critical patent/CN109857553B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例公开了一种内存管理方法及装置,用于构建网卡和服务器的统一内存模型,提高了网络服务的效率,本申请实施例方法包括:服务器获取第一内存地址,第一内存地址为网卡的网卡内存空间的访问地址,网卡与服务器相连接;服务器将第一内存地址进行地址偏移,得到第二内存地址,第二内存地址与第三内存地址的编址方式相同,第三内存地址为服务器的服务器内存空间的访问地址;服务器构建统一内存模型,统一内存模型包括网卡内存空间和服务器内存空间,网卡内存空间在统一内存模型中的访问地址为第二内存地址,服务器内存空间在统一内存模型中的访问地址为第三内存地址,统一内存模型用于为网络应用分配内存。

Description

内存管理方法及装置
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种内存管理方法及装置。
背景技术
随着云计算的发展和网络大流量的需求,网络即服务(NaaS)成为更加被依赖的云交付模式,NaaS可以通过高速的智能网络设备为用户提供高质量网络服务。其中,网卡可作为基础的硬件设备协助NaaS为用户提供高质量网络服务,从而改善云计算的网络性能和网络服务。
现有的网络技术中,网络收发报文主要是通过服务器的主机内存来进行存储,其中,网卡可作为服务器主机的外部(PCIe)设备对报文的收发或转发进行加速。但是,随着网卡的性能的提高,网卡可以承载更多的功能,不是仅局限于对报文的收发或者转发进行加速,网卡可承载网络控制与数据平面,比如,可将精确流表和虚拟主机(vhost-net)等网卡上进行处理。
但是,当前网卡主要以PCIe设备的形态工作在服务器主机环境中,导致网络应用仅能直接访问主机内存,而不可直接访问网卡内存或者需要通过系统调用的方式来访问网卡内存,从而导致用户态与内核态上下文切换的开销,降低了网络服务的效率。
发明内容
本申请实施例提供一种内存管理方法及装置,用于构建网卡和服务器的统一内存模型,并统一网卡内存空间的寻址方式和服务器内存空间的寻址方式,提高了网络服务的效率。
本申请实施例第一方面提供一种内存管理方法,包括:
所述服务器获取第一内存地址,所述第一内存地址为所述网卡的网卡内存空间的访问地址,所述网卡与所述服务器相连接;所述服务器将所述第一内存地址进行地址偏移,得到第二内存地址,所述第二内存地址与第三内存地址的编址方式相同,所述第三内存地址为所述服务器的服务器内存空间的访问地址;所述服务器构建统一内存模型,所述统一内存模型包括所述网卡内存空间和所述服务器内存空间,所述网卡内存空间在所述统一内存模型中的访问地址为所述第二内存地址,所述服务器内存空间在所述统一内存模型中的访问地址为所述第三内存地址,所述统一内存模型用于为网络应用分配内存空间。由本申请实施例第一方面可见,本申请实施例中服务器构建包括网卡内存空间和服务器内存空间的统一内存模型,可以使得网络应用采用同一访问方式访问网卡内存空间和服务器内存空间,减少了用户态和内核态之间的切换,从而提高了网络服务的效率。
基于本申请实施例第一方面,本申请实施例第一方面的第一种实现方式中,所述服务器将所述第一内存地址进行地址偏移,得到第二内存地址包括:所述服务器通过页地址转换表将所述第一内存地址进行地址偏移,得到所述第二内存地址。
基于本申请实施例第一方面以及本申请实施例第一方面的第一种实现方式,本申请实施例第一方面的第二种实现方式中,所述服务器获取第一内存地址包括:所述服务器从寄存器中获取所述第一内存地址,所述寄存器为所述服务器的寄存器。
基于本申请实施例第一方面以及本申请实施例第一方面的第一种实现方式至本申请实施例第一方面的第二种实现方式,本申请实施例第一方面的第三种实现方式中,所述方法还包括:所述服务器将所述第三内存地址映射至网卡内存地址空间,所述网卡内存地址空间包括所述第一内存地址。
基于本申请实施例第一方面以及本申请实施例第一方面的第一种实现方式至本申请实施例第一方面的第三种实现方式,本申请实施例第一方面的第四种实现方式中,其特征在于,所述统一内存模型包括命令环形缓冲区,所述方法还包括:所述服务器使用第一写指针在所述命令环形缓冲区写入第一命令包;所述服务器向所述网卡发送第一读拷贝信息,所述第一读拷贝信息包括所述第一写指针对应的第一读指针,所述第一读指针用于所述网卡从所述命令环形缓冲区读取所述第一命令包。由第一方面的第四种实现方式可见,服务器与网卡通过环形缓冲的进行交互,提高了网卡和服务器之间的交互效率,从而提高了网络服务的效率。
基于本申请实施例第一方面以及本申请实施例第一方面的第一种实现方式至本申请实施例第一方面的第四种实现方式,本申请实施例第一方面的第五种实现方式中,所述统一内存模型包括中断环形缓冲区,所述方法还包括:所述服务器接收所述网卡发送的第二读拷贝信息,所述第二读拷贝信息包括第二读指针;所述服务器根据所述第二读指针从所述中断环形缓冲区读取第二命令包,所述第二命令包为所述网卡使用第二写指针在所述中断环形缓冲区写入的命令包,所述第二写指针与所述第二读指针对应。由第一方面的第五种实现方式可见,服务器与网卡通过环形缓冲的进行交互,提高了网卡和服务器之间的交互效率,从而提高了网络服务的效率。
基于本申请实施例第一方面以及本申请实施例第一方面的第一种实现方式至本申请实施例第一方面的第五种实现方式,本申请实施例第一方面的第六种实现方式中,所述方法还包括:所述服务器接收网络应用发送的内存分配请求,所述内存分配请求包括请求存储的目标数据的数据标识;所述服务器根据所述数据标识从所述统一内存模型为所述目标数据分配内存空间。
本申请实施例第二方面提供一种服务器,所述服务器具有实现上述第一方面以及第一方面任一可能实现的方式的行为的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,还可以采用软件与硬件结合的形式实现,该硬件和/或软件包括一个或多个与上述功能相对应的模块。
本申请实施例第三方面提供另一种服务器,所述服务器包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得服务器执行上述第一方面以及第一方面任一可能实现的方式在服务器器侧进行的处理或操作。
本申请实施例第四方面提供一种存储介质,其上存储有计算机程序或指令,其特征在于,所述计算机程序或指令被执行时使得计算机执行第一方面以及第一方面任一可能实现方式的方法。
本申请实施例第五方面提供一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得所述计算机执行第一方面以及第一方面任一可能实现方式的方法。
本申请实施例第六方面提供一种芯片系统,所述芯片系统包括至少一个处理器和通信接口,所述芯片系统还可以包括存储器,所述存储器、所通信接口和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述至少一个处理器执行,以执行第一方面以及第一方面任一可能实现方式的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本实施例中,服务器将获取的网卡的第一内存地址进行偏移,得到服务器内存空间的第三内存地址的编址方式相同的第二内存地址,从而使得服务器构建的统一内存模型所包括的网卡内存空间的内存地址和服务器内存空间的访问地址的访问方式相同,因此,本实施例中,服务器构建包括网卡内存空间和服务器内存空间的统一内存模型,可以使得网络应用采用同一访问方式访问网卡内存空间和服务器内存空间,减少了用户态和内核态之间的切换,从而提高了网络服务的效率。
附图说明
图1为本申请实施例提供的一个实施例示意图;
图2为本申请实施例提供的一种内存管理方法的示意性流程图;
图3为本申请实施例提供的另一个实施例示意图;
图4为本申请实施例提供的另一种内存管理方法的示意性流程图;
图5为本申请实施例提供的另一种内存管理方法的示意性流程图;
图6为本申请实施例提供的一种服务器的示意性框图;
图7为本申请实施例提供的一种服务器的硬件结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着新技术的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请实施例的实施例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种内存管理方法及装置,用于构建网卡和服务器的统一内存模型,并统一网卡内存的寻址方式和服务器内存的寻址方式,提高了网络服务的效率。
请参考图1,图1为本申请实施例提供的一个实施例示意图,如图1所示,该实施例示意图包括网卡101以及服务器102。其中,网卡101和服务器102相互连接。比如,网卡101和服务器102的相互连接可以为网卡101可以通过PCIe插槽安装于服务器102。
本申请实施例提供的网卡101可以包括处理器和存储器,其中,网卡101可以是局域网中连接服务器和传输介质的接口,可以实现与局域网传输介质之间的物理连接和电信号匹配,也可以实现帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。
本申请实施例提供的服务器102可以包括处理器、硬盘、存储器和系统总线等。其中,在服务器的内核可实现包括各种队列(Queue)的创建、删除、访问等管理,以及处理芯片的事件等功能。需要说明的是,本实施例提供的服务器的内核可以支持多级分页模型和大页(hugepage),服务器的操作系统可支持数据平面开发套件(Data Plane DevelopmentKit,DPDK)。
需要说明的是,在本申请实施例中,可以是一个或多个网卡101通过PCIe插槽安装于服务器102,本申请实施例对于安装于服务器102的网卡101的数量不做限定。本申请实施例以及后续实施例仅以一个网卡101通过PCIe插槽安装于服务器102作为例子进行描述。
上面对本申请实施例提供的一种应用场景实施例进行了描述,下面对本申请实施例提供的内存管理方法进行描述。
请参考图2,图2为本申请实施例提供的一种内存管理方法的示意性流程图,如图2所示,本实施例提供的一种内存管理方法可以包括以下步骤:
201、服务器获取第一内存地址。
服务器从寄存器中获取第一内存地址,其中,该第一内存地址为网卡的网卡内存空间的访问地址,需要说明的是,第一内存地址的编址方式可以与服务器的服务器内存空间的第二内存地址的编址方式不同。可以理解的是,存储于寄存器的网卡内存空间的访问地址与服务器内存空间的访问地址的编址方式是不一样的。
需要说明的是,本实施例提供的网卡具有独立的网卡内存空间,该网卡内存空间的网卡内存地址空间包括第一内存地址。
202、服务器将第一内存地址进行地址偏移。
从寄存器中获取第一内存地址之后,服务器对第一内存地址进行地址偏移,得到第二内存地址。其中,从第一内存地址进行地址偏移得到的第二内存地址的编址方式与第三内存地址的编址方式相同,需要说明的是,第三内存地址为服务器内存空间的访问地址。
具体地,服务器通过页地址转换表将网卡内存空间的第一内存地址进行地址偏移,得到第二内存地址。比如,服务器将第一内存地址的编址方式转化,转化为与第三内存地址的编址方式相同的第二内存地址。
本实施例中服务器通过页地址转换表将网卡内存空间的内存地址和服务器内存空间的内存地址进行了统一。
203、服务器构建统一内存模型。
本实施例中,服务器构建统一内存模型,该统一内存模型包括网卡内存空间和服务器内存空间。
其中,在统一内存模型中,网卡内存空间的访问地址为第二内存地址,服务器内存空间的访问地址为第三内存地址,也就是说,本实施例中,可通过第二内存地址访问统一内存模型中的网卡内存空间,以及通过第三内存地址访问统一内存模型的服务器内存空间。
具体地,请参考图3,图3为本申请实施例提供的另一个实施例示意图,如图3所示,服务器通过内存映射I/O(Memory mapped I/O,MMIO)将网卡内存空间映射至服务器内存空间,以构建得到统一内存模型。其中,统一内存模型包括的网卡内存空间的访问地址为第二内存地址,统一内存模型包括的服务器内存空间的访问地址为第三内存地址。
服务器构建统一内存模型之后,服务器将统一内存模型所包括的网卡内存空间和服务器内存空间映射至用户访问空间。具体地,服务器可以通过mmap内存映射方法将统一内存模型所包括的网卡内存空间和服务器内存空间映射至用户访问空间,当然,本实施例中,服务器也可以通过其他的内存映射方法将统一内存模型所包括的网卡内存空间和服务器内存空间映射至用户访问空间,此处不做限定。
204、服务器接收网络应用发送的内存分配请求。
当网络应用的目标数据需要进行存储时,网络应用向服务器发送内存分配请求,其中,该内存分配请求包括目标数据的数据标识,该数据标识用于标识目标数据的数据类型。
比如,当目标数据为第一类型的数据,则该数据标识用于标识目标数据为第一类型的数据,指示服务器目标数据可存储于网卡内存空间,当目标数据为第二类型的数据,则该数据标识用于标识目标数据为第二类型的数据,指示服务器目标数据可存储于服务器内存空间,需要说明的是,第一类型的数据可以是指数据流在加工过程中产生的临时文件或者转发数据等,第二类型的数据可以是指数据流在加工过程中需要查找的数据,此处对第一类型的数据和第二类型的数据不做限定。
205、服务器为目标数据分配内存空间。
服务器从接收网络应用发送的内存分配请求,并从该内存分配请求中确定网络应用请求存储的目标数据的数据标识,然后根据该数据标识确定目标数据的数据类型,最后根据目标数据的数据类型从统一内存模型中为目标数据分配内存空间。比如,当数据标识指示目标数据为第一类型的数据时,服务器分配统一内存模型中的网卡内存空间存储目标数据,当数据标识指示目标数据为第二类型的数据时,服务器分配统一内存模型中的服务器内存空间存储目标数据。
本实施例中,服务器将获取的网卡的第一内存地址进行偏移,得到服务器内存空间的第三内存地址的编址方式相同的第二内存地址,从而使得服务器构建的统一内存模型所包括的网卡内存空间的内存地址和服务器内存空间的访问地址的访问方式相同,因此,本实施例中,服务器构建包括网卡内存空间和服务器内存空间的统一内存模型,可以使得网络应用可采用同一访问方式访问网卡内存空间和服务器内存空间,减少了用户态和内核态之间的切换,从而提高了网络服务的效率。
上面对本申请实施例提供的一种内存管理方法进行了描述,下面对本申请实施例提供的另一种内存管理方法进行描述。
请参考图4,图4为本申请实施例提供的一种内存管理方法的示意性流程图,如图4所示,本实施例提供的一种内存管理方法可以包括以下步骤:
401、服务器获取第一内存地址。
402、服务器将第一内存地址进行地址偏移。
403、服务器构建统一内存模型。
本实施例中,步骤401至步骤403与前述图2对应实施例的步骤201至步骤203类似,此处不在赘述。
404、服务器在命令环形缓冲区写入第一命令包。
服务器将网卡内存空间和服务器内存空间建立统一内存模型之后,服务器从统一内存模型得到命令环形缓存区,其中,该命令环形缓冲区包含于统一内存模型包括的内存空间,该命令环形缓冲区用于服务器写入第一命令包。
具体地,服务器与网卡的指令交互可以通过读写环形缓冲(ring buffer)来完成,其中,服务器通过第一写指针在命令环形缓冲区写入第一命令包。
405、服务器向网卡发送第一读拷贝信息。
服务器通过第一写指针在命令环形缓冲区写入第一命令包之后,服务器将第一读拷贝信息发送至网卡,其中,第一读拷贝信息包括命令环形缓冲区的基地址、命令环形缓冲区的大小以及第一写指针对应的第一读指针。
406、网卡从命令环形缓冲区中读取第一命令包。
网卡从服务器中获取第一读拷贝信息,然后从第一读拷贝信息中确定命令环形缓冲区的基地址、命令环形缓冲区的大小以及第一读指针。
网卡根据命令环形缓冲区的基地址、命令环形缓冲区的大小从地址重回表中确定服务器写入第一命令包对应的命令环形缓冲区,并根据第一读指针从命令环形缓冲区中读取第一命令包。
本实施例中,服务器从统一内存模型所包括的网卡内存空间和服务器内存空间中划分命令环形缓冲区,并且通过第一写指针在命令环形缓冲区中写入第一命令包。然后把第一写指针对应的第一读指针信息发送至网卡,由网卡根据第一读指针信息从命令环形缓冲区中读取第一命令包。因此,本实施例中,通过读写ring buffer实现服务器与网卡之间的交互,提高了网卡和服务器之间的交互效率,从而提高了网络服务的效率。
上面对本申请实施例提供的一种内存管理方法进行了描述,下面对本申请实施例提供的另一种内存管理方法进行描述。
请参考图5,图5为本申请实施例提供的一种内存管理方法的示意性流程图,如图5所示,本实施例提供的一种内存管理方法可以包括以下步骤:
501、服务器获取第一内存地址。
502、服务器将第一内存地址进行地址偏移。
503、服务器构建统一内存模型。
本实施例中,步骤501至步骤503与前述图2对应实施例的步骤201至步骤203类似,此处不在赘述。
504、服务器将第三内存地址映射至网卡内存地址空间。
服务器建立页地址转换表,并通过页地址转换表将服务器内存空间的第三内存地址映射至网卡内存地址空间,使得网卡可见服务器内存空间。
需要说明的是,该网卡内存地址空间包括第一内存地址空间。
505、网卡在中断环形缓冲区写入第二命令包。
服务器将网卡内存空间和服务器内存空间建立统一内存模型之后,网卡从统一内存模型得到中断环形缓存区,其中,该中断环形缓冲区包含于统一内存模型包括的内存空间,该中断环形缓冲区用于网卡写入第二命令包。
具体地,服务器与网卡的指令交互可以通过读写环形缓冲(ring buffer)来完成,其中,网卡通过第二写指针在中断环形缓冲区写入第二命令包。
506、网卡向服务器发送第二读拷贝信息。
网卡通过第二写指针在中断环形缓冲区写入第二命令包之后,网卡将第二读拷贝信息发送至服务器,其中,第二读拷贝信息包括中断环形缓冲区的基地址、中断环形缓冲区的大小以及第二写指针对应的第二读指针。
507、服务器从中断环形缓冲区中读取第二命令包。
服务器从网卡中获取第二读拷贝信息,然后从第二读拷贝信息中确定中断环形缓冲区的基地址、中断环形缓冲区的大小以及第二读指针。
服务器根据中断环形缓冲区的基地址、中断环形缓冲区的大小从地址重回表中确定网卡写入第二命令包对应的中断环形缓冲区,并根据第二读指针从中断环形缓冲区中读取第二命令包。
本实施例中,服务器从统一内存模型所包括的网卡内存空间和服务器内存空间中划分中断环形缓冲区,网卡通过第二写指针在中断环形缓冲区中写入第二命令包。然后把第二写指针对应的第二读指针信息发送至服务器,由服务器根据第二读指针信息从中断环形缓冲区中读取第二命令包。因此,本实施例中,通过读写ring buffer实现服务器与网卡之间的交互,提高了网卡和服务器之间的交互效率,从而提高了网络服务的效率。
上面对本申请实施例提供的内存管理方法进行了描述,下面对本申请实施例提供的装置进行描述。
请参考图6,图6为本申请实施例提供的一种服务器的示意性框图,如图6所示,本申请实施例提供的服务器60包括:
获取单元601,用于获取第一内存地址,所述第一内存地址为所述网卡的网卡内存空间的访问地址,所述网卡与所述服务器相连接;
偏移单元602,用于将所述第一内存地址进行地址偏移,得到第二内存地址,所述第二内存地址与第三内存地址的编址方式相同,所述第三内存地址为所述服务器的服务器内存空间的访问地址;
构建单元603,用于构建统一内存模型,所述统一内存模型包括所述网卡内存空间和所述服务器内存空间,所述网卡内存空间在所述统一内存模型中的访问地址为所述第二内存地址,所述服务器内存空间在所述统一内存模型中的访问地址为所述第三内存地址,所述统一内存模型用于为网络应用分配内存空间。
可选地,在一种可能的实现方式中,所述偏移单元602具体用于通过页地址转换表将所述第一内存地址进行地址偏移,得到所述第二内存地址。
可选地,在另一种可能的实现方式中,所述获取单元601具体用于从寄存器中获取所述第一内存地址,所述寄存器为所述服务器的寄存器。
可选地,在另一种可能的实现方式中,所述服务器60还包括:
映射单元604,所述映射单元604用于将所述第三内存地址映射至网卡内存地址空间,所述网卡内存地址空间包括所述第一内存地址。
可选地,在另一种可能的实现方式中,所述统一内存模型包括命令环形缓冲区,所述服务器60还包括:
写入单元605,用于使用第一写指针在所述命令环形缓冲区写入第一命令包;
发送单元606,用于向所述网卡发送第一读拷贝信息,所述第一读拷贝信息包括所述第一写指针对应的第一读指针,所述第一读指针用于所述网卡从所述命令环形缓冲区读取所述第一命令包。
可选地,在另一种可能的实现方式中,所述统一内存模型包括中断环形缓冲区,所述服务器60还包括:
第一接收单元607,用于接收所述网卡发送的第二读拷贝信息,所述第二读拷贝信息包括第二读指针;
读取单元608,用于根据所述第二读指针从所述中断环形缓冲区读取第二命令包,所述第二命令包为所述网卡使用第二写指针在所述中断环形缓冲区写入的命令包,所述第二写指针与所述第二读指针对应。
可选地,在另一种可能的实现方式中,所述服务器60还包括:
第二接收单元609,用于接收网络应用发送的内存分配请求,所述内存分配请求包括请求存储的目标数据的数据标识;
分配单元610,用于根据所述数据标识从所述统一内存模型为所述目标数据分配内存空间。
本实施例中,偏移单元602将获取的网卡的第一内存地址进行偏移,得到服务器内存空间的第三内存地址的编址方式相同的第二内存地址,从而使得构建单元603构建的统一内存模型所包括的网卡内存空间的内存地址和服务器内存空间的访问地址的访问方式相同,因此,本实施例中,服务器构建包括网卡内存空间和服务器内存空间的统一内存模型,可以使得网络应用可采用同一访问方式访问网卡内存空间和服务器内存空间,减少了用户态和内核态之间的切换,从而提高了网络服务的效率。
上面对本申请实施例提供的一种服务器进行了描述,下面对本申请实施例提供的另一种服务器进行描述。
请参考图7,图7为本申请实施例提供的一种服务器的示意性框图,如图7所示,本申请实施例提供的服务器70包括:
至少一个处理器710、存储器750和收发器730。该收发器730可包括接收机和发射机,该存储器750可以包括只读存储器和/或随机存取存储器,并向处理器710提供操作指令和数据。存储器750的一部分还可以包括非易失性随机存取存储器(NVRAM)。存储器750与处理器710可以是各自独立通过总线或者接口连接,也可以集成在一起。
在一些实施方式中,存储器750存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
在本申请实施例中,通过调用存储器750存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。处理器710控制服务器70的操作,处理器710还可以称为CPU(Central Processing Unit,中央处理单元)。存储器750可以包括只读存储器和随机存取存储器,并向处理器710提供指令和数据。存储器750的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中服务器70的各个组件通过总线系统720耦合在一起,其中总线系统720除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统720。
上述本申请实施例揭示的方法可以应用于处理器710中,或者由处理器710实现。处理器710可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器710中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器710可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器750,该存储器750可以是物理上独立的单元,也可以是与处理器710集成在一起的,处理器710读取存储器750中的信息,结合其硬件完成上述方法的步骤。
本实施例中,收发器730用于执行上述方法实施例中服务器侧涉及到接收和发送的操作步骤。或用于执行其他可选实施例中的服务器侧的数据发送以及接收的步骤。
处理器710用于执行上述方法实施例中服务器侧数据处理的步骤。或用于执行其他可选实施例中服务器侧数据处理的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种内存管理方法,其特征在于,所述方法应用于服务器和网卡,所述方法包括:
所述服务器获取第一内存地址,所述第一内存地址为所述网卡的网卡内存空间的访问地址,所述网卡与所述服务器相连接;
所述服务器将所述第一内存地址进行地址偏移,得到第二内存地址,包括:所述服务器通过页地址转换表将所述第一内存地址进行地址偏移,得到所述第二内存地址,其中,所述第二内存地址与第三内存地址的编址方式相同,所述第三内存地址为所述服务器的服务器内存空间的访问地址;
所述服务器构建统一内存模型,所述统一内存模型包括所述网卡内存空间和所述服务器内存空间,所述网卡内存空间在所述统一内存模型中的访问地址为所述第二内存地址,所述服务器内存空间在所述统一内存模型中的访问地址为所述第三内存地址,所述服务器将所述网卡内存空间和所述服务器内存空间映射至用户访问空间,所述统一内存模型用于为网络应用分配内存空间;
所述服务器接收网络应用发送的内存分配请求,所述内存分配请求包括请求存储的目标数据的数据标识,所述数据标识用于标识所述目标数据的数据类型;
所述服务器根据所述数据标识从所述统一内存模型为所述目标数据分配内存空间。
2.根据权利要求1所述的方法,其特征在于,所述服务器获取第一内存地址包括:
所述服务器从寄存器中获取所述第一内存地址,所述寄存器为所述服务器的寄存器。
3.根据权利要求1至2任一项所述的方法,其特征在于,所述方法还包括:
所述服务器将所述第三内存地址映射至网卡内存地址空间,所述网卡内存地址空间包括所述第一内存地址。
4.根据权利要求1至2任一项所述的方法,其特征在于,所述统一内存模型包括命令环形缓冲区,所述方法还包括:
所述服务器使用第一写指针在所述命令环形缓冲区写入第一命令包;
所述服务器向所述网卡发送第一读拷贝信息,所述第一读拷贝信息包括所述第一写指针对应的第一读指针,所述第一读指针用于所述网卡从所述命令环形缓冲区读取所述第一命令包。
5.根据权利要求1至2任一项所述的方法,其特征在于,所述统一内存模型包括中断环形缓冲区,所述方法还包括:
所述服务器接收所述网卡发送的第二读拷贝信息,所述第二读拷贝信息包括第二读指针;
所述服务器根据所述第二读指针从所述中断环形缓冲区读取第二命令包,所述第二命令包为所述网卡使用第二写指针在所述中断环形缓冲区写入的命令包,所述第二写指针与所述第二读指针对应。
6.一种服务器,其特征在于,包括:
获取单元,用于获取第一内存地址,所述第一内存地址为网卡的网卡内存空间的访问地址,所述网卡与所述服务器相连接;
偏移单元,用于将所述第一内存地址进行地址偏移,得到第二内存地址,所述第二内存地址与第三内存地址的编址方式相同,所述第三内存地址为所述服务器的服务器内存空间的访问地址;
所述偏移单元,具体用于所述服务器通过页地址转换表将所述第一内存地址进行地址偏移,得到所述第二内存地址;
处理单元,用于构建统一内存模型,所述统一内存模型包括所述网卡内存空间和所述服务器内存空间,所述网卡内存空间在所述统一内存模型中的访问地址为所述第二内存地址,所述服务器内存空间在所述统一内存模型中的访问地址为所述第三内存地址,所述服务器将所述网卡内存空间和所述服务器内存空间映射至用户访问空间,所述统一内存模型用于为网络应用分配内存空间;
第二接收单元,用于接收网络应用发送的内存分配请求,所述内存分配请求包括请求存储的目标数据的数据标识,所述数据标识用于标识所述目标数据的数据类型;
分配单元,用于根据所述数据标识从所述统一内存模型为所述目标数据分配内存空间。
7.根据权利要求6所述的服务器,其特征在于,所述获取单元具体用于从寄存器中获取所述第一内存地址,所述寄存器为所述服务器的寄存器。
8.根据权利要求6至7任一项所述的服务器,其特征在于,所述服务器还包括:
映射单元,用于将所述第三内存地址映射至网卡内存地址空间,所述网卡内存地址空间包括所述第一内存地址。
9.根据权利要求6至7任一项所述的服务器,其特征在于,所述统一内存模型包括命令环形缓冲区,所述服务器还包括:
写入单元,用于使用第一写指针在所述命令环形缓冲区写入第一命令包;
发送单元,用于向所述网卡发送第一读拷贝信息,所述第一读拷贝信息包括所述第一写指针对应的第一读指针,所述第一读指针用于所述网卡从所述命令环形缓冲区读取所述第一命令包。
10.根据权利要求6至7任一项所述的服务器,其特征在于,所述统一内存模型包括中断环形缓冲区,所述服务器还包括:
第一接收单元,用于接收所述网卡发送的第二读拷贝信息,所述第二读拷贝信息包括第二读指针;
读取单元,用于根据所述第二读指针从所述中断环形缓冲区读取第二命令包,所述第二命令包为所述网卡使用第二写指针在所述中断环形缓冲区写入的命令包,所述第二写指针与所述第二读指针对应。
11.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机设备执行权利要求1至5任一项所述的方法。
12.一种服务器,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得通信装置执行权利要求1至5任一项所述的方法。
CN201910027146.8A 2019-01-11 2019-01-11 内存管理方法及装置 Active CN109857553B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910027146.8A CN109857553B (zh) 2019-01-11 2019-01-11 内存管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910027146.8A CN109857553B (zh) 2019-01-11 2019-01-11 内存管理方法及装置

Publications (2)

Publication Number Publication Date
CN109857553A CN109857553A (zh) 2019-06-07
CN109857553B true CN109857553B (zh) 2023-07-28

Family

ID=66894701

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910027146.8A Active CN109857553B (zh) 2019-01-11 2019-01-11 内存管理方法及装置

Country Status (1)

Country Link
CN (1) CN109857553B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459671B (zh) * 2020-03-30 2023-11-28 深圳市英威腾电源有限公司 一种数据处理方法、装置及数据交换服务器和存储介质
CN111506426B (zh) * 2020-04-17 2021-05-04 翱捷科技(深圳)有限公司 内存管理方法、装置及电子设备
CN113709495B (zh) * 2021-08-24 2023-11-24 天津津航计算技术研究所 一种基于pcie缓冲机制的同步解码方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217573A (zh) * 2007-12-29 2008-07-09 厦门大学 一种加速网卡报文捕获的方法
CN103945456A (zh) * 2014-05-12 2014-07-23 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN105373484A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种网络通信芯片中内存分配、存储和管理的方法
CN106656838A (zh) * 2016-10-19 2017-05-10 赛尔网络有限公司 一种流量分析方法及系统
CN105283855B (zh) * 2014-04-25 2018-01-23 华为技术有限公司 一种寻址方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217573A (zh) * 2007-12-29 2008-07-09 厦门大学 一种加速网卡报文捕获的方法
CN105283855B (zh) * 2014-04-25 2018-01-23 华为技术有限公司 一种寻址方法及装置
CN103945456A (zh) * 2014-05-12 2014-07-23 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN105373484A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种网络通信芯片中内存分配、存储和管理的方法
CN106656838A (zh) * 2016-10-19 2017-05-10 赛尔网络有限公司 一种流量分析方法及系统

Also Published As

Publication number Publication date
CN109857553A (zh) 2019-06-07

Similar Documents

Publication Publication Date Title
CN108984465B (zh) 一种消息传输方法及设备
CN107209681B (zh) 一种存储设备访问方法、装置和系统
US10496427B2 (en) Method for managing memory of virtual machine, physical host, PCIE device and configuration method thereof, and migration management device
CN111679921B (zh) 内存共享方法、内存共享装置及终端设备
CN113296884B (zh) 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
US12117947B2 (en) Information processing method, physical machine, and PCIE device
CN109857553B (zh) 内存管理方法及装置
EP4428684A1 (en) Data access method and computing device
CN109983449A (zh) 数据处理的方法和存储系统
US8996774B2 (en) Performing emulated message signaled interrupt handling
CN107967225B (zh) 数据传输方法、装置、计算机可读存储介质和终端设备
CN114201268B (zh) 一种数据处理方法、装置、设备及可读存储介质
CN110532208B (zh) 一种数据处理方法、接口转换结构及数据处理设备
CN109857545B (zh) 一种数据传输方法及装置
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
CN113760560A (zh) 一种进程间通信方法以及进程间通信装置
CN114945009A (zh) PCIe总线连接的设备间进行通信的方法、设备及系统
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
CN112256460A (zh) 进程间通信方法、装置、电子设备及计算机可读存储介质
CN116955251A (zh) 一种基于重排序缓冲器的读请求处理方法及相关装置
CN109614264B (zh) 一种数据备份方法、装置及系统
US20200218685A1 (en) Data Access Method and Apparatus
EP4440080A1 (en) Network node configuration and access request processing method and apparatus
CN110096355B (zh) 一种共享资源分配方法、装置和设备
CN115509972A (zh) 实现dma高效收发报文的方法及应用

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220209

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant