本公开涉及通信,尤其是涉及一种内存管理方法、装置、设备及机器可读存储介质。
背景技术:
1、dma(direct memory access,直接内存访问)是一种计算机设备与内存直接进行数据传输的方式,不需要cpu的干预,io设备直接和内存进行数据交换,提高了数据的传输效率。rdma(remote direct memory access,远程直接内存访问)是一种高效的网络通信协议,可以在不占用cpu周期的情况下将数据直接从一个计算机的内存传输到另一个计算机的内存。numa(non-uniform memory access,非一致性内存访问架构)是一种多处理器体系结构,其中每个处理器都有自己的本地内存和与其他处理器共享的全局内存。die,一个处理器芯片的单位,通常包含多个物理核心、高速缓存、内存控制器以及其他的资源。
2、与dma一样,rdma的工作流程中,首先需要将要发送或接收的数据从应用层内存复制到物理内存中,这个过程需要保证数据在物理内存上是连续的,否则就需要进行额外的数据复制操作,这会大大降低rdma的性能。因此,在使用rdma时,应用程序需将数据存储在一块连续的物理内存区域中,一般情况下是通过锁定内存页(lock pages in memory)来保证一块连续的物理内存。同时,应用程序还需要保证发送和接收端的物理内存都是连续的,并且需要预先告知rdma引擎内存的地址和大小等信息。
3、当前在一些cache场景下需要使用超1g甚至比128g更大的大块连续物理内存,而现有内存管理方式无法同时满足dma的物理内存连续和连续区间大容量的两个需求。此外在numa架构的平台系统下,4k分页内存管理机制会出现较高的tlb miss以及跨die访问内存,严重影响性能。
技术实现思路
1、有鉴于此,本公开提供一种内存管理方法、装置及电子设备、机器可读存储介质,以至少改善上述技术问题之一。
2、具体地技术方案如下:
3、本公开提供了一种内存管理方法,应用于服务器,所述方法包括:根据内存配置参数,标记物理内存上指定区段为预留内存区段,所述预留内存区段为物理连续的内存区域;执行内核启动,解析预留内存区段的标记,内存初始化页表阶段跳过使用被标记的预留内存区段;将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址;所述内存配置参数是预先配置用于配置预留内存区段的参数,所述虚拟可用地址用于直接内存访问进程根据虚拟可用地址访问内存池。
4、作为一种技术方案,所述服务器包括numa架构多处理器,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,还包括:根据numa架构为每一个处理器分别生成内存池,并绑定处理器与相应的内存池,以使由一个处理器处理的进程优先使用与该处理器绑定的内存池的内存空间。
5、作为一种技术方案,所述根据numa架构为每一个处理器分别生成内存池,还包括:将内存池按照第一预设规模分割成若干内存组块,建立内存组块的内存映射表;按照第二预设规模将每个内存组块分割成若干内存块,对内存块以链表结构进行分类管理;其中,第一预设规模大于第二预设规模,且第一预设规模的大小是第二预设规模的2的正整数次幂倍,第二预设规模是4kb的2的正整数次幂倍。
6、作为一种技术方案,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,包括:使用/dev/mem设备文件和mmap系统调用,所述将预留内存区段映射至直接内存访问进程空间生成内存池并配置地址。
7、本公开同时提供了一种内存管理装置,应用于服务器,所述装置包括:第一模块,用于根据内存配置参数,标记物理内存上指定区段为预留内存区段,所述预留内存区段为物理连续的内存区域;第二模块,用于执行内核启动,解析预留内存区段的标记,内存初始化页表阶段跳过使用被标记的预留内存区段;第三模块,用于将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址;所述内存配置参数是预先配置用于配置预留内存区段的参数,所述虚拟可用地址用于直接内存访问进程根据虚拟可用地址访问内存池。
8、作为一种技术方案,所述服务器包括numa架构多处理器,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,还包括:根据numa架构为每一个处理器分别生成内存池,并绑定处理器与相应的内存池,以使由一个处理器处理的进程优先使用与该处理器绑定的内存池的内存空间。
9、作为一种技术方案,所述根据numa架构为每一个处理器分别生成内存池,还包括:将内存池按照第一预设规模分割成若干内存组块,建立内存组块的内存映射表;按照第二预设规模将每个内存组块分割成若干内存块,对内存块以链表结构进行分类管理;其中,第一预设规模大于第二预设规模,且第一预设规模的大小是第二预设规模的2的正整数次幂倍,第二预设规模是4kb的2的正整数次幂倍。
10、作为一种技术方案,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,包括:使用/dev/mem设备文件和mmap系统调用,所述将预留内存区段映射至直接内存访问进程空间生成内存池并配置地址。
11、本公开同时提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,处理器执行所述机器可执行指令以实现前述的内存管理方法。
12、本公开同时提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现前述的内存管理方法。
13、本公开提供的上述技术方案至少带来了以下有益效果:
14、根据业务需求,预先配置参数,在服务器内核启动前根据参数预留指定大小的物理内存区段以不被内核启动时内存初始化页表使用,然后将预留的连续的物理内存区段映射成内存池并配置地址,从而使得dma、rdma业务可以获得连续的大容量物理内存区段,以满足相应的业务需求。
1.一种内存管理方法,其特征在于,应用于服务器,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述服务器包括numa架构多处理器,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,还包括:
3.根据权利要求2所述的方法,其特征在于,所述根据numa架构为每一个处理器分别生成内存池,还包括:
4.根据权利要求1所述的方法,其特征在于,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,包括:
5.一种内存管理装置,其特征在于,应用于服务器,所述装置包括:
6.根据权利要求5所述的装置,其特征在于,所述服务器包括numa架构多处理器,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,还包括:
7.根据权利要求6所述的装置,其特征在于,所述根据numa架构为每一个处理器分别生成内存池,还包括:
8.根据权利要求5所述的装置,其特征在于,所述将预留内存区段映射至直接内存访问进程空间生成内存池,并为内存池配置虚拟可用地址,包括:
9.一种电子设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令,以实现权利要求1-4任一所述的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-4任一所述的方法。