CN111008155B - 管理计算机设备的存储器的方法、计算机设备、介质 - Google Patents
管理计算机设备的存储器的方法、计算机设备、介质 Download PDFInfo
- Publication number
- CN111008155B CN111008155B CN201910620621.2A CN201910620621A CN111008155B CN 111008155 B CN111008155 B CN 111008155B CN 201910620621 A CN201910620621 A CN 201910620621A CN 111008155 B CN111008155 B CN 111008155B
- Authority
- CN
- China
- Prior art keywords
- memory
- state
- objects
- slices
- priority order
- 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
Images
Classifications
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本公开涉及一种用于存储器管理的技术,其中,物理存储器区域可以被划分成各部分的层次结构,所述层次结构可以包括域级别,所述域级别包括页级别,所述页级别包括分片级别,所述分片级别包括对象级别。分片内的对象具有一致大小,但对于不同的分片,大小可以不同。反映每个分片的存储器使用状态的一组状态包括:未使用的干净状态;部分状态;满状态;以及脏状态。可以通过单独或组合地基于状态分配成本和存储器分配成本选择处于最优选状态的对象来执行对分配请求的响应。紧凑的存储器布局可以用来减少存储器的运行时碎片化。
Description
技术领域
本公开涉及管理计算机设备的存储器的方法、计算机设备、介质。
背景技术
在计算领域,存储器管理是指分配、保护和解除分配(例如,回收)用于应用程序处理和操作系统操作的存储器区域。应用程序处理和操作系统操作可以包括线程、进程或应用程序并且通常可以被称为“执行单元”。不同类型的存储器存在于计算机系统中并且包括在访问时间方面可能具有不同速度的非持久性和持久性存储设备(storage)。存储器类型可以概念化为存储设备层次结构。通常,存储设备在层次结构中越低,其带宽就越小并且从中央处理单元(CPU)访问它的时延(即,访问所需的时间)就越大。这种将存储设备分为主存储设备、二级存储设备、三级存储设备和脱机存储设备的传统划分也可能受到每存储量的成本的指导,其中较低时延的大容量存储设备代表较便宜(从金钱上讲)。尽管从金钱角度来看,大容量存储设备可能较便宜,但从运行时计算角度来看,大容量存储设备可能具有较高的成本(例如,运行时访问和性能成本),因为向这种存储设备传输数据和从这种存储设备传输数据需要更多时间。
如在本公开中使用的,“存储器(memory)”或“存储器存储设备(memory storage)”可以指半导体存储读写随机存取存储器,通常是DRAM(动态RAM)或其他形式的快速但临时的存储设备。“存储设备”(例如,没有比如“存储器”或“主”等修饰语)通常是指CPU不能直接访问的存储设备及其介质(例如,二级或三级存储设备),通常是硬盘驱动器、光盘驱动器和其他比RAM慢但非易失和“持久的”(断电时保留内容)设备。在这种情况下,直接可访问是指由处理单元访问而无需经过设备控制器或板外通信总线来获得对存储在直接可访问存储器内的数据的访问。即,处理单元可以使用允许直接访问(用于读取和写入)的电路来访问存储器。然而,在一些情况下,可能存在帮助CPU直接访问存储器区域的存储器控制器。在这种情况下,出于直接访问的这种区别的目的,存储器控制器不应被视为设备控制器。所公开的示例参考了快速访问存储器(比如可由CPU(或另一种处理器类型)直接访问的RAM)的存储器分配。然而,在某些类型的存储设备分配实施方式中也可以使用类似的技术。历史上,存储器也被称为核心存储器、主存储器、实存储设备、或内部存储器。同时,非易失性存储设备被称为二级存储设备、外部存储器、或辅助/外围存储设备。
发明内容
一种管理计算机设备的存储器的计算机实施的方法,所述方法包括:将所述计算机设备上的物理存储器划分成各部分的层次结构,所述各部分的层次结构包括:一个或多个页;所述一个或多个页中的每一个包括一个或多个分片;以及每个分片包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小,但是当活动时则所指派的对象大小保持不变;维护反映存储器使用状态的一组状态,其中,来自所述一组状态中的一个状态与每个分片相关联,所述一组状态包括:所述干净状态,用于指示自系统重启以来分片尚未被分配以供使用;部分状态,用于指示分片包含少于满阈值数量的可用对象;以及所述脏状态,用于指示分片当前不包含对象并且先前已经用于已确定大小的对象的分配;以及满状态;从在硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及响应于所述请求,从所述一个或多个分片中确定要返回到所述执行单元来满足所述存储器分配请求的一组对象,其中,基于所述一个或多个分片的状态的第一优先级顺序从所述一个或多个分片中确定所述一组对象,其中,状态的所述第一优先级顺序为所述部分状态、所述脏状态、所述干净状态以及所述满状态。
一种计算机设备,包括:第一硬件处理器;第一硬件处理器可直接访问的一个或多个物理存储器区域;以及通信地耦接到所述第一硬件处理器的指令存储器区域,其中,所述指令存储器区域存储指令,所述指令在由所述第一硬件处理器执行时使所述第一硬件处理器:将所述一个或多个物理存储器区域中的每一个划分成各部分的层次结构,所述各部分的层次结构包括:一个或多个页,所述一个或多个页中的每一个包括一个或多个分片;以及所述一个或多个分片中的每一个包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小;维护反映所述一个或多个分片中的每一个的存储器使用状态的一组状态,所述一组状态包括:活动状态、所述干净状态;部分状态;满状态;以及所述脏状态,其中,所述活动状态指示在使用中的分片,所述干净状态指示未使用的分片,所述部分状态指示具有可用对象的分片,所述满状态指示具有多于满阈值的对象正在使用中的分片,并且所述脏状态指示先前使用过并且所有对象可用的分片;从在所述第一硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及部分地基于相应的状态分配成本,作为对与所述一个或多个分片相关联的每个状态的相对优先级的排名,从所述一个或多个分片中选择一个或多个对象。
一种非暂时性计算机可读介质,包括存储在其上的计算机可执行指令,所述指令在由一个或多个硬件处理器执行时使所述一个或多个硬件处理器:将一个或多个物理存储器区域中的每一个划分成各部分的层次结构,所述各部分的层次结构包括:域级别,所述域级别包括一个或多个域;所述一个或多个域中的每一个包括一个或多个页;每个页包括一个或多个分片;以及每个分片包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小;维护反映所述一个或多个分片中的每一个的存储器使用状态的一组状态,所述一组状态包括:所述干净状态;部分状态;满状态;以及所述脏状态,其中,所述干净状态指示未使用的分片,所述部分状态指示具有可用对象的分片,所述满状态指示具有多于满阈值的对象正在使用中的分片,并且所述脏状态指示先前使用过并且所有对象可用的分片;从在所述一个或多个硬件处理器中的第一硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及部分地基于相应的状态分配成本,作为对与所述一个或多个分片相关联的每个状态的相对优先级的排名,从所述一个或多个分片中选择一个或多个对象;以及将所选择的一个或多个对象返回到所述执行单元以用于处理。
附图说明
当结合附图阅读时,从以下详细描述中可以更好地理解本公开。需要强调的是,根据行业中的标准实践,各种特征没有按比例绘制。事实上,功能属性的尺寸或位置可以基于设计、安全性、性能或计算机系统领域中已知的其他因素来重新定位或组合。此外,对于一些功能,可以在内部和相对于彼此改变处理顺序。即,一些功能可能不需要串行处理,因此可以以不同于所示的顺序执行或者可能彼此并行执行。对于各种示例的详细描述,现在将参考附图,附图中:
图1是根据一个或多个公开的实施方式的存储器/存储设备层次结构和对所述层次结构的每个级别的访问类型的功能框图表示;
图2是根据一个或多个公开的实施方式的表示不同可能的存储器和处理器配置以说明存储器区域与硬件处理器的“接近度”的框图,其中可以比更远的存储器区域更高效地访问更近的存储器区域;
图3是根据一个或多个公开的实施方式的表示包括域(domain)、页(page)、分片(slice)和对象(object)的存储器分配分割示例的框图;
图4是根据一个或多个公开的实施方式的包括多个计算机(例如,系统)和简化的FC网络的分布式网络环境的框图表示,其中每个设备可以包括可以受益于本公开的存储器分配技术的存储器;
图5是根据一个或多个公开的实施方式的表示可能的存储器分配技术(例如,可以由以软件、固件、硬件或其组合实施的存储器分配器函数来执行)的流程图;
图6是根据一个或多个公开的实施方式的表示实施用于分配存储器的技术的计算设备的框图;
图7表示根据一个或多个公开的实施方式的计算机网络基础设施,其可以包括可以各自实施所公开的存储器分配技术的全部或部分的不同类型的设备;并且
图8展示了可以实施本公开中讨论的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程的计算机处理设备。
具体实施方式
现在将公开下面要求保护的主题的示例。为了清楚起见,在本说明书中没有描述实际实施方式的所有特征。应当理解,在任何这样的实际示例的开发中,可以做出许多特定于实施方式的决策来实现开发者的特定目标,比如符合系统相关和商业相关的约束,这些约束将从一个实施方式到另一个实施方式而变化。此外,应当理解,对于受益于本公开的本领域普通技术人员来说,这种开发努力即使复杂且耗时也将是常规任务。
在计算机设备操作系统中,存储器管理通常指负责管理计算机的主存储器的功能。在大多数实施方式中,存储器管理功能跟踪每个存储器位置的状态,即被分配或空闲的。存储器管理判定如何在竞争的进程之间分配存储器,从而决定哪个进程获得存储器、它们何时接收到存储器、以及给予它们多少存储器。当存储器被分配给执行单元时,存储器管理功能判定将指派哪些物理存储器位置。它跟踪存储器何时释放或未分配并更新状态。在一些实施方式中,存储器管理功能将基于来自在相关联的CPU上执行的执行单元的每个分配请求来管理要分配的连续存储器块(例如,图3所示的域、页、分片或对象)的大小。存储器可以专用于特定CPU或者在几个CPU之间共享并且存储器管理功能可以基于由请求执行单元提供的访问要求来分配物理存储器的各部分。另外,一些CPU可能具有一个以上的核并且存储器管理功能也可以考虑协调跨多个核的分配和访问。
本公开提出了对存储器分配技术和整体存储器管理功能的改进。具体地,可以在实施所公开技术的系统中实现对计算机系统的操作的改进。具体地,利用本公开的概念的改进的存储器管理功能可以提高计算设备执行其功能的速度和效率。公开的技术不限于任何特定类型的计算机应用。然而,一些设备,比如在有限重启的情况下连续运行的专用设备,可能比其他设备在性能上有更大的提高。性能的提高可以取决于计算设备的应用类型、应用数量和总体配置(例如,不同存储器区域的数量、不同存储器区域的大小、处理器、以及存储器区域相对于处理器的架构)。
参考图1,框图100展示了根据一个或多个公开的实施方式的存储器/存储设备层次结构和对所述层次结构的每个级别的访问类型的功能框图表示。这种层次结构是概念性的,在此提供以帮助讨论。在实践(例如,现实世界的实施方式)中,基于实施要求,可以存在这种层次结构的变化。在这个概念示例中,主存储设备105包括中央处理单元(CPU)110,所述中央处理单元又包括逻辑单元112。主存储设备105还包括可由CPU 110通过存储器总线115直接访问的主存储器120(例如,随机存取存储器(RAM))。比如寄存器111和缓存存储器113等其他内部存储器也本地包括在CPU 110上并且表示即使不使用存储器总线115,CPU110也可以直接访问的存储器区域(例如,因为它们对于包括CPU的集成电路(IC)是本地的)。在这个层次结构的上下文中,主存储设备表示CPU可直接访问的唯一存储存储器区域。CPU可以连续读取存储在主存储设备中的指令并根据需要执行这些指令。此外,执行单元(例如,线程、进程、应用程序或操作系统)正在积极使用的数据也可以以统一的方式存储在主存储器中。在这种情况下,“统一方式”表示可以基于一种或多种存储器分配技术来访问主存储器从而保持跨执行单元的一致和可预测的访问。
除了主存储设备105之外,在框图100的存储器层次结构中展示了两个额外的存储设备级别。在这个示例中,这两个额外级别中的第一个被称为二级存储设备130。二级存储设备130表示对包括主存储设备105和CPU 110的计算机是设备可直接访问的存储设备(见方框箭头125)。这种类型的设备直接访问(方框箭头125)不应与上述CPU对主存储设备105的组件的直接访问相混淆。在这种情况下,二级存储设备是设备可直接访问的,因为它位于同一设备上,而不是CPU本身可直接访问。这种设备直接访问还可以包括使用设备驱动器和/或某种IO控制器可访问的存储区域,其可以允许访问而无需与另一设备(例如,网络交换机或文件服务器)交互。即,二级存储设备130可以集成到计算机设备中作为这个计算机设备的“始终存在”部分。二级存储设备130可以包括大容量存储设备135,所述大容量存储设备可以包括硬盘、固态驱动器或其他类型的大容量存储设备。
在这个示例中,这两个额外级别中的第二个被称为脱机存储设备145,其可以不是计算机设备的集成部分。例如,脱机存储设备145可能对于计算机设备“仅有时存在或可访问”。为了访问脱机存储设备145,可以通过网络控制器或者通过可以被配置为访问可移除介质的控制器来提供设备间接访问(见方框箭头140)。可移除介质不被认为集成到计算机设备中(例如,因为它有时可以被可选地移除)。脱机存储设备145还包括云存储设备、闪存驱动器、磁带备份或不必集成并专用于特定计算机设备的其他类型的存储设备(例如,网络文件服务器或网络附加存储设备)。有许多类型的脱机存储设备可用,以上类型仅用作示例。
为了简单和易于解释,将基于这三个概念级别中的第一个(主存储设备105)来解释本公开的示例。具体地,本文使用的示例将涉及RAM 120的管理以解释所公开的统一存储器分配技术。然而,鉴于本公开的益处,本领域普通技术人员将理解,所公开的存储器管理技术可以应用于概念框图100的所有级别。因此,除非明确声明,否则本公开的技术可以全部或部分地在存储中央处理单元(例如,CPU 110)的进程的数据的任何设备或相关设备集合处实施。
时延(latency)是指访问存储器或存储设备中的特定位置所花费的时间(或者可以是存储介质本身的属性)。实际上,与较低时延的存储设备相比,较高时延的存储设备需要更多时间来访问。不同类型的存储设备实施方式通常会有不同级别的时延。时延可能会受到存储介质的速度的影响。具体地,在大多数实施方式中,寄存器111比缓存存储器113快,而缓存存储器又比RAM 120快。此外,不同类型的RAM 120可以以不同的内部速度操作并且它们与进行访问的CPU的物理/逻辑关联性可以影响访问时延。这里引用的物理/逻辑关联性指的是存储器相对于CPU 110的位置(例如,在主板或印刷电路板上)以及CPU 110可以如何访问这个存储器。具体地,某个存储器可以与CPU 110在同一IC上(例如,寄存器111和缓存存储器113),因此可能比通过通信总线访问的存储器(例如,通过存储器总线115访问的RAM 120)更快。此外,有时存储器访问可能必须通过另一个处理器(例如,另一个CPU或存储器控制器)来协调并且这个额外的电路可能会增加访问时延。此外,一些类型的存储设备可以位于具有CPU的设备内部(例如,设备直接访问)或者可以位于远离CPU的设备中(例如,设备间接访问)。简而言之,时延可能受到许多因素的影响并且通常可以被认为并且在本文中被称为与进行访问的CPU的“接近度(closeness)”,使得存储器区域与进行访问的CPU“越近”,进行访问的CPU可以执行对这个存储器的整体访问越快(例如,更低的时延)。存储器区域的接近度不一定在所有情况下都被认为是物理接近度,而是应该考虑访问这个存储器区域必须穿过的电路量。时延的相关测量单位对于主存储设备105通常是纳秒,对于二级存储设备130是毫秒,对于脱机存储设备145(有时称为三级存储设备)是秒。对于一些类型的存储设备/存储器,将读取时延和写入时延分开可能是有意义的(特别是对于非易失性存储器)。在顺序存取存储设备的情况下,可能存在一个以上要考虑的时延的量度,因为顺序存取存储设备可能具有取决于被访问的存储器位置并且因此是可变的访问开销。在一些情况下,顺序存取存储设备访问时延可以被视为具有三个访问量度,比如最小、最大和平均时延。
在不同的公开实施方式中,可以存在一组关于存储器的不同单独部分(例如,段(segment)、分区(partition)、页、分片、对象等)如何被允许在不同状态之间转换的规则。这些规则可能在不同的实施方式中有所不同。在计算机科学中,对于存储器管理的不同实施方式,存在用于存储器的各部分和存储器的各子部分的许多术语。本公开的各逻辑存储器部分的示例分解在下面被进一步讨论,但是在最高级别,其是与计算机系统中的物理硬件相关联的物理分区,如接下来所解释的。
在所公开的实施方式中,将从存储器的物理分区(例如,呈现为物理存储器的一个连续部分并且可以与插槽号(socket number)相关联的存储器卡或多存储器卡)开始分段引用存储器。在这种情况下,插槽号代表主板上容纳CPU的物理插槽。另外,物理存储器“条(stick)”(例如,存储器的IC,比如单列直插式存储器模块SIMM或双列直插式存储器模块DIMM)可以以这样的方式插入到主板中,即它们与物理插槽处的特定CPU相关联。存储器槽(memory slot)(例如,容纳存储器条)与CPU插槽的这些关联可以由主板的电路决定。在一些情况下,即使对于单个CPU插槽,也可能有两个不同的条附接到这个插槽,例如,一个条在处理器的左侧,另一个条在处理器的右侧。这意味着一些处理器部件将比一个存储器条更靠近另一个存储器条。因此,对这两个条中的一个的访问可能更快(更少的时延),因为对于“较远”的条,存储器访问必须经过更多的处理器电路才能到达较远的条。所公开的实施方式适用于单CPU实施方式和多CPU实施方式两者。然而,在存在多个CPU的情况下,不同存储器条的时延差异可能更普遍。这种对时延的影响部分是因为每个插槽到每个条之间的距离(例如,不是空间上的字面距离,而是穿过这个电路以进行访问的电路量和时间)将不同,从而对于CPU与存储器条的每个关联产生可能不同的时延。
总而言之,在高级别上,如果计算机系统具有两个不同的CPU插槽,并且主板包括多个存储器条,那么这些存储器条中的一些将被附接(通过主板电路关联为本地)到第一CPU插槽。另外,存储器条的其他实例将被附接到第二CPU插槽。因此,根据哪个插槽(例如,在插槽中的CPU的核上执行的应用程序或执行单元)试图访问存储器位置,这个存储器位置将是“近”存储器(附接到与进程相同的CPU)或者其是另一个“远”插槽上的存储器位置(例如,附接到另一个CPU)。因此,访问可以被认为是对近存储器或远存储器的访问并且距离的类比可以与时延相关。距离的这种类比在本公开中用于解释的目的,然而,注意,物理距离可能导致时延,但可能不是决定因素。
如上所述,存储器的每个物理分区可以被分解成不同的逻辑部分。这里提供了一个示例逻辑分解,但是对于不同的部分,其他逻辑分解或不同的术语也是可能的。在这个示例中,逻辑分解包括一个或多个非一致性存储器访问(NUMA)域(或具有非对称存储器访问的多个区域)。每个NUMA域(或多个区域中的每一个)将包括相同大小的多个页,然后这些页将被分成相同大小(但小于页大小)的多个分片。然后,每个分片将被分成可以在不同分片上具有不同的大小的对象,但是给定分片的所有对象具有相同的大小。这种分割将在下面进一步讨论并在图3中展示。NUMA是指用于多重处理的计算机存储器设计,其中存储器访问时间(时延)取决于相对于处理器的存储器位置。在NUMA下,处理器可以比非本地存储器(另一个处理器的本地存储器或处理器之间共享的存储器)更快地访问自己的本地存储器。对于不同类型的设备,NUMA的好处可能更加明显。具体地,在数据通常与某些任务或用户密切相关的服务器或专用设备上,NUMA的好处可能会增加。
所公开的存储器管理实施方式包括存储器各部分的优先级排序,如下文进一步解释的,就分配和可能的解除分配(释放不再被执行单元使用的存储器)而言,存储器的一些状态优于存储器的其他状态。存储器状态可以包括干净(clean)、活动(active)、脏(dirty)、部分(partial)或满(full)。存储器的状态将在下面更详细地描述。另外,如果状态优先化不适用,例如,因为没有足够的优选状态的存储器可用于满足给定请求,则可以利用次级优先化来基于存储器地址进行优先化。即,第一级优先化可以基于状态,次级优先化(例如,基于存储器地址)和第三优先化(例如,基于亲合力)。在一些实施方式中,可以发生进一步的优先化,或者当优先化技术不可能(例如,对它们进行了尝试但不成功)时,可以提供到非优先化访问的回退。另外,在一些实施方式中,可以实施所有优先化等级,而在其他实施方式中,可以仅使用所有公开的优先化技术的子集。简而言之,所公开的存储器区域的属性可以以不同的方式被用于在适当时实施不同的优先化方案(例如,基于设计标准)。一个示例实施方式通过a)首先检查分片是否已经与执行单元相关联、b)其次检查状态、c)第三检查接近度、以及d)第四检查存储器地址来对分配请求进行响应。其他顺序也是可能的。
在对存储设备层次结构、存储器管理以及关于访问时延可能如何受不同存储器位置的“接近度”影响的接近度的确定有了以上理解之后,下面参考附图解释详细的实施示例。此外,解释了可以针对每个设备上的至少一部分处理器实施所公开的存储器管理技术的设备网络的示例实施方式。注意,并非网络中的所有设备或设备的处理器需要实施相同的存储器管理技术。然而,共享存储器和/或具有对存储器的并发访问的处理器可以被实施为利用共同存储器管理技术。另外,可以实施某种级别的虚拟化来抽象对物理存储器的访问并且可以在与物理存储器接口连接的最低抽象级别实施所公开的考虑“接近度”的存储器管理技术。最后,如上所述,其他存储技术(例如,除了存储器管理之外)可以受益于本公开的技术。
参考图2,展示了根据一个或多个公开的实施方式的框图,其表示不同可能的存储器和处理器配置以说明存储器区域与硬件处理器的“接近度”,其中可以比更远的存储器区域更高效地访问更近的存储器区域(例如,更少的总时延)。一般来说,所公开的实施方式被设计为响应于CPU的分配请求而提供高效的存储器位置。如果插槽请求为操作分配存储器,则可以优选地从本地存储器提供这个存储器,而不是从远程存储器。一般来说,当特定执行单元(例如,应用程序或进程)正在运行时,这个执行单元可以在第一CPU上或者在第二CPU上(这可以随着时间而改变)。此外,相对于CPU中的多个核,所述执行单元可以在CPU中的特定核上。基于执行的位置,所公开的实施方式可以具有关于什么可用存储器是本地的、什么可用存储器是远程的或远的、以及什么存储器甚至更远或真正远的信息。即,所公开的实施方式可以将总时延量度(例如,如上所述的接近度)与不同的可用存储器位置相关联。
一些公开的实施方式试图响应于分配请求而找到分配存储器,其中所标识的存储器尽可能靠近执行单元并且从而提高整体操作的效率。另外,但是单独地,存储器分配的另一个考虑可以解决可以预期执行单元在CPU的核之间移动或者在计算机设备上的一组CPU之间移动的情况。例如,执行单元可能在一个核与另一个核之间移动,因为它进入睡眠状态并且然后在不同的核可用时或者可能在另一个CPU上的另一个核可用时醒来。
因此,所公开的实施方式解决了先前靠近核和相关联执行单元的存储器的潜在容量移动,使得其从其先前位置被释放并且在靠近新(例如,在移动之后)核的新位置处可用。存储器的高效移动允许持续高效的执行并允许额外的执行单元在需要时访问近的存储器。在一个实施方式中,分配器通过确保存储器一旦被释放就将其返回到它所属的远程组而不是这个执行单元已经迁移到的本地组来对此进行处置。所公开的实施方式可以解决的一个问题是,在传统的存储器分配器中,随着时间的推移,存储器可能变得碎片化,并且碎片化通常使得分配更加困难。碎片化可能部分地由于当执行单元四处移动(例如,由调度器)时可用存储器的部分可能变得与可用存储器的其他部分不相连而导致。所公开的实施方式试图通过保持紧凑的存储器布局而不是平衡的存储器布局(下面进一步解释)来减少与部分由执行单元重定位引起的碎片化相关联的问题。
回到图2,单处理器示例200包括经由存储器总线205连接到名为MEM A1 215、MEMB1 220和MEM C1 225的三个不同存储器分区的处理器A 210。这些存储器分区中的每一个指的是可以由如上所述的一个或多个存储器条实施的存储器的物理分区。单处理器示例200展示了MEM A1 215最靠近处理器A 210,而MEM B1 220和MEM C1分别离处理器A 210更远(例如,较不靠近)。如上所述,“物理距离”不一定是决定因素并且在图2的示例中仅用作讨论目的的图示。因此,在这个示例中,MEM A1 215被示为对处理器A 210具有最小的总时延,MEM B1 220对处理器A 210具有中间量的总时延,并且MEM C1 225对处理器A 210具有最大的总时延。其他存储器区域(未示出)也可以供处理器A 210使用,但是在这个示例中没有讨论。
多处理器示例1 250从单处理器示例200扩展为包括四个存储器分区和两个处理器。在多处理器示例250中,单个存储器总线255为处理器1 261和处理器2 262中的每一个提供对MEM A2 270、MEM B2 272、MEM C2 274和MEM D2 276的访问。如这个示例中所示(图示),相对于MEM C2 274或MEM D2 276,处理器1 261最靠近MEM A2 270并且相对靠近MEMB2 272。MEM D2 276被示为离处理器1 261最远。相比之下,MEM C2和MEM D2中的每一个被示为与处理器2 262等距。在这个示例中,MEM B2 272和MEM A2 270中的每一个分别离处理器2 262较远。从这个图示中可以看出,不同的CPU对于不同的物理存储器分区可以具有不同的总时延(例如,接近度),因此,所公开的分配技术可以将这种接近度考虑为满足每个不同处理器上的执行单元的存储器分配请求的一部分。注意,电路板和集成电路可以由不同的电路层构成,因此为了满足请求和传输数据而穿过的电路量也可以包括跨三个维度的数据移动,为了说明的目的在图2中仅示出了两个维度。
多处理器示例2 280将已经讨论过的图2的示例扩展为包括具有“专用”存储器和共享存储器区域290的处理器。在这个示例中,处理器1 282具有专用存储器MEM W2 285,处理器2具有专用存储器MEM Y2 287。即使存储器区域可能被指定为专用于处理器,但这并不意味着另一个处理器可能无法访问和使用这个存储器。在这种情况下,专用是指存储器与处理器的关联,使得存储器分区所专用于的处理器将是访问这个存储器的中介。换句话说,对于处理器1 282访问MEM Y2 287,将经由与处理器2 283的交互来对请求进行服务。显然,具有这种额外的交互可能导致处理器1 282访问MEM Y2 287的总(并且可能是可变的)时延增加。因此,可以确定MEM Y2 287比例如MEM Z2 288离处理器1 282更远(并且就所述处理器而论具有相应更高的总时延)(即使在图示上看起来可能不是这种情况)。
同样在多处理器示例2 280中示出,共享存储器290代表存储器区域,所述区域可以被设计为高效地与主板的多个插槽(以及它们相应的CPU)接口连接,使得没有插槽必然具有到共享存储器280的优先访问。注意,即使可以从多个CPU中的每一个高效地访问共享存储器290,它们也可以各自具有相对于共享存储器290和其他可用存储器区域的不同接近度确定。即,共享存储器区域290与处理器1 282的接近度可以不同于共享存储器区域290与处理器2 283的接近度。此外,对于每个CPU,可以预期的是共享存储器区域290相对于其他可用存储器区域的相对接近度是不同的。除了专用存储器区域MEM W2 285和MEM Z2 288可以直接从它们所专用于的处理器或者通过存储器总线281与远程处理器的辅助的组合来访问之外,在多处理器示例2 280中展示的每个存储器区域可以经由存储器总线281来访问。在一个公开的实施方式中,存储器分配器可以从每个单独的插槽(和相应的CPU)的角度为每个可用存储器区域指派“存储器位置成本”。这个存储器位置成本可以部分地从上面讨论的接近度属性和基于存储器的规格的时延中导出。因此,这个存储器位置成本可以考虑每个CPU访问每个不同存储器分区的总时延。
现在参考图3,根据一个或多个公开的实施方式,框图300被示为表示包括域、页、分片和对象的存储器分配分割示例。如上所述,不同的物理存储器分区可以被分成各逻辑部分和各子部分以实施不同的存储器分配技术。在一个公开的示例中,可以用分配器映射(allocator map)305将存储器的高级别部分逻辑分离成存储器域,所述分配器映射可以与统一分配器一起使用,表示本公开的一个示例存储器管理技术。在这种情况下,存储器域表示具有一致访问位置的一组存储器。在两个CPU的系统中,如图2的多处理器示例,可能有两个不同的存储器域:每个CPU一个(如可以与插入到第一插槽中的CPU相关联的组1 310的映射和第二插槽的组2 311的映射所示)。可替代地,尽管在这个例中未示出,但是例如如果每个CPU具有两个存储器通道,则这个CPU可能具有两个域。任何数量的存储器域都是可能的,任何给定实施方式中的实际数量可能取决于存储器的总量和可能需要管理的不同物理存储器分区的数量(或其他因素)。
继续框图300的示例,每个域可以被进一步组织(例如,被细分以创建子部分)成页,比如页315(在框图200中示出为组1的元素并被放大以获得进一步的细节)。页315可以进一步组织成分片,比如分片320,每个分片包含多个不同的对象。如所示,每个分片可以被限制为仅包含大小一致的对象,但是对于不同的分片,对象可以具有不同的大小。在图3的示例中,展示了三种不同的对象大小,即512B对象330、1K对象335和2K对象325。根据实施要求,其他大小也是可能的。分片可能不会被指定为包含特定大小,直到利用这个特定分片满足分配请求。域可以被分解并在逻辑上分成任何数量的分片。每个分片可以经历不同的状态,所述状态可以包括单独的状态:干净、活动、脏、部分或满。在一些实施方式中,状态机可以用于维护不同分片的状态转换。当没有为分片进行分配时,这个分片可以被认为是干净的。当为分片创建并分配第一对象时,这个分片可以变为活动的(例如,自计算机设备重启以来,所述分片被首次使用)。当分片是活动的时,分片当前正在使用中(即,正分配给执行单元)。在一些实施方式中,活动状态胜过所有其他状态——不管分片中存在(或空闲)多少对象,如果其当前正分配给执行单元,则这个分片被认为处于活动状态。在来自分片的对象被分配给执行单元并在使用后被释放之后,这个分片可以被认为是脏的。如果分片的大部分对象的子集当前被分配给执行单元,但是它不是满的(例如,超过25%的空闲),则这个分片可以被认为是部分的。当分片的几乎所有对象(例如,少于25%的空闲)被分配给执行单元(例如,执行或挂起的执行单元)时,这个分片可以被认为是满的。分片从部分状态转换到满状态的使用(例如,给定分片内的对象的使用)量可以是可配置的并且可以被称为“满阈值”,在这个示例中,所述阈值被设置为25%以指示等于给定分片中对象总数的25%的对象数量。
除了上述存储器位置成本之外,基于存储器的不同部分的状态,还可能存在额外的“状态分配成本”。在一些实施方式中,当判定如何满足(例如,响应)来自操作系统或间歇执行单元的存储器分配请求时,所公开的存储器分配器可以考虑这两种成本。
在一个实施方式中,状态分配成本反映了初始分配的成本并且还可以考虑对于未来请求的整体存储器可用性。如上所述,碎片化可能会导致性能下降,因此即使可能会产生稍微更高的初始成本,也可以有利地实施用于使存储器的碎片化最小化的技术。在状态分配成本的一个示例中,脏状态可能比部分状态稍微贵一点,而部分状态比满状态便宜得多。干净状态的状态分配成本可能比脏状态稍微贵一点。一般来说,每个状态分配成本可以被认为是对每个状态的相对优先级的排名。这种排名不一定是线性排名并且状态分配成本的变化可能是细微的或显著的。
在一个示例实施方式中,存储器分配器可以通过判定可用分片的集合中的哪些分片处于每个可能状态来响应对存储器的请求(例如,分配请求)。那么可以通过仅从处于最优选状态的那些可用分片的子集中进行选择来满足分配。如果没有处于最优选状态的分片可用(或者不足以完全满足请求),则可以使用下一个最优选状态来扩充处于最优选状态的分片并最终满足分配请求。可以重复这个过程,直到选择了足够令人满意的分片(例如,可用并且基于最小总体状态分配成本处于最优选状态)来满足存储器分配请求。
在如上所述的分片的初始优先化标识之后,可以应用第二优先化级别来选择用于满足请求的实际分片。在这个示例中,第二优先化可以是在分配中将使用特定状态下的分片中的哪些分片的优先化。在一个实施方式中,分片可以基于最低存储器地址被第二次优先化。这部分是因为执行单元可能需要两个不同的分片。例如,执行单元可能需要用于存储大量小对象的分片并且可能使用另一个分片来存储较大对象。在这个示例中,这些分片在逻辑上是分开的,部分原因是如上所述分片一次只能包含一种大小的对象。因为已经基于所有上述可应用的优先级指派了存储器,所以当存储器由执行单元以较小的片释放时,分片可能最终处于一些空间正在使用但并非整个分片都在使用的配置中。由于优先考虑较低的存储器地址和优先考虑处于部分状态的分片,因此对于正在使用的分片,每个分片将倾向于被保持尽可能满。此外,未使用的分片将保持未使用(或干净)。这种分配技术可以被认为是通过试图将对一种大小的存储器的请求集中到尽可能少的分片中来压缩存储器(例如,紧凑的存储器布局)以减少分片级的碎片化并使完全干净或脏的分片可用,所述分片可以被用来/重新用来更高效地满足对不同对象大小的请求。在这种情况下,重新使用分片可以包括重构分片以包括与先前分配中使用的不同大小的对象。即,未在使用中但是脏且包含512K对象的分片可以被重新格式化成1K或2K对象并且以这个新的对象大小再次分配。在替代实施例中,可以用倾向于较高存储器地址来代替较低存储器地址的使用以实现相似的紧凑性结果。
在简单的示例中,考虑以总存储器的50%分配100个存储器分片。一些存储器管理技术可能导致每个分片被相等地使用(例如,一半被使用,如在这个示例中)并且趋向于平衡的存储器布局。相比之下,所公开的优先化技术可以倾向于使用50个分片的100%,而使其他50个分片完全空闲(例如,紧凑的存储器布局)。通过尽可能地压缩存储器,分片仍可供将来根据需要使用。
图4是根据一个或多个公开的实施方式的分布式网络环境400的框图表示,所述分布式网络环境包括多个计算机(例如,系统)和简化的FC网络,其中每个设备可以包括可以受益于本公开的存储器分配技术的存储器。分布式网络环境400包括客户端设备405、网络交换机410、两个FC交换机420和425、服务器设备(在这个示例中是双路径主机415)以及经由简化的FC网络和因特网协议(IP)网络连接的存储阵列430。这个示例的每个设备可以为由元件450-1至450-6标识的其相应存储器区域实施存储器管理技术。为了说明的目的,这个示例已经被简化,并且可以预期的是现实世界的实施方式包括许多额外的组件以及所示组件的额外实例。
在分布式网络环境400中,有客户端设备405(包括MEM 450-1),客户端设备通过IP网络链路440(表示为实线)连接到IP交换设备410(包括MEM 450-2),IP交换设备又通过IP网络链路440连接到双路径主机(dual path host)415。双路径主机415包括MEM 450-3并代表许多不同可能类型的服务器(例如,应用服务器、数据库服务器、存储服务器等)中的任何一种。在这个示例中,双路径主机415还包括两个独立的HBA/CNA接口,即HBA/CNA 1 416和HBA/CNA 417。通过具有一个以上的接口,双路径主机415可以具有到基于IP的网络或FC网络的冗余连接(例如,为了如上所述的冗余或性能)。具有冗余的设备可以长时间运行并且因此进一步受益于所公开的存储器分配技术。例如,高可用性设备可以受益于所公开的技术,这既是因为性能原因,也是因为可以减少存储器的运行时碎片化。
继续图4,网络400包括两个独立的FC结构(fabric),即在这个示例中由FC交换机425维护的结构A和在这个示例中由FC交换机420维护的结构B。在这个示例中,存储阵列430包括端口1 431,所述端口被示为使用FC交换机425经由FC物理链路140(图示为虚线)连接到结构A。端口2 432被示为使用FC交换机420经由不同的FC物理链路140连接到结构B。端口N 435被示为指示存储阵列430可以包括连接到任何数量的额外结构(未示出)的任何数量的端口或者提供到网络400的结构A或结构B的额外连接。这些交换机和存储阵列430中的每一个可以包括通过所公开的存储器分配技术管理的存储器(例如,MEM 450-4、MEM 450-5和MEM 450-6)。
图5是根据一个或多个公开的实施方式的表示用于存储器分配的可能技术的流程图。在一些实施方式中,可以使用单独的数据结构来处置存储器各部分(例如,域、页、对象和分片),并且可以实施对分片的管理,使得部分地基于每个分片的不同状态来监视和控制分片。分片的不同状态可能因一种实施方式而异,但可能包括比如干净分片(以前从未使用过)、脏分片(完全空闲但先前使用过并可能设置了对象大小)、部分分片(大约25%或更多空闲)和满的分片(大约少于25%对象空闲)等状态。如上所述,对于一个示例实施方式,当要选择分片进行分配时,可以存在基于可用分片的状态的检索区域的优先顺序。在一个示例中,优先级顺序是部分、脏、干净,然后是满。在这个示例中,首先使用部分分片,部分地是因为已知部分分片具有可以分配的对象的合理计数,并且如果可以满足请求,则可以避免将任何新分片专用于特定大小。脏分片可以用作第二优先级,部分地是因为脏分片更有可能在缓存存储器区域中可用并且脏分片的元数据可能已经针对所请求的对象大小进行了初始化(产生较少的分配开销)。干净分片可以用作第三优先级,部分地是因为它们保证一整组对象可用。满的分片可以用作第四优先级,部分地是因为获得分片的成本可能相对较高并且通常包括页锁定开销。此外,在完全填充之前,满的分片可能无法提供许多对象。在这个示例中,干净的分片没有指派的对象大小并且因此平等地用于任何分配大小。一旦分片被选择了特定大小,这个分片将永远不会返回干净状态。此外,在这个示例中,当分片完全为空(这个分片中所有使用的对象已经被所有执行单元释放)时,这个分片变成脏分片,所述脏分片可以优选地被重新用于相同的对象大小以满足新的分配请求。然而,如果需要对象的不同分配大小并且没有分割成这个对象大小的分片可用,则可以选择干净分片,或者重建脏分片的元数据以反映新的对象大小。显然,重建元数据会产生一些额外的开销,因此避免这种情况可能是可取的。
在一些实施方式中,头(header)(例如,分片头)可以作为分片的元数据的形式来维护。例如,一些实施方式可以为每个分片维护至少两个空闲对象列表。例如,本地空闲列表和远程空闲列表。拥有分片的线程(例如,执行单元或其一部分)对本地列表具有独占访问权并且被允许从本地列表分配新对象。在这个示例中,当其他线程释放属于这个分片的对象时,使用远程列表。对远程对象的访问可以通过原子交换(atomic swap)来提供。因此,每当拥有线程的本地列表变为空时,可以对远程列表上的任何释放的对象执行检查并使用原子交换将与远程列表相关联的对象移动到本地列表中以进行新的分配。这种原子交换过程的最终结果可以使线程能够并行地分配和释放到同一个分片,而无需竞争和维护可能增加碎片化的对象缓存。
在一些示例实施方式中,系统中对象的总数将随着时间而变化。如果有大量的小分配,对象总数将会增加。如果存储器主要用于大的分配(例如,高达32KiB),对象总数将较少。因此,对于这个示例实施方式,对象头(object header)的分配不能完全是静态的。对于典型的分配大小,可以专门使用对象头分配。因此,如果分片用于小对象大小,比如512字节,则将需要更多的对象头。在这种情况下,分片可以将一些用户数据区域用于额外的对象头。总的来说,这个示例可以减少大的对象的分片上存储器开销,同时也消除了对对象头的动态分配的需要。
另外,出于性能原因,在一些实施方式中,所公开的存储器分配器支持的大多数大小(例如,页大小、分片大小、对象大小)被保持为二的幂。这种类型的实施方式允许将比特移位用于由分配器执行的至少一部分数学函数,这可以产生所公开的存储器分配技术的进一步性能改进。然后,可以利用比特移位来高效地处置大于实施方式的指针粒度并且小于分片大小(例如,1MiB)的对象大小的任何二的幂。
在一些实施方式中,元数据开销的一个示例可以与对象头相关联,在这个示例中,所述对象头每个为16字节并且可以存储分配器使用的状态和关于使用对象的(多个)最近执行单元的信息两者。因此,所实现的最小对象大小可能倾向于大约(或恰好)256字节。如果元数据本身直接集成到空闲对象的空间中,则元数据开销也可以减少。然而,这种类型的实施方式可能会减少或消除一些好处,比如防止元数据损坏的保护级别。
至少存在三组可以由所公开的存储器分配技术保持(并且可能由存储器分配器本地保持)的试探法。分配器可以使用这三个试探法来减少碎片化随着时间的累积。三个示例试探法中的两个可以保持在页级别,一个可以保持在域级别。具体地,在页内,在一些公开的实施方式中,分配总是首选处于部分状态的分片,因为希望尽可能长时间地保持空分片(例如,假如空分片需要被重新用于不同的分配大小)。此外,在页中处于部分状态的分片中,所公开的实施方式可以选择具有最低(或最高)存储器地址的分片(例如,基于上述优先化)。同样如上所述,这种类型的优先化可能倾向于将存储器向较低地址压缩并使较高地址更有可能保持为空,从而准备好用于新的分配大小。除了在页级别提供的优先化和压缩之外,可以在域级别保持第三试探法。在这个示例中,每一连续64个页的集合可以有一个域条目(注意:具有1MiB的分片并且每页64个分片)。如这个示例实施方式所示,64个页代表4GiB)。域条目试探法可用于跟踪具有干净或脏分片的页的集合以及具有每个大小的部分分片的页的集合。因此,当定位新页以请求分片时,可以优选地使用来自部分状态的最低地址页,随后是来自空状态的最低地址页。这种类型的实施方式可以将存储器压缩扩展到页范围以外的域的大部分并进一步减少碎片化,这甚至可以随着时间的推移进一步提高性能(特别是对于长时间运行的设备)。
回到图5,展示了流程图来表示在所公开的存储器分配技术中使用的可能方法500。例如,存储器分配器函数可以实施方法500作为其处理算法的一部分,以满足计算机设备的存储器分配请求。方法500在框505处开始,在所述框处,可以就定义存储器各部分的层次结构做出确定,所述层次结构可以包括上述域、页、分片和对象的层次结构。流程继续到框510,在所述框处,可以维护数据结构来跟踪每个分割级别的存储器各部分的属性(包括状态和时延属性)。框515指示可以确定存储器分区的统计数据并将其添加到任何适当的跟踪数据结构中(取决于实施要求)。框520指示可以例如在存储器分配器函数处接收对存储器分配的请求。框525指示可以判定存储器的哪些可用部分可以满足请求。框525还指示分片可能已经被执行单元使用并且具有足够的适当对象大小的可用存储器来满足存储器分配请求。在调研其他可用存储器区域之前,可以遵守执行单元对存储器区域的这种亲合力。决策527判定是否可以仅基于亲合力来标识满足分配请求的存储器。如果是,即决策527的是分支,流程可以继续到框550(下面讨论)来执行分配。然而,如果不是,即决策527的否分支,流程可以继续到框530,在所述框处,可以根据需要确定额外分片。注意,示例方法500的流程仅作为示例呈现并且选择标准的顺序可以以不同于示出的顺序被优先化。在一个示例实施方式中,活动存储器(例如,由执行单元使用的存储器)可以在不同的选择标准中具有最高优先级(如方法500所示)。此外,可以基于设计标准以不同的顺序应用额外的选择标准,比如状态、接近度、地址。具体地,在一些实施方式中,已经发现亲合力、状态、接近度和地址的优先级顺序(即,以这个顺序)是有益的。
框530指示可以执行存储器(例如,域、页、分片和对象)的优先化标识。例如,如上所述,利用基于状态分配成本和存储器位置分配成本的优先化,可以单独或组合使用这些成本中的每一个。决策535判定是否已经确定足够和适当的存储器来满足存储器分配请求。如果不是,即决策535的否分支,流程继续到框540,在所述框处,可以执行第二级优先化以进行存储器确定。例如,基于存储器地址或接近度属性(或其组合)的第二级优先化。决策545判定在第二级优先化之后是否已经标识出满足请求的存储器。如果不是,即决策545的否分支,流程继续到框565,在所述框处,可以使用回退到其他分配技术来判定是否需要任何剩余的存储器来扩充已经确定的存储器(例如,基于第一和第二级优先化)或者是否可以使用除了优先化选择之外的技术来满足分配请求。框565表示优选地在实际系统中永远不被激活的特殊情况。
返回到决策535(和545),如果在这些决策中的任一个之后,确定已经标识出足够和适当的存储器来满足分配请求,即535或545的是分支,流程继续到框550,在所述框处,可以分配优先化标识的存储器。例如,上述控制数据结构可以被更新以反映对执行单元的分配并且存储器可以对这个执行单元可用。框555指示,在可能的情况下,可以在分配存储器时避免页锁定。框560指示,一旦存储器对进行请求的执行单元(线程、进程或应用程序)可用,流程可以返回框520以等待下一个存储器分配请求。
图6是根据一个或多个公开的实施方式的表示支持存储器分配技术(例如,存储器分配器函数)的计算设备600的框图。计算设备600包括至少一个硬件处理器601和机器可读存储介质602。如所示,机器可读介质602可以存储指令,所述指令在由硬件处理器601(直接或通过仿真/虚拟化)执行时使硬件处理器601执行一个或多个公开的技术以基于从存储器各部分的层次结构中对可用存储器的优先化选择来分配存储器。
由存储在机器可读存储介质602上并由硬件处理器601执行的指令实施的技术可以类似于上面讨论的方法500的技术。框605指示可以存储指令以使一个或多个硬件处理器执行存储器分配过程。框610指示指令可以使硬件处理器601接收对存储器的请求(例如,分配请求)。框615指示指令可以确定适合于满足存储器分配请求的大小要求。框625指示可用存储器区域的接近度属性可以用作由硬件处理器601执行的确定的一部分。框630指示指令可以使硬件处理器601根据所有可用分片(和对象)的不同状态(以及可能的其他属性)基于分片的优先级来选择可用存储器部分。框635指示可以以增加存储器的紧凑性和减少整体存储器碎片化的方式来分配存储器部分。框640指示存储器可以被分配给进行请求的执行单元(例如,进程、线程或应用程序)并且可以执行返回以等待下一个请求。
图7表示根据一个或多个公开的实施方式的可以用于实施所公开的存储器管理技术的全部或部分的计算机网络基础设施。网络基础设施700包括本公开的实施方式(包括公开的优先化存储器分配技术)可以在其中操作的一组网络。例如,可以存在支持在具有位于不同位置的节点的硬件集群(例如,数据中心)内实施的数据存储的多个服务器并且这些数据中心可以通过网络基础设施700彼此通信。网络基础设施700包括客户网络702、网络708、蜂窝网络703和云服务提供商网络710。这些网络中的任何一个可以具有从根据本公开配置的服务器和/或网络设备提供或接收消息的节点。即,这些不同网络中的每一个可以包括可以受益于本公开的概念的网络通信设备上的一个或多个HBA或CNA。在一个实施方式中,客户网络702可以是本地专用网络,比如局域网(LAN),其包括各种网络设备,包括但不限于交换机、服务器和路由器。
这些网络中的每一个可以包含有线或无线可编程设备并且使用任何数量的网络协议(例如,TCP/IP)和连接技术(例如,网络或)来操作。在另一实施方式中,客户网络702代表企业网络,所述企业网络可以包括或通信耦接到一个或多个局域网(LAN)、虚拟网络、数据中心和/或其他远程网络(例如,708、710)。在本公开的上下文中,客户网络702可以包括使用诸如上述那些方法和技术的一个或多个高可用性数据存储(例如,仲裁数据存储)、交换机或网络设备。
如图7所示,客户网络702可以连接到一个或多个客户端设备704A-704E并且允许客户端设备704A-704E经由网络708(例如,因特网)彼此通信和/或与云服务提供商网络710通信。客户端设备704A-704E可以是计算系统,比如台式计算机704B、平板计算机704C、移动电话704D、膝上型计算机(示出为无线)704E和/或一般地示为客户端设备704A的其他类型的计算系统。在这种情况下,不应将客户端设备与基于服务器的应用(或分布式应用)的客户端应用混淆,因为它们代表客户端-服务器架构中的设备,而不是应用。然而,虽然客户端设备确实可能经常运行客户端应用,但是存在客户端设备将执行客户端-服务器应用的服务器侧的情况,使得客户端设备与服务器设备(例如,执行客户端应用)通信以代表客户端设备请求远程执行。即,对于给定的客户端-服务器应用架构,客户端设备可以执行服务器应用部分,而服务器设备执行客户端应用部分。一般来说,应用的客户端部分是请求某个工作并接收工作的结果的部分,服务器部分接收对工作的请求、执行这个工作并提供结果。
网络基础设施700还可以包括通常称为物联网(IoT)的其他类型的设备(例如,边缘IOT设备705),其可以被配置为经由网络发送和接收信息以访问云计算服务或者与远程web浏览器应用交互(例如,接收配置信息)。
图7还展示了客户网络702包括本地计算资源706A-706C,所述本地计算资源可以包括服务器(例如,用于SAN的数据存储服务器)、接入点、路由器、或被配置为提供本地计算资源和/或促进网络与设备之间的通信的其他设备。例如,本地计算资源706A-706C可以是一个或多个物理本地硬件设备,它们实施如上所述的存储器管理技术以允许它们长时间执行而无需重启。本地计算资源706A-706C还可以促进其他外部应用程序、数据源(例如,707A和707B)和服务与客户网络702之间的通信。
网络基础设施700还包括与移动通信设备一起使用的蜂窝网络703。移动蜂窝网络支持移动电话和许多其他类型的移动设备,比如笔记本电脑等。网络基础设施700中的移动设备被示为移动电话704D、膝上型计算机704E、和平板计算机704C。当诸如移动电话704D的移动设备移动时,所述移动设备可以与一个或多个移动提供商网络交互,典型地与多个移动网络塔720、730和740交互以连接到蜂窝网络703。
图7展示了客户网络702耦接到网络708。网络708可以包括当今可用的一个或多个计算网络,比如其他LAN、广域网(WAN)、因特网和/或其他远程网络,以便在客户端设备704A-704D与云服务提供商网络710之间传输数据。网络708内的每个计算网络可以包含在电和/或光域中操作的有线和/或无线可编程设备。
在图7中,云服务提供商网络710被示为能够经由客户网络702和网络708与客户端设备704A-704E通信的远程网络(例如,云网络)。云服务提供商网络710充当向客户端设备704A-704E和/或客户网络702提供额外计算资源的平台。在一个实施方式中,云服务提供商网络710包括具有一个或多个服务器实例714的一个或多个数据中心712。云服务提供商网络710还可以包括一个或多个框架或集群(和集群组),所述框架或集群代表可以受益于本公开的技术的可扩展计算资源。此外,云服务提供商通常需要近乎完美的正常运行时间可用性并且可以使用所公开的技术、方法和系统来提供这种服务水平。
图8展示了可用于实施本公开的功能、模块、处理平台、执行平台、通信设备以及其他方法和过程或与其一起使用的计算设备800。例如,图8所示的计算设备800可以表示如图4或7中的任一者所示的客户端设备或物理服务器设备。根据计算设备的抽象级别,每个设备可以包括(多个)硬件或虚拟处理器。具体地,以上讨论的存储服务器、应用服务器、网络设备和其他处理设备中的每一个可以被认为是类似于计算设备800的计算设备的实例。在一些情况下(没有抽象),如图8所示,计算设备800及其元件各自涉及物理硬件。可替代地,在一些情况下,可以使用仿真器或虚拟机作为抽象级别来实施一个、多个或所有元件。在任何情况下,无论远离物理硬件有多少抽象级别,处于其最低级别的计算设备800都可以在物理硬件上实施。
同样如图8所示,计算设备800可以包括一个或多个输入设备830,比如键盘、鼠标、触摸板或传感器读出器(例如,生物扫描仪),以及一个或多个输出设备815,比如显示器、音频扬声器或打印机。一些设备也可以被配置为输入/输出设备(例如,网络接口或触摸屏显示器)。
计算设备800还可以包括通信接口825,比如可以包括有线通信组件和/或无线通信组件的网络通信单元,其可以通信地耦接到处理器805。网络通信单元可以利用各种专有或标准化网络协议(列举许多协议中的几个,比如以太网、TCP/IP)中的任何一种,以实现设备之间的通信。网络通信单元还可以包括一个或多个收发器,所述收发器利用以太网、电力线通信(PLC)、WiFi、蜂窝和/或其他通信方法。
如图8所示,计算设备800包括处理元件,比如包含一个或多个硬件处理器的处理器805,其中每个硬件处理器可以具有单个或多个处理器核。在一个实施方式中,处理器805可以包括存储由处理器805的一个或多个其他组件使用的数据(例如,计算指令)的至少一个共享缓存。例如,共享缓存可以是存储在存储器中的本地缓存数据,用于由组成处理器805的处理元件的组件更快地访问。在一个或多个实施方式中,共享缓存可以包括一个或多个中级缓存,比如级别2(L2)、级别3(L3)、级别4(L4)或其他级别的缓存、最后一级缓存(LLC)或其组合。处理器的示例包括但不限于中央处理单元(CPU)和微处理器。尽管在图8中未示出,构成处理器805的处理元件也可以包括一个或多个其他类型的硬件处理组件,比如图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或数字信号处理器(DSP)。
图8展示了存储器810可以可操作地和通信地耦接到处理器805。存储器810可以是被配置为存储各种类型的数据的非暂时性介质。例如,存储器810可以包括一个或多个存储设备820,所述存储设备包括非易失性存储设备和/或易失性存储器。诸如随机存取存储器(RAM)的易失性存储器可以是任何合适的非永久性存储设备。非易失性存储设备820可以包括一个或多个磁盘驱动器、光学驱动器、固态驱动器(SSD)、磁带驱动器、快闪存储器、只读存储器(ROM)和/或被设计为在断电或关闭操作之后保持数据一段时间的任何其他类型的存储器。在某些情况下,如果分配的RAM不足以保存所有工作数据,则非易失性存储设备820可以用于存储溢出数据。非易失性存储设备820还可以用于存储当选择程序用于执行时加载到RAM中的这样的程序。
本领域普通技术人员知道,可以针对各种软件平台和/或操作系统以各种计算语言开发、编码和编译软件程序并且随后由处理器805加载和执行所述软件程序。在一个实施方式中,软件程序的编译过程可以将用编程语言编写的程序代码转换成另一种计算机语言,使得处理器805能够执行编程代码。例如,软件程序的编译过程可以生成可执行程序,所述可执行程序为处理器805提供编码指令(例如,机器代码指令)以完成具体的、非通用的、特定的计算功能。
在编译过程之后,编码指令然后可以作为计算机可执行指令或过程步骤从存储设备820、从存储器810加载到处理器805和/或嵌入在处理器805内(例如,经由缓存或板载ROM)。处理器805可以被配置为执行存储的指令或过程步骤以便执行指令或过程步骤,从而将计算设备转换成非通用的、特定的、专门编程的机器或设备。在执行计算机可执行指令或过程步骤以指示计算设备800内的一个或多个组件期间,处理器805可以访问存储的数据,例如存储设备820存储的数据。
用户界面(例如,输出设备815和输入设备830)可以包括显示器、位置输入设备(比如鼠标、触摸板、触摸屏等)、键盘或其他形式的用户输入和输出设备。用户界面组件可以通信地耦接到处理器805。当输出设备是或包括显示器时,显示器可以以各种方式实施,包括通过液晶显示器(LCD)或阴极射线管(CRT)或发光二极管(LED)显示器,比如有机发光二极管(OLED)显示器。本领域普通技术人员知道,计算设备800可以包括本领域公知的其他组件,比如传感器、电源和/或模数转换器,在图8中没有明确示出。
在本说明和权利要求中使用了某些术语来指代特定系统组件。如本领域技术人员将理解的,不同方可以用不同的名称来指代组件。本文档无意区分名称不同但功能相同的组件。在本公开和权利要求中,术语“包括”和“包含”以开放式的方式使用,因此应该被解释为意味着“包括但不限于……”。此外,术语“耦接”意在表示间接或直接有线或无线连接。因此,如果第一设备耦接到第二设备,则这个连接可以通过直接连接或者通过经由其他设备和连接的间接连接。叙述“基于”意在表示“至少部分基于”。因此,如果X基于Y,那么X可能是Y和任意数目的其他因素的函数。
上述讨论意在说明本公开的原理和各种实施方式。一旦充分理解了上述公开,许多变化和修改对于本领域技术人员将变得显而易见。以下权利要求旨在被解释为包含所有这些变化和修改。
Claims (18)
1.一种管理计算机设备的存储器的计算机实施的方法,所述方法包括:
将所述计算机设备上的物理存储器划分成各部分的层次结构,所述各部分的层次结构包括:
一个或多个页;
所述一个或多个页中的每一个包括一个或多个分片;以及
每个分片包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小,但是当活动时则所指派的对象大小保持不变;
维护反映存储器使用状态的一组状态,其中,来自所述一组状态中的一个状态与每个分片相关联,所述一组状态包括:
所述干净状态,用于指示自系统重启以来分片尚未被分配以供使用;
部分状态,用于指示分片包含少于满阈值数量的可用对象;以及
所述脏状态,用于指示分片当前不包含对象并且先前已经用于已确定大小的对象的分配;以及
满状态;
从在硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及
响应于所述请求,从所述一个或多个分片中确定要返回到所述执行单元来满足所述存储器分配请求的一组对象,其中,基于所述一个或多个分片的状态的第一优先级顺序从所述一个或多个分片中确定所述一组对象,其中,状态的所述第一优先级顺序为所述部分状态、所述脏状态、所述干净状态以及所述满状态。
2.如权利要求1所述的计算机实施的方法,其中,所述第一优先级顺序与状态分配成本相关联。
3.如权利要求2所述的计算机实施的方法,其中,所述状态分配成本反映出:所述部分状态优于所述脏状态,所述脏状态优于所述干净状态,所述干净状态优于所述满状态,其中,所述满状态指示分片的多于满阈值的对象正在使用中。
4.如权利要求1所述的计算机实施的方法,其中:
进一步基于第二优先级顺序来确定要返回的所述一组对象,所述第二优先级顺序基于所述分片的存储器地址。
5.如权利要求4所述的计算机实施的方法,其中,所述第二优先级顺序用于优先考虑较低存储器地址的分片,或者,所述第二优先级顺序用于优先考虑较高存储器地址的分片。
6.如权利要求1所述的计算机实施的方法,其中:
进一步基于反映存储器位置成本的物理存储器的接近度属性来确定要返回的所述一组对象。
7.如权利要求1所述的计算机实施的方法,进一步包括:
将所述一组对象返回到所述执行单元。
8.如权利要求1所述的计算机实施的方法,进一步包括:
为每个分片维护至少两个数据结构,包括本地空闲列表和远程空闲列表。
9.一种计算机设备,包括:
第一硬件处理器;
第一硬件处理器可直接访问的一个或多个物理存储器区域;以及
通信地耦接到所述第一硬件处理器的指令存储器区域,其中,所述指令存储器区域存储指令,所述指令在由所述第一硬件处理器执行时使所述第一硬件处理器:
将所述一个或多个物理存储器区域中的每一个划分成各部分的层次结构,所述各部分的层次结构包括:
一个或多个页,所述一个或多个页中的每一个包括一个或多个分片;以及
所述一个或多个分片中的每一个包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小;
维护反映所述一个或多个分片中的每一个的存储器使用状态的一组状态,所述一组状态包括:
活动状态、所述干净状态;部分状态;满状态;以及所述脏状态,其中,所述活动状态指示在使用中的分片,所述干净状态指示未使用的分片,所述部分状态指示具有可用对象的分片,所述满状态指示具有多于满阈值的对象正在使用中的分片,并且所述脏状态指示先前使用过并且所有对象可用的分片;
从在所述第一硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及
部分地基于相应的状态分配成本,作为对与所述一个或多个分片相关联的每个状态的相对优先级的排名,从所述一个或多个分片中选择一个或多个对象。
10.如权利要求9所述的计算机设备,其中,所述状态分配成本与所述一个或多个分片的状态的第一优先级顺序相关联,所述第一优先级顺序包括所述部分状态,之后是所述脏状态,之后是所述干净状态,之后是所述满状态。
11.如权利要求10所述的计算机设备,其中,所述指令存储器区域进一步包括指令,所述指令在由所述第一硬件处理器执行时使所述第一硬件处理器:
进一步基于第二优先级顺序来选择所述一个或多个对象,所述第二优先级顺序基于所述一个或多个分片的存储器地址;以及
将所选择的一个或多个对象返回到所述执行单元以用于处理。
12.如权利要求11所述的计算机设备,其中,所述第二优先级顺序用于优先考虑较低存储器地址的分片,或者,所述第二优先级顺序用于优先考虑较高存储器地址的分片。
13.如权利要求9所述的计算机设备,其中:
进一步基于所述一个或多个物理存储器区域中的每一个物理存储器区域相对于彼此的接近度属性来确定要返回的所述一个或多个对象。
14.一种非暂时性计算机可读介质,包括存储在其上的计算机可执行指令,所述指令在由一个或多个硬件处理器执行时使所述一个或多个硬件处理器:
将一个或多个物理存储器区域中的每一个划分成各部分的层次结构,所述各部分的层次结构包括:
域级别,所述域级别包括一个或多个域;
所述一个或多个域中的每一个包括一个或多个页;
每个页包括一个或多个分片;以及
每个分片包括一个或多个对象,其中,分片内的所述一个或多个对象中的每一个具有一致大小,并且其中,处于干净状态的任何分片和处于脏状态的任何分片是可用的以用于任何对象大小;
维护反映所述一个或多个分片中的每一个的存储器使用状态的一组状态,所述一组状态包括:
所述干净状态;部分状态;满状态;以及所述脏状态,其中,所述干净状态指示未使用的分片,所述部分状态指示具有可用对象的分片,所述满状态指示具有多于满阈值的对象正在使用中的分片,并且所述脏状态指示先前使用过并且所有对象可用的分片;
从在所述一个或多个硬件处理器中的第一硬件处理器上执行的执行单元接收存储器分配请求以分配存储器;以及
部分地基于相应的状态分配成本,作为对与所述一个或多个分片相关联的每个状态的相对优先级的排名,从所述一个或多个分片中选择一个或多个对象;以及
将所选择的一个或多个对象返回到所述执行单元以用于处理。
15.如权利要求14所述的非暂时性计算机可读介质,其中,所述状态分配成本与所述一个或多个分片的状态的第一优先级顺序相关联,所述第一优先级顺序包括所述部分状态,之后是所述脏状态,之后是所述干净状态,之后是所述满状态。
16.如权利要求15所述的非暂时性计算机可读介质,其中,所述指令进一步包括能够由一个或多个硬件处理器执行以执行以下操作的指令:
进一步基于第二优先级顺序来选择要返回的所述一个或多个对象,所述第二优先级顺序基于所述一个或多个分片的存储器地址。
17.如权利要求16所述的非暂时性计算机可读介质,其中,所述第二优先级顺序用于优先考虑较低存储器地址的分片,或者,所述第二优先级顺序用于优先考虑较高存储器地址的分片。
18.如权利要求14所述的非暂时性计算机可读介质,其中:
进一步基于所述一个或多个物理存储器区域中的每一个物理存储器区域相对于彼此的接近度属性来确定要返回的所述一个或多个对象。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/153,792 US10733027B2 (en) | 2018-10-07 | 2018-10-07 | Memory allocator |
US16/153,792 | 2018-10-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008155A CN111008155A (zh) | 2020-04-14 |
CN111008155B true CN111008155B (zh) | 2022-04-01 |
Family
ID=70052134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910620621.2A Active CN111008155B (zh) | 2018-10-07 | 2019-07-10 | 管理计算机设备的存储器的方法、计算机设备、介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10733027B2 (zh) |
CN (1) | CN111008155B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7362321B2 (ja) * | 2019-07-04 | 2023-10-17 | 株式会社東芝 | 情報処理装置、情報処理方法、および情報処理システム |
US11928515B2 (en) | 2020-12-09 | 2024-03-12 | Dell Products L.P. | System and method for managing resource allocations in composed systems |
US11934875B2 (en) | 2020-12-09 | 2024-03-19 | Dell Products L.P. | Method and system for maintaining composed systems |
US11386007B1 (en) * | 2021-04-05 | 2022-07-12 | Oracle International Corporation | Methods and systems for fast allocation of fragmented caches |
US12026557B2 (en) | 2021-07-22 | 2024-07-02 | Dell Products L.P. | Method and system for a utilizing a proxy service to generate a composed information handling system |
US12013768B2 (en) | 2021-07-22 | 2024-06-18 | Dell Products L.P. | Method and system for automated healing of hardware resources in a composed information handling system |
US11947697B2 (en) * | 2021-07-22 | 2024-04-02 | Dell Products L.P. | Method and system to place resources in a known state to be used in a composed information handling system |
US11928506B2 (en) | 2021-07-28 | 2024-03-12 | Dell Products L.P. | Managing composition service entities with complex networks |
US12008412B2 (en) | 2021-07-28 | 2024-06-11 | Dell Products | Resource selection for complex solutions |
CN117453385A (zh) * | 2022-07-19 | 2024-01-26 | 华为技术有限公司 | 内存分配方法、装置及计算机 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924831A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 非易失性存储器系统及操作非易失性存储器系统的方法 |
CN107807946A (zh) * | 2016-09-09 | 2018-03-16 | Sap欧洲公司 | 存储器内数据管理系统的分页机制 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175900B1 (en) | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
KR101376268B1 (ko) | 2006-10-13 | 2014-03-21 | 에스케이텔레콤 주식회사 | 단말기의 메모리 할당 장치 및 방법 |
US7861056B2 (en) * | 2007-01-03 | 2010-12-28 | Tekelec | Methods, systems, and computer program products for providing memory management with constant defragmentation time |
US9886313B2 (en) * | 2015-06-19 | 2018-02-06 | Sap Se | NUMA-aware memory allocation |
US10725824B2 (en) * | 2015-07-10 | 2020-07-28 | Rambus Inc. | Thread associated memory allocation and memory architecture aware allocation |
-
2018
- 2018-10-07 US US16/153,792 patent/US10733027B2/en active Active
-
2019
- 2019-07-10 CN CN201910620621.2A patent/CN111008155B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924831A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 非易失性存储器系统及操作非易失性存储器系统的方法 |
CN107807946A (zh) * | 2016-09-09 | 2018-03-16 | Sap欧洲公司 | 存储器内数据管理系统的分页机制 |
Also Published As
Publication number | Publication date |
---|---|
CN111008155A (zh) | 2020-04-14 |
US10733027B2 (en) | 2020-08-04 |
US20200110639A1 (en) | 2020-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008155B (zh) | 管理计算机设备的存储器的方法、计算机设备、介质 | |
US9760497B2 (en) | Hierarchy memory management | |
US10552337B2 (en) | Memory management and device | |
US9262334B2 (en) | Seamless application access to hybrid main memory | |
CN110663019B (zh) | 用于叠瓦式磁记录(smr)的文件系统 | |
US9459806B2 (en) | Combining virtual mapping metadata and physical space mapping metadata | |
US8131969B2 (en) | Updating system configuration information | |
US11144451B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20040148360A1 (en) | Communication-link-attached persistent memory device | |
US20160202931A1 (en) | Modular architecture for extreme-scale distributed processing applications | |
US10430329B2 (en) | Quality of service aware storage class memory/NAND flash hybrid solid state drive | |
RU2641244C2 (ru) | Унифицированный доступ к совместно используемой и управляемой памяти | |
US8122182B2 (en) | Electronically addressed non-volatile memory-based kernel data cache | |
US8954666B2 (en) | Storage subsystem | |
US11409454B1 (en) | Container ownership protocol for independent node flushing | |
CN102289409A (zh) | 分层可伸缩的存储器分配器 | |
WO2018031339A1 (en) | Repartitioning data in a distributed computing system | |
JP2012123556A (ja) | 仮想サーバーシステム、及びその制御方法 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN113535392B (zh) | 基于cma实现支持大内存连续分配的内存管理方法及系统 | |
CN112948336B (zh) | 数据加速方法及缓存单元、电子设备及存储介质 | |
CN115794368A (zh) | 业务系统、内存管理方法及装置 | |
CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
US11853574B1 (en) | Container flush ownership assignment | |
EP4120087A1 (en) | Systems, methods, and devices for utilization aware memory allocation |
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 |