CN115729849B - 内存管理方法及计算设备 - Google Patents
内存管理方法及计算设备 Download PDFInfo
- Publication number
- CN115729849B CN115729849B CN202211376351.3A CN202211376351A CN115729849B CN 115729849 B CN115729849 B CN 115729849B CN 202211376351 A CN202211376351 A CN 202211376351A CN 115729849 B CN115729849 B CN 115729849B
- Authority
- CN
- China
- Prior art keywords
- memory
- extended
- computing device
- numa node
- extended memory
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 781
- 238000007726 management method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000012546 transfer Methods 0.000 claims description 6
- 230000002085 persistent effect Effects 0.000 claims description 5
- SQEHCNOBYLQFTG-UHFFFAOYSA-M lithium;thiophene-2-carboxylate Chemical compound [Li+].[O-]C(=O)C1=CC=CS1 SQEHCNOBYLQFTG-UHFFFAOYSA-M 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 7
- 239000004606 Fillers/Extenders Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种内存管理方法和计算设备,该方法应用于计算设备,该计算设备包括至少一个扩展内存,该方法具体包括:当检测到第一扩展内存接入时,识别该第一扩展内存的存储类型,该第一扩展内存为该至少一个扩展内存中的任意一个;若该第一扩展内存为DRAM,则将该第一扩展内存作为第一NUMA节点的内存;其中,第一NUMA节点为任意一个具有CPU的NUMA节点;若该第一扩展内存为PMEM或SCM,则新增第二NUMA节点,并将该第一扩展内存作为该第二NUMA节点的内存,其中所述第二NUMA节点无CPU。通过根据扩展内存的不同存储类型实行不同的管理方式和分配方式,可以充分、灵活地发挥不同存储类型的扩展内存的特性优势,尽可能地提高内存带宽。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种内存管理方法及计算设备。
背景技术
计算快速链路(computer express link,CXL)协议是由英特尔推出的一种开放性互联协议,能够让中央处理器(central processing unit,CPU)与图形处理器(graphicprocessing unit,GPU)、现场可编程逻辑门阵列(field programmable gate array,FPGA)或其他加速器之间实现高速高效的互联,从而满足高性能异构计算的要求。CXL协议支持计算设备的CPU通过内存语义访问设备附加内存,同时无需占用计算设备的内存插槽。
在CXL协议推出后,业界纷纷将CXL协议应用于内存扩展场景,帮助服务器、数据中心以及其他计算设备拓展其内存容量;同时提高内存带宽,以提高CPU访问各个内存的速度。
目前,计算设备在检测到有扩展内存通过CXL协议接入系统后,会将其作为非统一内存访问架构(non-uniform memory access,NUMA)下的一个独立节点,以使得CPU能够对该扩展内存进行访问。
然而,在CXL协议支持多种存储类型的内存进行扩展的情况下,统一将扩展内存作为独立NUMA节点的管理方式无法发挥出不同存储类型内存的特性优势。
发明内容
本申请提供一种内存管理方法及计算设备,能够在内存扩展场景中,灵活地根据内存存储类型的不同而选择不同的管理方式,尽可能地提高内存带宽。
第一方面,本申请提供了一种内存管理方法,应用于计算设备,该计算设备包括至少一个扩展内存;该方法包括:
当检测到第一扩展内存接入时,识别该第一扩展内存的存储类型,该第一扩展内存为该至少一个扩展内存中的任意一个;若该第一扩展内存为动态随机存取存储器(dynamic random access memory,DRAM),则将该第一扩展内存作为第一非统一内存访问架构(non-uniform memory access,NUMA)节点的内存;其中,该第一NUMA节点为任意一个具有CPU的节点;若该第一扩展内存为持久化内存(persistent memory,PMEM)或存储级内存(storage-class memory,SCM),则新增第二NUMA节点,并将该第一扩展内存作为该第二NUMA节点的内存,其中该第二NUMA节点无CPU。
本申请中,计算设备在检测到存储类型为DRAM的第一扩展内存时将其作为第一NUMA节点的内存,可以充分发挥DRAM的高带宽低时延的特性,提高CPU访问扩展内存的速度;在检测到存储类型为PMEM或SCM时将其第二NUMA节点的内存,将相对低带宽高时延的扩展内存添加至无CPU的第二NUMA节点管理,以便在慢速处理需求时调用分配。通过根据扩展内存的不同存储类型实行不同的管理方式和分配方式,可以充分、灵活地发挥不同存储类型的扩展内存的特性优势,尽可能地提高内存带宽。
在一种可能的实现中,该将该第一扩展内存作为第一NUMA节点的内存,具体包括:确定该第一扩展内存的地址范围;将该地址范围添加至该第一NUMA节点的内存。
在一种可能的实现中,该将该第一扩展内存作为该第二NUMA节点的内存,具体包括:确定该第一扩展内存的地址范围;将该地址范围添加至该第二NUMA节点的内存。
本申请中,通过先确定第一扩展内存被统一编址后的地址范围,再将该地址范围添加到NUMA节点中进行管理,使得CPU能够通过访问该地址范围实现对第一扩展内存的直接访问。
在一种可能的实现中,该计算设备还包括内存扩展器,该至少一个扩展内存包括N个通过该内存扩展器接入该计算设备的第二扩展内存,该第一扩展内存为N个该第二扩展内存中的任意一个,N大于1;该确定该第一扩展内存的地址范围包括:通过UEFI固件获取该N个第二扩展内存所对应的N段地址范围;从该内存扩展器处获取该N个第二扩展内存的容量;根据N个该容量和该N段地址范围,确定该第一扩展内存的地址范围。
本申请中,通过获取N个第二扩展内存对应的N段地址范围和每个第二扩展内存的容量后,可以根据容量和地址范围之间的匹配关系,识别出每个第二扩展内存对应的地址范围,从而确定第一扩展内存的地址范围。
在一种可能的实现中,该根据N个该容量和该N段地址范围,确定该第一扩展内存的地址范围,具体包括:若该第一扩展内存与该N个第二扩展内存中其他扩展内存的容量均不相同,则根据该第一扩展内存的容量匹配该N段地址范围,确定该第一扩展内存的地址范围;或者,若该第一扩展内存与该N个第二扩展内存中的至少一个该扩展内存的容量相同,则获取该N个第二扩展内存的内存编号;根据N个该内存编号的先后顺序和该N段地址范围的先后顺序,以及该第一扩展内存的内存编号,确定该第一扩展内存的地址范围。
本申请中,通过根据容量直接匹配地址范围,以及根据第二扩展内存的内存编号匹配第二扩展内存的地址范围两种方式,使得计算设备能够在第一扩展内存与该其他扩展内存的不同容量关系下均能够准确地识别第一扩展内存的存储类型。
在一种可能的实现中,该第一NUMA节点为该具有CPU的NUMA节点中与该第一扩展内存距离最近的NUMA节点。
本申请中,通过将该扩展内存作为一个内存分区添加至与该第一扩展内存距离最近的具有CPU的NUMA节点中,可以进一步提高CPU访问该扩展内存的速度,提高该NUMA节点中CPU的带宽,降低该CPU访问扩展内存的时延。
在一种可能的实现中,在该将该第一扩展内存作为该第二NUMA节点的内存之后,该方法还包括:将冷数据迁移到该第二NUMA节点的内存,热数据迁移到该具有CPU的NUMA节点的内存。
本申请中,通过将活动不频繁,不会被经常访问的冷数据迁移到距离CPU较远的第二NUMA节点的内存,利用PMEM和SCM容量大的特性,可以为活动频繁,被经常访问的热数据让出大量的空间;使得大量的热数据存储于延迟更低、带宽更高的具有CPU的NUMA节点的内存中,CPU与热数据存储的距离更近,进而提高CPU对热数据的访问速度和对高频使用热数据的业务的响应速度。
在一种可能的实现中,该扩展内存包括PMEM和SCM中的至少一者,以及DRAM;在将该DRAM作为该第一NUMA节点的内存,且将PMEM和SCM中的至少一者作为该第二NUMA节点的内存之后,该方法还包括:将冷数据迁移到该第二NUMA节点的内存,将热数据迁移到该第一NUMA节点的内存。
在一种可能的实现中,该计算设备包括本地内存;该至少一个扩展内存包括该DRAM;在该将该第一扩展内存作为第一NUMA节点的内存之后,该方法还包括:接收应用发送的内存申请;若本地内存的占用率小于占用阈值,则根据该内存申请将该本地内存分配给该应用;若该本地内存的占用率大于该占用阈值且小于100%,则根据该内存申请,按照可用的该本地内存和可用的该DRAM的比例,将该本地内存与该DRAM分配给该应用。
在一种可能的实现中,该至少一个扩展内存还包括该PMEM和该SCM中的至少一者;在该接收应用发送的内存申请之后,该方法还包括:若该本地内存和该DRAM的占用率均为100%,则根据该内存申请将该PMEM和该SCM中的至少一者分配给该应用。
本申请中,通过根据本地内存的占用率情况选择不同的内存分配策略,从而能够充分利用本地内存和第一NUMA节点中的DRAM或HBM的高带宽低时延特性,尽可能地提高内存带宽,提高CPU对应用的响应速度和处理速度。
在一种可能的实现中,该至少一个扩展内存通过CXL协议与计算设备的处理器进行数据传输。
第二方面,本申请提供了一种计算设备,该计算设备包括处理器和至少一个扩展内存;
该处理器用于在检测到第一扩展内存接入时,识别该第一扩展内存的存储类型,该第一扩展内存为该至少一个扩展内存中的任意一个;该处理器还用于在该第一扩展内存为DRAM时,将该第一扩展内存作为第一NUMA节点的内存;其中,该第一NUMA节点为任意一个具有CPU的节点;该处理器还用于在该第一扩展内存为PMEM或SCM时,新增第二NUMA节点,并将该第一扩展内存作为该第二NUMA节点的内存,其中该第二NUMA节点无CPU。
在一种可能的实现中,该处理器具体用于在该第一扩展内存为DRAM时,确定该第一扩展内存的地址范围;将该地址范围添加至该第一NUMA节点的内存。
在一种可能的实现中,该处理器具体用于在该第一扩展内存为PMEM或SCM时,确定该第一扩展内存的地址范围;将该地址范围添加至该第二NUMA节点的内存。
在一种可能的实现中,该计算设备还包括内存扩展器,该至少一个扩展内存包括N个通过该内存扩展器接入该计算设备的第二扩展内存,该第一扩展内存为N个该第二扩展内存中的任意一个,N大于1;该处理器具体用于:通过UEFI固件获取该N个第二扩展内存所对应的N段地址范围;从该内存扩展器处获取该N个第二扩展内存的容量;根据N个该容量和该N段地址范围,确定该第一扩展内存的地址范围。
在一种可能的实现中,该处理器具体用于在该第一扩展内存与该N个第二扩展内存中其他扩展内存的容量均不相同时,根据该第一扩展内存的容量匹配该N段地址范围,确定该第一扩展内存的地址范围;或者,该处理器具体用于在该第一扩展内存与该N个第二扩展内存中的至少一个该扩展内存的容量相同时,获取该N个第二扩展内存的内存编号;根据N个该内存编号的先后顺序和该N段地址范围的先后顺序,以及该第一扩展内存的内存编号,确定该第一扩展内存的地址范围。
在一种可能的实现中,该第一NUMA节点为该具有CPU的NUMA节点中与该第一扩展内存距离最近的NUMA节点。
在一种可能的实现中,该处理器还用于将冷数据迁移到该第二NUMA节点的内存,热数据迁移到该具有CPU的NUMA节点的内存。
在一种可能的实现中,该扩展内存包括PMEM和SCM中的至少一者,以及DRAM;该处理器还用于将冷数据迁移到该第二NUMA节点的内存,将热数据迁移到该第一NUMA节点的内存。
在一种可能的实现中,该计算设备包括本地内存;该至少一个扩展内存包括该DRAM;该处理器还用于:接收应用发送的内存申请;若该本地内存的占用率小于占用阈值,则根据该内存申请将该本地内存分配给该应用;若该本地内存的占用率大于该占用阈值且小于100%,则根据该内存申请,按照可用的该本地内存和可用的该DRAM的比例,将该本地内存与该DRAM分配给该应用。
在一种可能的实现中,该至少一个扩展内存还包括该PMEM和该SCM中的至少一者;该处理器还用于:若该本地内存和该DRAM的占用率均为100%,则根据该内存申请将该PMEM和该SCM中的至少一者分配给该应用。
在一种可能的实现中,该至少一个扩展内存通过CXL协议与该处理器进行数据传输。
第三方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如第一方面所述的方法。
上述第二方面和第三方面提供的方案,用于实现或配合实现上述第一方面提供的方法,因此可以与第一方面达到相同或相应的有益效果,此处不再进行赘述。
附图说明
图1是本申请实施例提供的一种内存扩展场景的系统架构图;
图2是本申请实施例提供的一种CXL协议内存管理系统的结构示意图;
图3是本申请实施例提供的一种内存管理方法的流程示意图;
图4是本申请实施例提供的一种识别扩展内存地址范围方法的流程示意图;
图5是本申请实施例提供的一种应用请求分配内存的流程示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着人工智能和大数据的发展,催生出了爆炸性增长的数据量,服务器和数据中心等计算设备需要更大容量的内存以及处理速度更快的处理器,以实现各种业务需求;而在处理器技术的不断发展中,CPU核心数迅速增长,但是CPU封装管脚有限,以及计算设备主板布局的限制,内存通道难以持续增长;在数据密集型工作处理的场景中,CPU核心往往需要等待内存数据加载。可知,内存带宽限制限制了CPU的处理速度,计算设备需要更大的内存容量和内存带宽。
计算快速链路(computer express link,CXL)协议是由英特尔推出的一种开放性互联协议,能够让CPU与GPU、FPGA或其他加速器之间实现高速高效的互联,从而满足高性能异构计算的要求。CXL协议支持计算设备的CPU通过内存语义访问接入计算设备的其他设备的附加内存,同时无需占用计算设备的内存插槽。
也就是说,支持CXL协议的设备(下文称为“CXL设备”)可以作为一个扩展内存接入到计算设备上,计算设备可以像通过计算设备内的内存通道访问本地内存一样,通过CXL协议访问该CXL设备的内存。具体地,CXL协议支持动态随机存取存储器(dynamic randomaccess memory,DRAM)、高带宽内存(high bandwidth memory,HBM)、持久化内存(persistent memory,PMEM)和存储级内存(storage-class memory,SCM)作为扩展内存。
由此,计算设备可以通过CXL协议,以设置了内存的CXL设备作为扩展内存的方式,扩展内存容量和内存带宽,解决上述的需求问题。
具体可以参阅图1,图1是本申请提供的一种内存扩展场景的系统架构图,该系统架构主要应用于计算设备100,该计算设备100可以为服务器、数据中心或其他具有内存扩展需求的计算设备,本申请实施例对于图1所示的计算设备100的具体形式并不进行限定。如图1所示,计算设备100包括处理器110、内存插槽120、本地内存130、扩展内存140和内存扩展器150。
处理器110包括一个或多个CPU,用于根据应用需求对本地内存130、扩展内存140进行读写,或通过内存扩展器150和CXL协议对存储设备1502进行读写。
其中,本地内存130和扩展内存140通过内存插槽120接入计算设备100。
本地内存130为通过内存插槽120接入计算设备100的DRAM。
扩展内存140为通过内存插槽120接入计算设备100的PMEM或其他非DRAM存储类型的存储设备。可以理解的是,扩展内存140可以通过CXL协议与处理器进行数据传输。
内存扩展器150用于将存储设备1502接入计算设备100,并提供支持CXL协议的访问通道,使得处理器110能够通过CXL协议访问存储设备1502。也就是说,内存扩展器150通过CXL协议可以作为扩展内存接入到计算设备100中,从而将计算设备100的内存容量进行数量级上的提升,同时大大扩展了内存带宽。具体地,CXL协议允许计算设备100通过内存扩展器150将其内存容量提升至数十太字节(terabyte,TB),同时内存带宽提升至TB/每秒的数量级。
内存扩展器150包括控制器1501和存储设备1502,控制器1501用于识别接入内存扩展器150的存储设备1502,以及获取存储设备1502中的内存的介质属性和容量等信息并保存。
其中,内存扩展器150为设置有内存的CXL设备,存储设备1502为设置于CXL设备中的一个或多个存储器。可以理解的是,在图1所示实施例中,处理器110和存储设备1502之间数据传输采用的CXL协议仅为举例而非限定,处理器110也可以通过其他能够支持DRAM、PMEM和SCM作为扩展内存的协议与存储设备1502进行数据传输。
其中,内存扩展器150具体可以是GPU、FPGA或其他加速器。存储设备1502可以为DRAM、PMEM或SCM。可以理解的是,随着技术发展,存储设备1502还可以是其他存储类型的内存或硬盘。
需要说明的是,在具体实现中,计算设备100可以是任何包括图1中类似结构的设备。本申请实施例不限定计算设备100的具体组成结构。此外,图1中示出的组成结构并不构成对计算设备100的限定,除图1所示的部件之外,计算设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如图1中内存扩展器150和计算设备100的位置关系仅为示例,内存扩展器150也可以设置于在计算设备100之外。
然而,目前的内存管理方法较为单一,对于不同存储类型的存储设备1502,计算设备100在系统初始化时,都会新增一个非统一内存访问架构(non-uniform memory access,NUMA)节点,并将存储设备1502作为该新增NUMA节点的内存。
因此,当扩展内存是DRAM时,处理器110访问该新增NUMA节点中的扩展内存时需要跨越不同的NUMA节点,时延较高。
可知,此时亟需一种能够适应CXL协议下的内存扩展场景,针对不同存储类型的扩展内存进行灵活管理的内存管理方法,以尽可能地提高内存带宽。
在介绍本申请实施例提供的内存管理方法之前,在图1所示的计算设备100的基础上,下文将进一步介绍该可以用于实施该内存管理方法的计算设备。可以先参阅图2,图2是本申请实施例提供的一种CXL协议内存管理系统的结构示意图,该计算设备200包括处理器210,内存插槽220,本地内存230,扩展内存240,内存扩展器250,统一可扩展固件接口(unified extensible firmware interface,UEFI)固件260,操作系统(operatingsystem,OS)270和内存分配器280。
可以理解的是,图2中的实线框代表硬件,虚线框代表软件。
其中,计算设备200采用NUMA架构。在计算设备200的系统初始化阶段,计算设备200将处理器210的一个或多个CPU和本地内存230分配给一个或多个NUMA节点。
处理器210包括扩展内存地址识别模块2101和扩展内存介质属性识别模块2102,该两个模块用于识别扩展内存240和扩展内存2501的存储类型,其中,扩展内存240为通过内存插槽220接入计算设备200的非DRAM内存,扩展内存2501为通过内存扩展器250接入计算设备200的存储设备。可以理解的是,下文描述中的扩展内存,既可以是扩展内存240,也可以是扩展内存2501。
其中,处理器210与扩展内存可以通过CXL协议进行数据传输。
其中,UEFI固件260为存储UEFI代码的存储设备,具体可以是计算设备200的主板上的南桥芯片,也可以是计算设备200中的其他存储设备。
其中,接入计算设备200的扩展内存240和扩展内存2501会被识别为softreserved属性;扩展内存地址识别模块2101用于在内存初始化阶段,识别属性为softreserved的扩展内存。在识别出扩展内存后,UEFI固件260用于通过getmemorymap()函数获取扩展内存的内存属性、内存容量大小和整体的连续地址范围,并将该扩展内存的内存信息、本地内存的内存信息,以及内存布局上报给OS270,OS270根据内存属性将本地内存和扩展内存的内存信息和整体内存地图记录于内核的E820表,再进一步将这些内存信息添加到内存分配器280中。
扩展内存地址识别模块2101还用于通过UEFI固件260获取每个扩展内存对应的地址范围。可以理解的是,该地址范围为每个扩展内存经过计算设备200统一编址的地址范围。
其中,扩展内存地址识别模块2101具体获取每个扩展内存对应的地址范围的方法可以参考下文中图4所示实施例部分的步骤401中的相关说明,此处不再赘述。
可以理解的是,扩展内存地址识别模块2101并不能感知内存的存储类型,需要进一步区分每段地址范围对应的扩展内存的存储类型。
可以理解的是,计算设备200可以直接获取通过内存插槽220接入的扩展内存240的存储类型和对应的地址范围。
其中,扩展内存介质属性识别模块2102用于识别每个扩展内存2501的存储类型和容量。
其中,扩展内存地址识别模块2101具体获取每个扩展内存对应的存储类型和容量的方法可以参考下文中图3所示实施例部分的步骤301中的相关说明,此处不再赘述。
处理器210还用于根据容量确定每个扩展内存的地址范围,再通过将扩展内存的地址范围分配给NUMA节点的方式,将不同存储类型的扩展内存作为不同NUMA节点的内存,以进行灵活管理。
具体地,对于存储类型为DRAM的扩展内存时,处理器210还用于将这些扩展内存作为具有CPU的NUMA节点的内存。
对于存储类型为PMEM或SCM的扩展内存,处理器210还用于将这些扩展内存作为新增的一个或多个NUMA节点的内存。
内存分配器280用于在计算设备200对本地内存和扩展内存进行统一管理后,根据应用的内存需求向OS270的内核发起内存申请。
OS270的内核用于根据内存申请将本地内存230和扩展内存分配给应用。
请参阅图3,图3为本申请实施例提供的一种内存管理方法的流程示意图,该方法应用于图1所示场景或图2所示系统中的计算设备,具体包括步骤301至303。
301、当检测到第一扩展内存接入时,识别第一扩展内存的存储类型。
其中,该计算设备包括至少一个扩展内存,该第一扩展内存为该至少一个扩展内存中的任意一个。也即计算设备在检测到有一个或多个扩展内存接入时,对于该一个或多个扩展内存,可以依次作为第一扩展内存执行步骤301至303。
其中,扩展内存是指除了计算设备的本地内存外,通过内存插槽或内存扩展器接入计算设备的内存,具体可以是通过内存插槽接入的PMEM或SCM,也可以是通过内存扩展器接入的DRAM、PMEM或SCM。
在一种可能的实现中,扩展内存与计算设备可以通过CXL协议进行数据传输。为便于理解和描述简洁,下文将以扩展内存与计算设备通过CXL协议进行数据传输这一可能实现进行描述。可以理解的是,此为举例而非限定,在本申请实施例采用其他可能的协议进行扩展内存和计算设备的数据传输时,可以适应性地进行变化。
具体地,CXL协议中的CXL.memory协议可以支持计算设备像访问本地内存一样访问CXL设备的内存。
其中,扩展内存的存储类型包括DRAM、PMEM和SCM。具体地,可以将该扩展内存的存储类型分为两组,一组是高带宽且低延迟的DRAM,举例来说,DRAM的延迟在15-100ns范围内,内存带宽则达到了2.1GB/s(单通道DDR266)-90GB/s(双通道DDR5-6400)的范围;其中,由垂直堆叠在一起的DRAM芯片组合而成的HBM第三代的内存带宽可以达到800GB/s,延迟在100-200ns内。另一组则是相对来说低带宽且高延迟的的PMEM和SCM,举例来说,PMEM的延迟在250ns-500ns范围内,带宽为2GB/s。
可以理解的是,DRAM包括HBM。
可以理解的是,当技术进一步发展,出现新的存储类型的内存,或出现新的协议能够支持更多存储类型的内存扩展时,本申请实施例的方法能够依照上述的逻辑,将可能接入计算设备的扩展内存的存储类型进行区分,相对来说高带宽且低延迟的扩展内存和相对来说低带宽和高延迟的两组扩展内存分别进行更精细化地管理,扬长避短,充分利用不同存储类型内存的优势和特性。
其中,计算设备在上电启动时的内存初始化阶段,将检测是否有扩展内存接入。
可以理解的是,当扩展内存为通过计算设备的内存插槽接入计算设备的内存时,计算设备可以直接确定该扩展内存的存储类型、容量和地址范围。
而对于通过内存扩展器接入的扩展内存,在该扩展内存接入到计算设备之后,如果没有相应的配置,计算设备会将该扩展内存和对应的内存扩展器作为一个整体的普通设备接入。在没有将扩展内存识别出来的情况下,计算设备不能对该扩展内存进行统一编址和直接访问。
因此,计算设备需要识别通过内存扩展器接入的扩展内存,为了便于描述,可以将通过内存扩展器接入的扩展内存称为第二扩展内存。需要说明的是,通过内存扩展器接入的第一扩展内存也可以被称为第二扩展内存。
其中,计算设备的处理器包括扩展内存介质属性识别模块和扩展内存地址识别模块。
具体地,在扩展内存地址识别模块识别出属性为soft reserved的扩展内存后,若该扩展内存为通过内存扩展器接入的第二扩展内存,则扩展内存介质属性识别模块可以通过对应内存扩展器的驱动程序,以及CXL协议中的mailbox机制,向该内存扩展器发送identify指令,获取该内存扩展器对第二扩展内存的描述,这部分描述包含第二扩展内存的存储类型和容量大小。
若该第一扩展内存为DRAM,则执行步骤302。
若该第一扩展内存为PMEM或SCM,则执行步骤303。
302、将该第一扩展内存作为第一非统一内存访问架构(non-uniform memoryaccess,NUMA)节点的内存。
其中,计算设备采用NUMA对处理器访问存储器的行为进行管理。
其中,第一NUMA节点为任意一个具有CPU的NUMA节点。
可以理解的是,计算设备在系统初始化时,先将处理器的一个或多个CPU以及本地内存分配给一个或多个NUMA节点,这些NUMA节点的每个NUMA节点均包含CPU和一部分本地内存。
在一种可能的实现中,计算设备可以先确定该第一扩展内存的地址范围,再将该地址范围添加至第一NUMA节点,以将该第一扩展内存挂载于该第一NUMA节点。
如前所述,当该第一扩展内存为通过内存插槽接入计算设备的扩展内存时,计算设备可以直接确定该第一扩展内存的地址范围。因此下文将对第一扩展内存为通过内存扩展器接入的第二扩展内存的情况进行说明。
可以参阅图4,图4为本申请实施例提供的一种扩展内存地址范围的确定方法的流程示意图,应用于如图2所示系统中的计算设备,具体包括步骤401至406。
其中,每个内存扩展器可以连接一个或多个第二扩展内存。
可以理解的是,当扩展内存的数量为1时,扩展内存地址识别模块获取得到的地址范围即为扩展内存介质属性识别模块所识别到的扩展内存的地址范围。因此,图4所示实施例中的方法主要为针对多个第二扩展内存的情况下,对于该多个第二扩展内存中的第一扩展内存的地址范围的确定。实施例中以接入计算设备的第二扩展内存的数量为N进行说明,N大于1。
401、扩展内存地址识别模块通过UEFI固件获取N个第二扩展内存所对应的N段地址范围。
其中,扩展内存地址识别模块可以先识别出属性为soft reserved的第二扩展内存,再通过UEFI固件获取所有扩展内存对应的连续地址范围;最后通过UEFI固件所提供的系统资源关联表(system resource affinity table,SRAT)和系统位置信息表(systemlocality information table,SLIT)判断每个第二扩展内存所对应的地址范围。
具体地,UEFI固件还用于获取计算设备的处理器和内存的信息,并将处理器的信息,以及本地内存和扩展内存的信息记录于SRAT表中;并将计算设备中的各个NUMA节点之间的距离记录于SLIT表,在表中由数组node_distance[]记录。
具体地,扩展内存地址识别模块可以通过SRAT表和SLIT表这两张表中的信息确定不同第二扩展内存的地址分割点,进而确定每个第二扩展内存所对应的地址范围。
可以理解的是,当该至少一个扩展内存包括从内存插槽接入的扩展内存时,计算设备可以先获取这些扩展内存的地址范围;在将这些扩展内存的地址范围从该连续地址范围中排除后,再确定每个第二扩展内存的地址范围。
402、扩展内存介质属性识别模块从内存扩展器处获取该N个第二扩展内存的容量。
其中,具体获取第二扩展内存的容量的方法与图3所示的实施例中的步骤301中的相关描述类似,此处不再赘述。
其中,计算设备可以先执行步骤401再执行步骤402,也可以先执行步骤402再执行步骤401,还可以同时执行步骤401与402。本申请实施例对步骤401和步骤402的执行顺序不作具体限定。
计算设备在获取该N个第二扩展内存所对应的N段地址范围,以及对应的容量后,可以执行步骤403至406,根据该二者确定每个第二扩展内存对应的地址范围,从而确定第一扩展内存的地址范围。
403、计算设备判断该第一扩展内存的容量和该N个第二扩展内存中的其他扩展内存的容量是否相同。
若均不相同,则执行步骤404。
若与该N个第二扩展内存中的至少一个的容量相同,则执行步骤405至406。
404、计算设备根据该第一扩展内存的容量匹配该N段地址范围,确定该第一扩展内存的地址范围。
其中,计算设备可以根据第二扩展内存的容量与该N段地址范围进行匹配,确定每段地址范围对应的容量,进而确定每个第二扩展内存的地址范围。
例如,有两个扩展内存接入计算设备,扩展内存地址识别模块获取得到地址范围A和地址范围B,其中地址范围A远小于地址范围B;扩展内存介质属性识别模块识别到两个扩展内存分别是16G的DRAM和128G的PMEM;计算设备再进行地址范围和容量的匹配,确定地址范围A能够映射16G的存储空间,地址范围B能够映射128G的存储空间,最后可以确定存储类型为DRAM的扩展内存对应的地址范围为A,存储类型为PMEM的扩展内存对应的地址范围为B。
可以理解的是,执行步骤404的过程中,对于第一扩展内存,计算设备可以根据第一扩展内存的容量确定对应的地址范围;而对于接入计算设备的N个第二扩展内存,计算设备可以在确定容量和地址范围的对应关系后,依次将第二扩展内存作为第一扩展内存,确定每个第二扩展内存的地址范围。
405、计算设备获取该N个第二扩展内存的内存编号。
其中,若扩展内存的容量相同,则其对应的地址范围大小也相同,此时可以根据扩展内存在计算设备的系统中的内存编号确定该N个第二扩展内存和该N段地址范围的对应关系。
其中,内存编号为计算设备检测到内存时确定的编号。
其中,计算设备可以从SRAT表中获取每个第二扩展内存的内存编号。
406、计算设备根据N个内存编号的先后顺序和该N段地址范围的先后顺序,以及第一扩展内存的内存编号,确定该第一扩展内存的地址范围。
其中,该地址范围为步骤401中计算设备获取的地址范围,经过计算设备的统一编址;可以理解的是,计算设备为扩展内存编址的先后顺序与内存编号的先后顺序一致。
在另一种可能的实现中,当该N个扩展内存的容量不完全相同时,容量与该N个扩展内存中其他扩展内存均不相同的第二扩展内存可以被称为第三扩展内存,容量与至少一个该其他扩展内存相同的第二扩展内存可以被称为第四扩展内存;计算设备可以先根据容量大小匹配确定第三扩展内存的地址范围,再根据内存编号的先后顺序和地址范围的先后顺序之间的对应关系确定第四扩展内存的地址范围;也可以先根据内存编号的先后顺序和地址范围的先后顺序之间的对应关系确定第四扩展内存的地址范围,再根据容量大小匹配确定第三扩展内存的地址范围。
其中,具体确定扩展内存地址范围的方法与上述图4所示的实施例中的步骤404至406类似,此处不再赘述。
当扩展内存为DRAM时,为了尽可能地发挥其低时延高带宽的优势,计算设备可以将其作为内存分区添加至第一NUMA节点。
通过将DRAM作为内存分区添加至具有CPU的第一NUMA节点,能够避免CPU跨越不同的NUMA节点访问该DRAM,降低CPU访问扩展内存的时延,发挥DRAM的低时延高带宽的优势。
在一种可能的实现中,该第一NUMA节点为该具有CPU的NUMA节点中与第一扩展内存距离最近的NUMA节点。
其中,第一扩展内存和第一NUMA节点之间的距离与第一NUMA节点中的CPU访问该第一扩展内存的速度有关,第一NUMA节点中的CPU访问第一扩展内存的速度越快,则说明二者的距离越短。
其中,当计算设备识别到该扩展内存为DRAM时,可以根据SRAT和SLIT表中记载的本地内存信息、扩展内存信息和各个NUMA节点之间的距离信息,确定与该扩展内存距离最近的第三NUMA节点;再将该扩展内存作为一个内存分区ZONE_EXMEM添加至该第三NUMA节点中。
具体地,在UEFI固件生成SLIT表时,会将检测到的扩展内存作为一个无CPU的NUMA节点的内存添加到SLIT表中,并根据各个CPU访问该扩展内存的速度计算得到各个第一NUMA节点和该扩展内存所在的NUMA节点之间的距离,最后将该距离记录在SLIT表的nodedistance数组中。在计算设备识别到该扩展内存为DRAM时,计算设备可以从SRAT表中找到该扩展内存的信息,并在SLIT表中找到各个第一NUMA节点和该扩展内存所在节点的距离,从而确定该第一NUMA节点中的第三NUMA节点。
可以理解的是,当计算设备将扩展内存作为第三NUMA节点的内存分区后,计算设备可以更改SLIT表中的信息。
通过将该扩展内存作为一个内存分区添加至该第三NUMA节点中,可以进一步缩短CPU到该扩展内存的距离,提高该第三NUMA节点中CPU的带宽,降低该CPU访问扩展内存的时延。
303、新增第二NUMA节点,并将该第一扩展内存作为该第二NUMA节点的内存。
其中,当扩展内存为PMEM或SCM时,为了充分利用其容量大但时延较高的特点,计算设备可以新增第二NUMA节点,并将该扩展内存作为该第二NUMA节点的内存;其中,第二NUMA节点无CPU。
计算设备在系统初始化时,会将处理器的一个或多个CPU和本地内存分配给一个或多个NUMA节点;当检测到有存储类型为PMEM或SCM的扩展内存时,计算设备会新增第二NUMA节点并将该扩展内存作为该第二NUMA节点的内存,该新增的第二NUMA节点中是没有分配CPU和本地内存的。可以理解的是,在后续的节点管理中也不会给该第二NUMA节点分配CPU和本地内存。
在一种可能的实现中,计算设备可以先确定该第一扩展内存的地址范围,再将该地址范围添加至第二NUMA节点,以将该第二扩展内存挂载于该第一NUMA节点。
可以理解的是,计算设备确定该第一扩展内存的地址范围的方法与前述图4所示实施例中的步骤401至406描述的方法内容类似,具体可以参照相关内容,此处不再赘述。
在将扩展内存加入计算设备系统的内存池后,计算设备可以根据应用的内存申请将扩展内存分配给运行于计算设备的各个应用。
在一种可能的实施例中,计算设备可以将冷数据迁移到第二NUMA节点的内存,将热数据迁移到具有CPU的NUMA节点的内存。可以理解的是,当计算设备识别有存储类型为DRAM的扩展内存时,也可以将热数据迁移到对应第一NUMA节点的内存。
通过将活动不频繁,不会被经常访问的冷数据迁移到距离CPU较远的第二NUMA节点的内存,利用PMEM和SCM容量大的特性,可以为活动频繁,被经常访问的热数据让出大量的空间;使得大量的热数据存储于延迟更低、带宽更高的第一NUMA节点的内存中,CPU与热数据存储的距离更近,进而提高CPU对热数据的访问速度和对高频使用热数据的业务的响应速度。
具体可以参阅图5,图5为本申请一个实施例提供的应用请求分配内存的流程示意图。
如图5所示,计算设备的软件应用在启动过程或运行过程中产生了内存需求,并将该内存需求通过内存分配器向计算设备的OS的内核发起内存申请;该内核接收到该内存申请后,将根据本地内存、扩展内存DRAM和扩展内存PMEM的占用率情况,通过内存与内核中NUMA节点中区域的映射关系,将本地内存、扩展内存DRAM和/或扩展内存PMEM分配给该软件应用。
其中,在图5所示实施例中,接入计算设备的扩展内存分别为扩展内存DRAM和扩展内存PMEM。
其中,计算设备的本地内存映射在内核中的内存分区为第一NUMA节点中的Zone_NORMAL,扩展内存DRAM映射在内核中的内存分区为第一NUMA节点中的Zone_EXMEM,扩展内存PMEM映射在内核中的区域为第二NUMA节点的内存。
在一种可能的实现中,计算设备的扩展内存均为DRAM;计算设备可以接收应用发送的内存申请;若本地内存的占用率小于占用阈值,则根据该内存申请将该本地内存分配给该应用;若该本地内存的占用率大于该占用阈值,则根据该内存申请,按照可用的本地内存与该扩展内存的比例,将该本地内存和该扩展内存分配给该应用。
其中,占用阈值可以为根据本地内存的内存容量确定的阈值。
例如,占用阈值为50%,本地内存为16G,扩展内存DRAM为16G;在本地内存的占用率达到50%时,计算设备接收到应用发送的需求为900M的内存申请,此时可用的本地内存为8G,扩展内存为16G,比例为1:2,计算设备可以按照该比例将300M本地内存和600M扩展内存分配给该应用。
在一种可能的实现中,计算设备的扩展内存由PMEM或SCM组成;计算设备可以接收应用发送的内存申请;若本地内存的占用率小于100%,则根据该内存申请将该本地内存分配给该应用;若该本地内存的占用率为100%,则根据该内存申请将该扩展内存分配给该应用。
在另一种可能的实现中,该至少一个扩展内存包括PMEM和SCM中的至少一者,以及DRAM;计算设备可以接收应用发送的内存申请;若本地内存的占用率小于占用阈值,则根据该内存申请将该本地内存分配给该应用;若该本地内存的占用率大于该占用阈值且小于100%,则根据该内存申请,按照可用的本地内存与DRAM的比例,将该本地内存和该DRAM分配给该应用;若本地内存的占用率为100%且DRAM的占用率小于100%,则根据该内存申请将该DRAM分配给该应用;若该本地内存和该DRAM的占用率均为100%,则根据该内存申请将该PMEM和SCM中的至少一者分配给该应用。
通过根据本地内存的占用率情况选择不同的内存分配策略,从而能够充分利用本地内存和第一NUMA节点中的DRAM或HBM的高带宽低时延特性,尽可能地提高内存带宽,提高CPU对应用的响应速度和处理速度。
本申请实施例中,通过识别扩展内存的存储类型,并依据扩展内存的不同存储类型实行不同的管理方式和分配方式,可以充分、灵活地发挥不同存储类型的扩展内存的特性优势,尽可能地提高内存带宽。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质包括指令,当该指令在计算机上运行时,使得计算机执行上述图3或图4部分实施例所描述的内存管理方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (20)
1.一种内存管理方法,其特征在于,应用于计算设备,所述计算设备包括至少一个扩展内存,所述方法包括:
当检测到第一扩展内存接入时,识别所述第一扩展内存的存储类型,所述第一扩展内存为所述至少一个扩展内存中的任意一个;
若所述第一扩展内存为动态随机存取存储器DRAM,则将所述第一扩展内存作为第一非统一内存访问架构NUMA节点的内存;其中,所述第一NUMA节点为任意一个具有中央处理器CPU的NUMA节点;
若所述第一扩展内存为持久化内存PMEM或存储级内存SCM,则新增第二NUMA节点,并将所述第一扩展内存作为所述第二NUMA节点的内存,其中所述第二NUMA节点无CPU。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一扩展内存作为第一NUMA节点的内存,具体包括:
确定所述第一扩展内存的地址范围;
将所述地址范围添加至所述第一NUMA节点的内存。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一扩展内存作为所述第二NUMA节点的内存,具体包括:
确定所述第一扩展内存的地址范围;
将所述地址范围添加至所述第二NUMA节点的内存。
4.根据权利要求2或3所述的方法,其特征在于,所述计算设备还包括内存扩展器,所述至少一个扩展内存包括N个通过所述内存扩展器接入所述计算设备的第二扩展内存,所述第一扩展内存为N个所述第二扩展内存中的任意一个,N大于1;所述确定所述第一扩展内存的地址范围包括:
通过UEFI固件获取N个所述第二扩展内存所对应的N段地址范围;
从所述内存扩展器处获取所述N个第二扩展内存的容量;
根据N个所述容量和所述N段地址范围,确定所述第一扩展内存的地址范围。
5.根据权利要求4所述的方法,其特征在于,所述根据N个所述容量和所述N段地址范围,确定所述第一扩展内存的地址范围,具体包括:
若所述第一扩展内存的容量与所述N个第二扩展内存中其他扩展内存的容量均不相同,则根据所述第一扩展内存的容量匹配所述N段地址范围,确定所述第一扩展内存的地址范围;
或者,
若所述第一扩展内存的容量与所述N个第二扩展内存中的至少一个所述扩展内存的容量相同,则获取所述N个第二扩展内存的内存编号;
根据N个所述内存编号的先后顺序和所述N段地址范围的先后顺序,以及所述第一扩展内存的内存编号,确定所述第一扩展内存的地址范围。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一NUMA节点为所述具有CPU的NUMA节点中与所述第一扩展内存距离最近的NUMA节点。
7.根据权利要求1至3中任一项所述的方法,其特征在于,在所述将所述第一扩展内存作为所述第二NUMA节点的内存之后,所述方法还包括:
将冷数据迁移到所述第二NUMA节点的内存,热数据迁移到所述具有CPU的NUMA节点的内存。
8.根据权利要求1至3中任一项所述的方法,其特征在于,所述计算设备包括本地内存;所述至少一个扩展内存包括所述DRAM;在所述将所述第一扩展内存作为第一NUMA节点的内存之后,所述方法还包括:
接收应用发送的内存申请;
若所述本地内存的占用率小于占用阈值,则根据所述内存申请将所述本地内存分配给所述应用;
若所述本地内存的占用率大于所述占用阈值且小于100%,则根据所述内存申请,按照可用的所述本地内存和可用的所述DRAM的比例,将所述本地内存与所述DRAM分配给所述应用。
9.根据权利要求8所述的方法,其特征在于,所述至少一个扩展内存还包括所述PMEM和所述SCM中的至少一者;在所述接收应用发送的内存申请之后,所述方法还包括:
若所述本地内存和所述DRAM的占用率均为100%,则根据所述内存申请将所述PMEM和所述SCM中的至少一者分配给所述应用。
10.根据权利要求1至3中任一项所述的方法,其特征在于,所述至少一个扩展内存通过计算快速链路CXL协议与所述计算设备的处理器进行数据传输。
11.一种计算设备,其特征在于,所述计算设备包括处理器和至少一个扩展内存;
所述处理器用于在检测到第一扩展内存接入时,识别所述第一扩展内存的存储类型,所述第一扩展内存为所述至少一个扩展内存中的任意一个;
所述处理器还用于在所述第一扩展内存为DRAM时,将所述第一扩展内存作为第一NUMA节点的内存;其中,所述第一NUMA节点为任意一个具有CPU的NUMA节点;
所述处理器还用于在所述第一扩展内存为PMEM或SCM时,新增第二NUMA节点,并将所述第一扩展内存作为所述第二NUMA节点的内存,其中所述第二NUMA节点无CPU。
12.根据权利要求11所述的计算设备,其特征在于,所述处理器具体用于在所述第一扩展内存为DRAM时,确定所述第一扩展内存的地址范围;将所述地址范围添加至所述第一NUMA节点的内存。
13.根据权利要求11所述的计算设备,其特征在于,所述处理器具体用于在所述第一扩展内存为PMEM或SCM时,确定所述第一扩展内存的地址范围;将所述地址范围添加至所述第二NUMA节点的内存。
14.根据权利要求12或13所述的计算设备,其特征在于,所述计算设备还包括内存扩展器,所述至少一个扩展内存包括N个通过所述内存扩展器接入所述计算设备的第二扩展内存,所述第一扩展内存为N个所述第二扩展内存中的任意一个,N大于1;所述处理器具体用于:
通过UEFI固件获取N个所述第二扩展内存所对应的N段地址范围;
从所述内存扩展器处获取所述N个第二扩展内存的容量;
根据N个所述容量和所述N段地址范围,确定所述第一扩展内存的地址范围。
15.根据权利要求14所述的计算设备,其特征在于,所述处理器具体用于在所述第一扩展内存的容量与所述N个第二扩展内存中其他扩展内存的容量均不相同时,根据所述第一扩展内存的容量匹配所述N段地址范围,确定所述第一扩展内存的地址范围;
或者,
所述处理器具体用于在所述第一扩展内存的容量与所述N个第二扩展内存中的至少一个所述扩展内存的容量相同时,获取所述N个第二扩展内存的内存编号;根据N个所述内存编号的先后顺序和所述N段地址范围的先后顺序,以及所述第一扩展内存的内存编号,确定所述第一扩展内存的地址范围。
16.根据权利要求11至13中任一项所述的计算设备,其特征在于,所述第一NUMA节点为所述具有CPU的NUMA节点中与所述第一扩展内存距离最近的NUMA节点。
17.根据权利要求11至13中任一项所述的计算设备,其特征在于,所述处理器还用于将冷数据迁移到所述第二NUMA节点的内存,热数据迁移到所述具有CPU的NUMA节点的内存。
18.根据权利要求11至13中任一项所述的计算设备,其特征在于,所述计算设备包括本地内存;所述至少一个扩展内存包括所述DRAM;所述处理器还用于:
接收应用发送的内存申请;
若所述本地内存的占用率小于占用阈值,则根据所述内存申请将所述本地内存分配给所述应用;
若所述本地内存的占用率大于所述占用阈值且小于100%,则根据所述内存申请,按照可用的所述本地内存和可用的所述DRAM的比例,将所述本地内存与所述DRAM分配给所述应用。
19.根据权利要求18所述的计算设备,其特征在于,所述至少一个扩展内存还包括所述PMEM和所述SCM中的至少一者;所述处理器还用于:
若所述本地内存和所述DRAM的占用率均为100%,则根据所述内存申请将所述PMEM和所述SCM中的至少一者分配给所述应用。
20.根据权利要求11至13中任一项所述的计算设备,其特征在于,所述至少一个扩展内存通过CXL协议与所述处理器进行数据传输。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376351.3A CN115729849B (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
CN202410161005.6A CN118152303A (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
PCT/CN2023/117464 WO2024093517A1 (zh) | 2022-11-04 | 2023-09-07 | 内存管理方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211376351.3A CN115729849B (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410161005.6A Division CN118152303A (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115729849A CN115729849A (zh) | 2023-03-03 |
CN115729849B true CN115729849B (zh) | 2024-02-20 |
Family
ID=85294584
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211376351.3A Active CN115729849B (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
CN202410161005.6A Pending CN118152303A (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410161005.6A Pending CN118152303A (zh) | 2022-11-04 | 2022-11-04 | 内存管理方法及计算设备 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN115729849B (zh) |
WO (1) | WO2024093517A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115729849B (zh) * | 2022-11-04 | 2024-02-20 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
CN116881016B (zh) * | 2023-09-06 | 2024-01-19 | 苏州浪潮智能科技有限公司 | 服务器进程的处理方法及装置、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488436A (zh) * | 2013-09-25 | 2014-01-01 | 华为技术有限公司 | 内存扩展系统及方法 |
US8806169B1 (en) * | 2013-02-18 | 2014-08-12 | Huawei Technologies Co., Ltd. | Memory management method, memory management apparatus and NUMA system |
CN105339910A (zh) * | 2013-06-26 | 2016-02-17 | 西部数据技术公司 | 在混合驱动器中的虚拟nand容量扩展 |
CN105446899A (zh) * | 2015-11-09 | 2016-03-30 | 上海交通大学 | 基于存储级内存的内存数据快速持久化的方法 |
CN113312275A (zh) * | 2020-02-27 | 2021-08-27 | 华为技术有限公司 | 内存设备的数据处理方法、装置和系统 |
CN113742256A (zh) * | 2020-05-28 | 2021-12-03 | 三星电子株式会社 | 用于可扩展且一致性存储器装置的系统和方法 |
CN114442928A (zh) * | 2021-12-23 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 实现dram和pmem之间冷热数据迁移的方法及装置 |
CN115202859A (zh) * | 2021-04-08 | 2022-10-18 | 华为技术有限公司 | 一种内存扩展方法以及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9959233B2 (en) * | 2015-04-28 | 2018-05-01 | Red Hat Israel, Ltd. | NUMA-aware root bus selection |
CN107102898B (zh) * | 2016-02-23 | 2021-04-30 | 阿里巴巴集团控股有限公司 | 一种基于numa架构的内存管理、构建数据结构的方法及装置 |
EP3436920A4 (en) * | 2016-03-31 | 2019-12-18 | INTEL Corporation | TISSUE ELASTICITY SUPPORT FOR ATOMIC WRITING OF MANY STORAGE OPERATIONS ON REMOTE NODES |
CN113656396A (zh) * | 2021-06-28 | 2021-11-16 | 清华大学 | 非统一内存访问架构下的持久性内存索引构建方法 |
CN115729849B (zh) * | 2022-11-04 | 2024-02-20 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
-
2022
- 2022-11-04 CN CN202211376351.3A patent/CN115729849B/zh active Active
- 2022-11-04 CN CN202410161005.6A patent/CN118152303A/zh active Pending
-
2023
- 2023-09-07 WO PCT/CN2023/117464 patent/WO2024093517A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806169B1 (en) * | 2013-02-18 | 2014-08-12 | Huawei Technologies Co., Ltd. | Memory management method, memory management apparatus and NUMA system |
CN105339910A (zh) * | 2013-06-26 | 2016-02-17 | 西部数据技术公司 | 在混合驱动器中的虚拟nand容量扩展 |
CN103488436A (zh) * | 2013-09-25 | 2014-01-01 | 华为技术有限公司 | 内存扩展系统及方法 |
CN105446899A (zh) * | 2015-11-09 | 2016-03-30 | 上海交通大学 | 基于存储级内存的内存数据快速持久化的方法 |
CN113312275A (zh) * | 2020-02-27 | 2021-08-27 | 华为技术有限公司 | 内存设备的数据处理方法、装置和系统 |
CN113742256A (zh) * | 2020-05-28 | 2021-12-03 | 三星电子株式会社 | 用于可扩展且一致性存储器装置的系统和方法 |
CN115202859A (zh) * | 2021-04-08 | 2022-10-18 | 华为技术有限公司 | 一种内存扩展方法以及相关设备 |
CN114442928A (zh) * | 2021-12-23 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 实现dram和pmem之间冷热数据迁移的方法及装置 |
Non-Patent Citations (2)
Title |
---|
Daokun Hu.Halo: A Hybrid PMem-DRAM Persistent Hash Index with Fast Recovery.SIGMOD '22: Proceedings of the 2022 International Conference on Management of Data.2022,1049-1063. * |
基于ARMv7-A架构的虚拟存储系统技术研究;曹朋朋;陈佳;张少锋;;电子技术应用(06);17-20 * |
Also Published As
Publication number | Publication date |
---|---|
CN115729849A (zh) | 2023-03-03 |
CN118152303A (zh) | 2024-06-07 |
WO2024093517A1 (zh) | 2024-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115729849B (zh) | 内存管理方法及计算设备 | |
US9304828B2 (en) | Hierarchy memory management | |
CN106557427B (zh) | 共享内存数据库的内存管理方法及装置 | |
CN108845958B (zh) | 一种交织器映射和动态内存管理系统及方法 | |
CN116431530B (zh) | 一种cxl内存模组、内存的处理方法及计算机系统 | |
US20170062025A1 (en) | Memory system including plural memory devices forming plural ranks and memory controller accessing plural memory ranks and method of operating the memory system | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN109766179B (zh) | 一种显存分配方法以及装置 | |
CN115904212A (zh) | 数据处理的方法、装置、处理器和混合内存系统 | |
US11157191B2 (en) | Intra-device notational data movement system | |
JP2018501559A (ja) | 不均一メモリアーキテクチャにおける改善されたレイテンシのためのシステムおよび方法 | |
JP2023527770A (ja) | メモリにおける推論 | |
JP6676052B2 (ja) | 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法 | |
CN112513824B (zh) | 一种内存交织方法及装置 | |
CN116483740A (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN117130955A (zh) | 用于管理相关联的存储器的方法和系统 | |
CN115079957A (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN111026680B (zh) | 数据处理系统、电路及方法 | |
CN110349611B (zh) | 半导体存储器模块和存储器系统 | |
CN111444113A (zh) | 非易失性存储介质共享方法、装置、电子设备及存储设备 | |
CN117851289B (zh) | 页表获取方法、系统、电子组件及电子设备 | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US20220300331A1 (en) | Method and apparatus for memory integrated management of cluster system | |
CN117648264A (zh) | 一种网卡设备及数据传输系统 | |
KR20230070759A (ko) | 자원 중심 네트워크의 메모리 주소 할당 방법 및 장치 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |