[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN117873921A - 一种基于远程直接内存访问的队列页表管理方法及装置 - Google Patents

一种基于远程直接内存访问的队列页表管理方法及装置 Download PDF

Info

Publication number
CN117873921A
CN117873921A CN202311641570.4A CN202311641570A CN117873921A CN 117873921 A CN117873921 A CN 117873921A CN 202311641570 A CN202311641570 A CN 202311641570A CN 117873921 A CN117873921 A CN 117873921A
Authority
CN
China
Prior art keywords
queue
page table
memory access
direct memory
remote direct
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
Application number
CN202311641570.4A
Other languages
English (en)
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.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology 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 Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202311641570.4A priority Critical patent/CN117873921A/zh
Publication of CN117873921A publication Critical patent/CN117873921A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于远程直接内存访问的队列页表管理方法及装置,包括:远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;远程直接内存访问用户态驱动基于预设函数向内核态驱动发起队列的注册请求;远程直接内存访问内核态驱动从操作系统内核获取分配给队列的物理页链表,并为队列分配内存作为队列页表;远程直接内存访问内核态驱动遍历物理页链表中的每一项,并将每一项信息依次写入队列页表;远程直接内存访问内核态驱动将队列页表的基地址写入队列寄存器,将队列页表指针写入队列寄存器,并设置初始值。本发明提供的方法能够高效且便利地存储、管理队列页表,极大降低远程直接内存访问队列页表的访问延迟和存储开销。

Description

一种基于远程直接内存访问的队列页表管理方法及装置
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于远程直接内存访问的队列页表管理方法及装置。
背景技术
远程直接内存访问(Remote Direct MemoryAccess,RDMA)是一种高性能的网络技术,RoCEv2 RDMA网卡通过硬件卸载无限带宽(InfiniBand)传输层,实现了零拷贝、操作系统内核旁路的网络传输服务,有效地降低了网络数据传输时服务器CPU的占用率。InfibiBand传输层以队列(Queue)作为软硬件交互的接口,涉及的队列包括发送队列(SendQueue,SQ)、接收队列(Receive Queue,RQ)、共享接收队列(SharedReceive Queue,SRQ)以及完成队列(Completion Queue,CQ)。队列一般存储于服务器内存中,RDMA网卡用户态驱动在用户进程地址空间分配虚拟地址空间连续、物理页对齐的队列存储空间。在现代Linux操作系统中,当RDMA队列占用超过一个物理页,通常表现为不连续的物理页。RDMA网卡通过PCIe(Peripheral Component Interconnect Express)总线以直接内存访问(DirectMemoryAccess,DMA)的方式读取RDMA队列,DMA不能直接使用用户进程的虚拟地址,需要使用操作系统内核统一分配的DMA地址访问内存。
现有技术如图1所示,RDMA内核态驱动获取对应存储空间的DMA地址,并且按页为单位(图1中灰色部分),以多级页表的方式组织队列存储空间虚拟地址到DMA地址的映射关系,并把页表信息同步到RDMA网卡。队列页表信息一般存储于服务器主存,当RDMA网卡访问队列时,需要首先基于待访问的队列虚拟地址和队列页表基地址,获取对应的队列DMA地址。
为便于理解,举例说明:假设操作系统物理页大小为典型值4KB,每个队列页表项存储规模为8B,典型的队列访问基本块大小为64B。若队列存储空间规模小于等于4KB,则页表级数为一级,页表仅包括一个页表项,可直接同步该页表项到RDAM网卡上的队列信息存储空间,队列访问过程中不需要额外地通过PCIe总线发起DMA读队列页表;若队列存储空间规模大于4KB,小于等于2MB,则页表级数为二级,第一级页表存储第二级页表的DMA基地址,第二级页表存储队列页表项,第二级队列页表的规模为4KB,无法直接同步到有限的RDMA网卡队列信息存储空间,因此在队列访问过程中,每访问64个队列基本块,需要通过PCIe总线发起一次DMA读取下一个队列页表项;若队列存储空间规模大于2MB,小于等于1GB,则页表级数为三级,第一级页表存储第二级页表的DMA基地址,第二级页表存储第三级页表的DMA基地址,在队列访问过程中,每访问64个队列,需要通过PCIe总线发起二次DMA读取下一个队列页表项。
发明内容
鉴于此,本发明实施例提供了一种基于远程直接内存访问的队列页表管理方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有远程直接内存访问队列访问过程中页表访问开销高的问题。
一方面,本发明提供了一种基于远程直接内存访问的队列页表管理方法,所述方法在远程直接内存访问网卡上执行,包括以下步骤:
远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;所述远程直接内存访问用户态驱动基于预设函数向内核态驱动发起所述队列的注册请求;
远程直接内存访问内核态驱动从操作系统内核获取分配给所述队列的物理页链表,并为所述队列分配一段内存作为队列页表;
所述远程直接内存访问内核态驱动遍历所述物理页链表中的每一项,并将每一项信息依次写入所述队列页表;
所述远程直接内存访问内核态驱动将所述队列页表的基地址写入队列寄存器,将队列页表指针写入所述队列寄存器,并设置初始值。
在本发明的一些实施例中,所述基于远程直接内存访问的队列页表管理方法还包括:
所述远程直接内存访问内核态驱动为所述队列分配一段连续且物理页对齐的内存作为队列页表。
在本发明的一些实施例中,所述远程直接内存访问内核态驱动遍历所述物理页链表中的每一项,并将每一项信息依次写入所述队列页表,还包括:
所述队列页表的每一项为8字节,低12位为该项映射的物理页数量,高52位为该项对应的初始物理页地址的高52位;
若所述物理页链表的项映射超过4096个物理页,则拆分为多个队列页表项进行存储。
在本发明的一些实施例中,所述基于远程直接内存访问的队列页表管理方法还包括:
所述远程直接内存访问内核态驱动基于PCIe协议标准将所述队列页表的基地址和所述队列页表指针写入所述队列寄存器。
在本发明的一些实施例中,所述远程直接内存访问内核态驱动将所述队列页表的基地址写入队列寄存器,将队列页表指针写入所述队列寄存器,并设置初始值之后,所述方法还包括:
所述远程直接内存访问内核态驱动向所述远程直接内存访问用户态驱动返回队列创建完成信息;
所述远程直接内存访问用户态驱动接收所述队列创建完成信息,队列创建过程结束。
在本发明的一些实施例中,在队列创建完成之后,所述方法还包括:
所述远程直接内存访问内核态驱动判断所述队列页表项数量;
若大于等于两项,则将所述队列页表的第一项和第二项依次写入所述队列寄存器的第一缓存项和第二缓存项,并修改所述第一缓存项和所述第二缓存项的初始值;若小于两项,则将该项写入所述第一缓存项,并修改所述第一缓存项的初始值;
所述远程直接内存访问内核态驱动设置所述队列寄存器缓存项指针的初始值。
在本发明的一些实施例中,当当前所述缓存项指针指向所述第一缓存项,所述队列页表项大于等于两项时,所述远程直接内存访问网卡访问所述队列时,所述方法还包括:
所述远程直接内存访问网卡基于所述第一缓存项的物理地址发起直接内存访问读取队列基本块;
判断所述第一缓存项映射的物理页剩余长度;若所述剩余长度为一个队列基本块,则所述远程直接内存访问网卡发起队列页表项预取请求;并检查所述第二缓存项的有效位,若所述有效位为有效,则将当前所述缓存项指针指向所述第二缓存项,并初始化所述剩余长度。
在本发明的一些实施例中,若所述剩余长度为一个队列基本块,则所述远程直接内存访问网卡发起队列页表项预取请求,还包括:
基于当前所述缓存项指针发起所述队列页表项预取请求,以读取下一个页表项;
返回基于所述队列页表项预取请求得到的预取页表项,使用所述预取页表项替换已经消耗完的页表项。
另一方面,本发明提供一种基于远程直接内存访问的队列页表管理装置,所述装置应用于远程直接内存访问网卡,所述装置包括:
队列访问模块,用于实现各队列的读与写功能;
队列信息存储模块,用于存储队列页表的基地址、队列页表指针、第一缓存项的有效位值、第二缓存项的有效位值以及缓存项指针;
页表项缓存维护模块,用于接收并执行所述队列访问模块发起的队列页表项预取请求。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中提及的任意一项所述方法的步骤。
本发明的有益效果至少是:
本发明提供一种基于远程直接内存访问的队列页表管理方法及装置,包括:远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;远程直接内存访问用户态驱动基于预设函数向内核态发起队列的注册请求;远程直接内存访问内核态驱动从操作系统内核获取分配给队列的物理页链表,并为队列分配内存作为队列页表;远程直接内存访问内核态驱动遍历物理页链表中的每一项,并将每一项信息依次写入队列页表;远程直接内存访问内核态驱动将队列页表的基地址写入队列寄存器,将队列页表指针写入队列寄存器,并设置初始值。本发明提供的方法能够高效且便利地存储、管理队列页表,极大降低远程直接内存访问队列页表的访问延迟和存储开销。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例中现有技术中以页为单位的队列页表映射示意图。
图2为本发明一实施例中基于远程直接内存访问的队列页表管理方法步骤示意图。
图3为本发明一实施例中基于远程直接内存访问的队列页表管理方法中基于连续页的队列页表存储机制的示意图。
图4为本发明一实施例中基于乒乓缓存的队列页表项初始化流程示意图。
图5为本发明一实施例中基于乒乓缓存的队列页表项维护流程示意图。
图6为本发明一实施例中基于乒乓缓存的队列页表项预取流程示意图。
图7为本发明一实施例中基于远程直接内存访问的队列页表管理装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
这里需要强调的是,在下文中提及的各步骤标记并不是对各步骤先后顺序的限定,而应当理解为可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
为了解决现有远程直接内存访问队列访问过程中页表访问开销高的问题,本发明提出了一种基于远程直接内存访问的队列页表管理方法,该方法在远程直接内存访问RDMA网卡上执行,如图2所示,该方法包括以下步骤S101~S104:
步骤S101:远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;远程直接内存访问用户态驱动基于预设函数向内核态驱动发起队列的注册请求。
步骤S102:远程直接内存访问内核态驱动从操作系统内核获取分配给队列的物理页链表,并为队列分配一段内存作为队列页表。
步骤S103:远程直接内存访问内核态驱动遍历物理页链表中的每一项,并将每一项信息依次写入所述队列页表。
步骤S104:远程直接内存访问内核态驱动将队列页表的基地址写入队列寄存器,将队列页表指针写入队列寄存器,并设置初始值。
在步骤S101中,远程直接内存访问用户态驱动在用户态分配内存空间,作为队列缓冲区,用于存储队列数据、控制信息等,并创建一个队列,在创建队列时,可以指定队列的大小和其他相关参数。
远程直接内存访问用户态驱动调用远程直接内存访问内核态驱动提供的预设函数,向内核态驱动发起队列注册请求。内核态驱动会根据用户态驱动传递的参数,为该队列分配资源并进行初始化。
在步骤S102中,远程直接内存访问内核态驱动通过操作系统内核提供的接口,获取队列的物理页链表Scatter List。其中,物理页链表包含了所有与该队列相关的物理页的信息,示例性的,包含物理页的起始地址、大小和访问权限等信息,以及该物理页所属的内存区域、所在节点等其他相关信息。
远程直接内存访问内核态驱动为队列分配一段内存作为队列页表。其中,队列页表是一个数组,每个元素(即队列页表项)都对应着一个物理页的地址映射信息。
在一些实施例中,远程直接内存访问内核态驱动为队列分配一段连续且物理页对齐的内存作为队列页表。
在步骤S103中,远程直接内存访问内核态驱动依次遍历物理页链表中的每一项,并将对应的物理页地址映射信息依次写入队列页表。
在一些实施例中,队列页表的每一项,即每个队列页表项包含8个字节,其中,低12位为这一项映射的物理页数量,高52位为这一项对应的初始物理页地址的高52位。
在一些实施例中,如果当前物理页链表项映射超过4096个物理页,则需要拆分成多个队列页表项进行存储。
在步骤S104中,远程直接内存访问内核态驱动将队列页表的基地址写入用于存储远程直接内存访问网卡相关队列信息的队列寄存器中,将队列页表指针也同样写入用于存储远程直接内存访问网卡相关队列信息的队列寄存器中,并设置队列页表指针初始值,示例性的,设置初始值为0。
在一些实施例中,远程直接内存访问内核态驱动基于PCIe协议标准将队列页表的基地址和队列页表指针写入队列寄存器。
在一些实施例中,在步骤S104之后,还包括以下步骤:
队列创建过程完成后,远程直接内存访问内核态驱动将控制权交还给远程直接内存访问用户态驱动,向远程直接内存访问用户态驱动返回队列创建完成信息。
远程直接内存访问用户态驱动接收到内核态驱动返回的队列创建完成信息后,队列创建过程结果。此时,应用程序可以通过远程直接内存访问用户态驱动提供的接口,访问该队列进行数据传输等操作。
基于以上说明,相较于现有技术,本发明提供的方法能够使用一个队列页表项映射一块连续物理页,为便于理解与体现技术效果,下面进行举例对比:
现有的远程直接内存访问队列页表存储机制沿用了以页为单位的映射机制,从而保证了远程直接内存访问网卡在常数时间复杂度内查询到对应的页表项。
示例性的,定义远程直接内存访问队列在进程虚拟地址空间的基地址为VA_BASE,当前待访问的远程直接内存访问队列基本块虚拟地址为VA_CURRENT,4KB页偏移PAGE_SHIFT为12,>>表示逻辑右移操作,则对应的队列页表项索引PT_IDX=(VA_CURRENT>>PAGE_SHIFT)-VA_BASE>>PAGE_SHIFT,对于如图1中所示的映射方式,根据PT_IDX可以直接定位到对应的队列页表项。
然而操作系统在分配远程直接内存访问队列的存储空间时,存在多个物理页连续的情况,如图3所示,6个虚拟页对应三个连续的物理页块,第一块包括1个物理页,第二块包括2个物理页,第三块包括3个物理页。对于图3所示的队列内存分布情况,使用现有的传统队列页表存储机制,需要消耗6个队列页表项存储空间,远程直接内存访问网卡在运行过程中,完整地访问一次队列需要6次PCIe DMA读取队列页表项。
若按照本发明提供的使用一个队列页表项映射一块连续物理页,如图3所示,队列页表项_0映射1个物理页,队列页表项_1映射2个物理页,队列页表_2映射3个物理页。即使用本发明提出地队列页表管理方式,存储图3所示的队列页表信息只需要消耗3个队列页表项存储空间,远程直接内存访问网卡完整地访问一次队列仅需要3次PCIe DMA读取队列页表项。
同时,考虑到使用本发明提出的队列页表管理机制,无法直接使用队列基本块VA确定PT_IDX,因此,在本发明中,对于每一个队列,维护一个页表项读指针,指向下一个待读取的队列页表项,示例性的,初始值为0,因为远程直接内存访问网卡严格按照顺序访问队列,所以每次使用页表项读指针访问队列页表后,递增队列页表项读指针,作为下一个待访问的队列页表项指针。
在一些实施例中,基于步骤S101~S104的队列创建管理方法,本发明还提出一种基于乒乓缓存的队列页表项缓存和预取机制。其中,乒乓操作(Ping-Pong Operation)是一种在计算机系统中常用的技术,用于减少对主存访问的需求,提高数据传输的效率。
在队列信息中维护两个队列页表缓存项,分别为第一缓存项(记作缓存项0)和第二缓存项(记作缓存项1),使用两个有效位(Valid0和Valid1)记录缓存项是否有效,使用一个当前缓存项指针(0/1)记录当前使用的缓存项标识,如图4所示,具体的:
基于步骤S101~S104创建得到队列页表后,远程直接内存访问内核态驱动判断队列页表项数量,若大于等于两项,则将队列页表的第一项和第二项依次写入队列寄存器的第一缓存项和第二缓存项,并修改第一缓存项和第二缓存项的初始值,即,将队列页表的第一项写入缓存项0,将队列页表的第二项写入缓存项1,并将Valid0和Valid1初始化为1;若小于两项,则将该项(唯一的一项)写入第一缓存项,并修改第一缓存项的初始值,即将该项写入缓存项0,并将Valid0初始化为1。
远程直接内存访问内核态驱动对队列寄存器的缓存项指针进行初始化,初始化为0。
在一些实施例中,远程直接内存访问内核态驱动均通过PCIe进行信息写入。
考虑到远程直接内存访问网卡严格按照顺序访问队列,因此当远程直接内存访问网卡初次访问队列时,不需要通过PCIe DMA读取队列页表项,直接使用第一缓存项。
在一些实施例中,本发明提出在队列信息中维护一个变量:剩余长度。其中,剩余长度用于记录当前使用的缓存项映射的连续物理页剩余长度,以字节为单位。如图5所示,假设当前缓存项指针为0,即当前缓存项指针指向第一缓存项,且队列页表项大于等于两项时,具体的:
远程直接内存访问网卡基于第一缓存项的物理地址发起直接内存访问读取队列基本块。判断第一缓存项映射的物理页剩余长度;若剩余长度为一个队列基本块,则远程直接内存访问网卡发起队列页表项预取请求;并检查第二缓存项的有效位,若有效位为有效,则将当前缓存项指针指向第二缓存项,并初始化所述剩余长度。
其中,剩余长度为一个队列基本块表示当前缓存项指针指向的页表项在完成本次访问后即消耗完,因此在完成当前的PCIe DMA访问队列请求后,检查另一个缓存页表项的有效位,如果该缓存页表项有效,则更新当前缓存项指针指向该缓存页表项,后续对该队列的访问使用该缓存页表项。
在一些实施例中,基于上文所述的若剩余长度为一个队列基本块,则远程直接内存访问网卡发起队列页表项预取请求,如图6所示,具体的:
如果当前缓存项指针指向的页表项在完成本次访问后即消耗完,则触发页表项预取,基于当前的队列页表指针,发起PCIe DMA请求预读取下一个页表项。当PCIe DMA请求预读取的预取页表项返回后,使用该预取页表项替换已经消耗完的页表项。
一个缓存页表项可支持多次PCIe DMA队列访问,示例性的:队列基本块大小为64字节,最坏情况下,一个页表项仅映射一个4KB物理页,则一个页表项映射的物理页可以容纳64个队列基本块。因此一个缓存页表项可以支持64次队列访问,需要64次PCIe DMA读,而一次缓存页表项的预取只需要1次PCIe DMA读。一般情况下,在当前缓存页表项用完前,通过PCIe DMA预取的页表项已经返回,并更新页表项。在本发明中,在远程直接内存访问网卡访问队列的过程中,必然存在一个当前可以使用的缓存项,不会出现等待有效页表项阻碍PCIe DMA读队列的情况,因此可以认为本发明将大规模远程直接内存访问队列访问过程中的地址翻译开销降低到0。
与基于远程直接内存访问的队列页表管理方法对应的,本发明还提供一种基于远程直接内存访问的队列页表管理装置,如图7所示,该装置包括:
队列访问模块,用于实现各队列的读与写功能。
队列信息存储模块,用于存储队列页表的基地址、队列页表指针、第一缓存项的有效位值、第二缓存项的有效位值以及缓存项指针。
页表项缓存维护模块,用于接收并执行队列访问模块发起的队列页表项预取请求。
在一些实施例中,队列访问与队列页表的访问都通过PCIe总线接口实现。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现基于远程直接内存访问的队列页表管理方法的步骤。
与上述方法相应地,本发明还提供了一种设备,该设备包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该设备实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明提供一种基于远程直接内存访问的队列页表管理方法及装置,包括:远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;远程直接内存访问用户态驱动基于预设函数向内核态驱动发起队列的注册请求;远程直接内存访问内核态驱动从操作系统内核获取分配给队列的物理页链表,并为队列分配内存作为队列页表;远程直接内存访问内核态驱动遍历物理页链表中的每一项,并将每一项信息依次写入队列页表;远程直接内存访问内核态驱动将队列页表的基地址写入队列寄存器,将队列页表指针写入队列寄存器,并设置初始值。本发明提供的方法能够高效且便利地存储、管理队列页表,极大降低远程直接内存访问队列页表的访问延迟和存储开销。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于远程直接内存访问的队列页表管理方法,其特征在于,所述方法在远程直接内存访问网卡上执行,包括以下步骤:
远程直接内存访问用户态驱动在用户态分配队列缓冲区,并创建一个队列;所述远程直接内存访问用户态驱动基于预设函数向内核态驱动发起所述队列的注册请求;
远程直接内存访问内核态驱动从操作系统内核获取分配给所述队列的物理页链表,并为所述队列分配一段内存作为队列页表;
所述远程直接内存访问内核态驱动遍历所述物理页链表中的每一项,并将每一项信息依次写入所述队列页表;
所述远程直接内存访问内核态驱动将所述队列页表的基地址写入队列寄存器,将队列页表指针写入所述队列寄存器,并设置初始值。
2.根据权利要求1所述的基于远程直接内存访问的队列页表管理方法,其特征在于,所述方法还包括:
所述远程直接内存访问内核态驱动为所述队列分配一段连续且物理页对齐的内存作为队列页表。
3.根据权利要求1所述的基于远程直接内存访问的队列页表管理方法,其特征在于,所述远程直接内存访问内核态驱动遍历所述物理页链表中的每一项,并将每一项信息依次写入所述队列页表,还包括:
所述队列页表的每一项为8字节,低12位为该项映射的物理页数量,高52位为该项对应的初始物理页地址的高52位;
若所述物理页链表的项映射超过4096个物理页,则拆分为多个队列页表项进行存储。
4.根据权利要求1所述的基于远程直接内存访问的队列页表管理方法,其特征在于,所述方法还包括:
所述远程直接内存访问内核态驱动基于PCIe协议标准将所述队列页表的基地址和所述队列页表指针写入所述队列寄存器。
5.根据权利要求1所述的基于远程直接内存访问的队列页表管理方法,其特征在于,所述远程直接内存访问内核态驱动将所述队列页表的基地址写入队列寄存器,将队列页表指针写入所述队列寄存器,并设置初始值之后,所述方法还包括:
所述远程直接内存访问内核态驱动向所述远程直接内存访问用户态驱动返回队列创建完成信息;
所述远程直接内存访问用户态驱动接收所述队列创建完成信息,队列创建过程结束。
6.根据权利要求1所述的基于远程直接内存访问的队列页表管理方法,其特征在于,在队列创建完成之后,所述方法还包括:
所述远程直接内存访问内核态驱动判断所述队列页表项数量;
若大于等于两项,则将所述队列页表的第一项和第二项依次写入所述队列寄存器的第一缓存项和第二缓存项,并修改所述第一缓存项和所述第二缓存项的初始值;若小于两项,则将该项写入所述第一缓存项,并修改所述第一缓存项的初始值;
所述远程直接内存访问内核态驱动设置所述队列寄存器缓存项指针的初始值。
7.根据权利要求6所述的基于远程直接内存访问的队列页表管理方法,其特征在于,当当前所述缓存项指针指向所述第一缓存项,所述队列页表项大于等于两项时,所述远程直接内存访问网卡访问所述队列时,所述方法还包括:
所述远程直接内存访问网卡基于所述第一缓存项的物理地址发起直接内存访问读取队列基本块;
判断所述第一缓存项映射的物理页剩余长度;若所述剩余长度为一个队列基本块,则所述远程直接内存访问网卡发起队列页表项预取请求;并检查所述第二缓存项的有效位,若所述有效位为有效,则将当前所述缓存项指针指向所述第二缓存项,并初始化所述剩余长度。
8.根据权利要求7所述的基于远程直接内存访问的队列页表管理方法,其特征在于,若所述剩余长度为一个队列基本块,则所述远程直接内存访问网卡发起队列页表项预取请求,还包括:
基于当前所述缓存项指针发起所述队列页表项预取请求,以读取下一个页表项;
返回基于所述队列页表项预取请求得到的预取页表项,使用所述预取页表项替换已经消耗完的页表项。
9.一种基于远程直接内存访问的队列页表管理装置,其特征在于,所述装置应用于远程直接内存访问网卡,所述装置包括:
队列访问模块,用于实现各队列的读与写功能;
队列信息存储模块,用于存储队列页表的基地址、队列页表指针、第一缓存项的有效位值、第二缓存项的有效位值以及缓存项指针;
页表项缓存维护模块,用于接收并执行所述队列访问模块发起的队列页表项预取请求。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
CN202311641570.4A 2023-12-01 2023-12-01 一种基于远程直接内存访问的队列页表管理方法及装置 Pending CN117873921A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311641570.4A CN117873921A (zh) 2023-12-01 2023-12-01 一种基于远程直接内存访问的队列页表管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311641570.4A CN117873921A (zh) 2023-12-01 2023-12-01 一种基于远程直接内存访问的队列页表管理方法及装置

Publications (1)

Publication Number Publication Date
CN117873921A true CN117873921A (zh) 2024-04-12

Family

ID=90587273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311641570.4A Pending CN117873921A (zh) 2023-12-01 2023-12-01 一种基于远程直接内存访问的队列页表管理方法及装置

Country Status (1)

Country Link
CN (1) CN117873921A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221758A (zh) * 2019-09-30 2020-06-02 华为技术有限公司 处理远程直接内存访问请求的方法和计算机设备
CN114116524A (zh) * 2020-08-25 2022-03-01 华为技术有限公司 一种创建安全页表及访问内存的方法及装置
CN114201317A (zh) * 2021-12-16 2022-03-18 北京有竹居网络技术有限公司 数据传输方法、装置、存储介质及电子设备
CN115729880A (zh) * 2022-11-28 2023-03-03 北京百度网讯科技有限公司 数据处理方法、装置、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221758A (zh) * 2019-09-30 2020-06-02 华为技术有限公司 处理远程直接内存访问请求的方法和计算机设备
CN114116524A (zh) * 2020-08-25 2022-03-01 华为技术有限公司 一种创建安全页表及访问内存的方法及装置
CN114201317A (zh) * 2021-12-16 2022-03-18 北京有竹居网络技术有限公司 数据传输方法、装置、存储介质及电子设备
CN115729880A (zh) * 2022-11-28 2023-03-03 北京百度网讯科技有限公司 数据处理方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
US9116800B2 (en) Block-based storage device with a memory-mapped interface
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
US7275123B2 (en) Method and apparatus for providing peer-to-peer data transfer within a computing environment
US20150089121A1 (en) Managing A Cache On Storage Devices Supporting Compression
CN114860329B (zh) 动态一致性偏置配置引擎及方法
CN112632069B (zh) 哈希表数据存储管理方法、装置、介质和电子设备
KR20190033284A (ko) PCIe P2P 접속된 스토리지 장치들 사이의 데이터 전송 방법 및 시스템
US7103747B2 (en) Memory table and memory manager for use in managing memory
EP4439312A1 (en) Data storage method and system, storage access configuration method and related device
EP3115904B1 (en) Method for managing a distributed cache
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
US7451259B2 (en) Method and apparatus for providing peer-to-peer data transfer within a computing environment
US6256711B1 (en) Method for purging unused data from a cache memory
CN113296691B (zh) 数据处理系统、方法、装置以及电子设备
CN117591023B (zh) 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置
CN113448897A (zh) 适用于纯用户态远端直接内存访问的数组结构及优化方法
CN117873921A (zh) 一种基于远程直接内存访问的队列页表管理方法及装置
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
JP2002024007A (ja) プロセッサシステム
CN118331512B (zh) 一种基于存储控制卡的处理方法和装置
US9424227B2 (en) Providing byte enables for peer-to-peer data transfer within a computing environment
US11954037B2 (en) Memory address allocation and cache mapping to retain data in cache
KR102725214B1 (ko) 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법
CN117917649A (zh) 数据处理方法、装置、芯片以及计算机可读存储介质

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