CN116710886A - 精简配置的分离式存储器中的页面调度 - Google Patents
精简配置的分离式存储器中的页面调度 Download PDFInfo
- Publication number
- CN116710886A CN116710886A CN202180082097.3A CN202180082097A CN116710886A CN 116710886 A CN116710886 A CN 116710886A CN 202180082097 A CN202180082097 A CN 202180082097A CN 116710886 A CN116710886 A CN 116710886A
- Authority
- CN
- China
- Prior art keywords
- memory
- segments
- pool
- computer system
- pooled
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 626
- 230000004044 response Effects 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 11
- 238000005259 measurement Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 8
- 238000011156 evaluation Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 235000008694 Humulus lupulus Nutrition 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000779 depleting effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 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/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
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文公开了一种具有分离式存储器池和池化存储器控制器的精简配置的多节点计算机系统。分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用,这样的存储器容量相对于多个计算节点被精简配置。池化存储器控制器被配置为:将分离式存储器池的多个存储器段指派给多个计算节点;将多个段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于阈值;以及将冷段中的一个或多个冷段页面调度出到扩展大容量存储器设备,从而释放分离式存储器池的一个或多个被指派的存储器段。
Description
背景技术
数据中心通常包括大量离散计算节点,诸如服务器计算机或其他合适的计算设备。计算节点可以利用可变的存储器量,使得实际使用通常显著低于总容量。
发明内容
提供本发明内容是为了以简化的形式介绍概念的选集,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护主题的范围。此外,所要求保护的主题不限于解决本公开的任何部分中指出的任何或所有缺点的实现。
本文公开了一种具有分离式存储器池和池化存储器控制器的精简配置的多节点计算机系统。分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用,这样的存储器容量相对于多个计算节点被精简配置。池化存储器控制器被配置为:
(1)将分离式存储器池的多个存储器段指派给多个计算节点,(2)将多个段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于阈值,以及(3)将冷段中的一个或多个冷段页面调度出到扩展大容量存储器设备,从而释放分离式存储器池的一个或多个被指派的存储器段。
附图说明
图1示意性地描绘了与分离式存储器池耦合的多个计算节点。
图2示出了在精简配置的多节点计算机系统中管理存储器的示例方法。
图3至图4示意性地描绘了由计算节点在操作期间使用的存储器地址以及分离式存储器池中的对应的物理存储器位置。
图5示意性地描绘了当总存储器指派超过预定义阈值量时的分离式存储器池。
图6示意性地描绘了将数据从扩展存储器页面调度到分离式池的扩展大容量存储器以减小扩展存储器上的压力。
图7示意性地示出了示例计算系统。
具体实施方式
如上所讨论的,数据中心通常具有大量的服务器计算机或其他离散计算节点。这样的计算节点可以被称为“主机计算设备”或“主机”,因为它们在某些情况下可以用于托管多个虚拟机。然而,应当理解,本文所讨论的计算节点可以用于任何合适的计算目的,而不需要专门用于托管虚拟机。此外,出于本文所讨论的存储器池场景的目的,主机本身可以是虚拟机。主机/节点通常配置有指定的最大存储器分配(例如,1GB、8GB、1TB、8TB或任何其他合适的存储器分配)。这种分配本质上是对提供给操作系统和应用的节点的直接可访问存储器的表征。指定的存储器分配可以部分地由本机附接到离散节点或托管节点的机器的存储器来提供,并且部分地经由使用可以与多个不同节点相关联的池化存储器资源来提供。在一些情况下,分配给节点的存储器可以在几乎没有限制和非常低的延迟的情况下被立即访问,而在其他情况下,可能需要协调的活动来访问可以对其他节点可用的存储器。
根据具体的实现,每个单独的计算节点可以具有计算机硬件的任何合适的组合或由其支持。在传统设置中,服务器通常被配置为基本上自给自足的,具有处理资源、数据存储、存储器、网络接口组件、电源、冷却等,以便能够在不需要利用任何外部资源的情况下操作。也就是说,刀片服务器或机架节点有时省略冷却、电源或其他低水平基础设施,这些功能被下放到服务多个节点的共享组件。
在多节点设置中,工作负载可能因节点不同而差异较大。例如,数据中心节点的子集可能承担资源密集型工作负载的任务,而其他节点则相对空闲。因此,尽管有一些高的本地化活动,但总资源消耗可以相对低,并且由于节点的配置方式,处于空闲负载的资源不能被在其处活动高的计算节点“借出”或以其他方式消耗。这种无法利用空闲资源的情况效率低下,并且有时被称为“资源搁浅”。换句话说,可以应用于计算任务的资源反而搁浅在空闲或未充分利用的主机中。
更具体地,关于易失性存储器,当平均存储器消耗/使用小于本机附接存储器的量时,发生存储器资源的搁浅。例如,如果刀片服务器被配置有512GB的本机附接存储器,则存储器的128GB的统计实际使用构成了存储器资源的显著搁浅。当跨大量节点缩放时,这种类型的低效率可能是显著的。
当硬件资源从各个计算节点中被提取出来,并且被“分离”为经连接的计算节点可以灵活地访问的单独的资源池时,可以缓解搁浅。本公开主要考虑如下的场景,其中易失性存储器硬件(例如,随机存取存储器(RAM))被分离到存储器池中,并且被管理以允许其被多个计算节点中的任何计算节点灵活使用——例如,在数据中心中。这有助于缓解资源搁浅,因为计算节点可以根据需要获得和释放存储器。
在许多示例中,共同分配给多个计算节点的存储器的量可能会超过可用的本机存储器和池化存储器的总和。换言之,共享存储器容量可以被暴露给多个计算节点,其中单个容量对多个计算节点中的每个计算节点是虚拟可用的,使得在实现中使用的总物理存储器容量小于对多个计算机节点中的每个计算节点虚拟可用的单个容量的总和。这有时被称为存储器相对于多个计算节点的“精简配置”。通常,在没有精简配置的数据中心环境中,可以观察到,在统计学上随着时间的推移,各个计算节点(和/或在计算节点上实现的虚拟机)通常被配置有比计算节点最终实际使用的资源(例如,存储空间、存储器)多得多的资源。
然而,当稀疏地配置存储器时,如果多个不同的计算节点试图同时使用大部分存储器(例如,如果所有计算节点都试图使用接近其全部存储器分配的存储器量),则分离式存储器池可能会经受相当大的压力。如本文所使用的,池上的存储器压力是指如下情况,其中计算节点试图共同使用比分离式存储器池中可用的存储器多的存储器,或者计算节点试图共同使用超过阈值的存储器量,该阈值可以是预定义的或以其他方式确定的。
因此,本公开公开了用于通过使用池化存储器控制器来解决池化存储器在其中被提出更高需求的场景的技术。池化存储器控制器通常被配置为管理分离式存储器(由控制器直接管理的池存储器,或者由其他控制器管理的、诸如大容量故障转移存储器的外部存储器或其他池段),以满足节点指派请求,从而指派直到节点的总分配的存储器。应当理解,在一些示例中(例如,在池使用量高于阈值或者,更严重地,超过最大容量的存储器压力情况下),池化存储器控制器可能不能立即为所请求的指派提供物理存储器。然而,使用本公开的技术,池化存储器控制器可以以各种方式对池压力作出响应,以便满足对更多池存储器的有效请求。
在一些示例中,池化存储器控制器通过撤销来自一个或多个计算节点的池指派来解决存储器压力。撤销可以基于如下评估:计算节点对当前被指派给它们的池存储器具有较低的优先级/需求。在这些或其他示例中,存储器指派请求可以被路由到可能仍然具有可用存储器的不同的分离式存储器池段,即由不同的存储器控制器管理的池存储器。例如,池化存储器控制器可以被配置为将存储器指派请求路由到扩展大容量存储器池。在一些示例中,池化存储器控制器可以将数据从扩展存储器交换到另一个池段或扩展大容量存储器池中,以保留被交换出的数据。池化存储器控制器可以以任何适当的方式撤销池指派和/或交换数据,以便管理对存储器池的池压力,同时适当地向多个计算节点提供可用的存储器。
关于图1示意性地说明了存储器的分离。如所示出的,计算机系统100包括多个计算节点100A至100N(其中N是任何合适的正整数,例如,十、数百、数千、数百万或更多),其与管理对分离式存储器资源的访问的池化存储器控制器104耦合。这些存储器资源在包括扩展存储器106A和扩展大容量存储器106B的分离式存储器池106中。例如,扩展存储器106A可以包括动态随机存取存储器(DRAM),该DRAM包括多个DRAM段(例如,由一个或更多个DRAM设备提供的DRAM段)。例如,扩展大容量存储器106B可以包括SSD设备。
分离式存储器池106被配置为(例如,在计算节点的本机存储器容量之外)经由扩展存储器106A使得共享存储器容量(例如,1TB的存储器或任何其他适当量的存储器)对于多个计算节点中的每个计算节点可用。此外,扩展大容量存储器106B被配置为提供附加存储,例如提供共享存储器容量的溢出。如下面更详细地讨论的,计算节点100A、100B等与存储器控制器104之间的交互的重要方面是智能地管理池化存储器资源,并避免会阻碍将池化存储器灵活地指派给需要附加容量的节点的过度压力。
在一些示例中,每个计算节点可以具有本机附接的存储器(例如,计算节点100A的本机存储器102A、节点100B的本机存储器102B和节点100N的本机存储器102N)。本机附接的存储器可以具有任何合适的大小。在一些示例中,本机附接的存储器可以是容错的(例如,利用独立磁盘冗余阵列(RAID)技术)。因此,计算节点可以被配置为优先将容错的本机存储器用于故障敏感的代码和/或数据。优先使用本机存储器也可以减少共享资源的压力。在各种示例中,数十个、数百个、数千个或更多个单独的计算节点可以共享对包括分离式存储器池106的一个或多个分离式资源池的访问。
在一些示例中,多个计算节点中可以各自经由高速和/或高吞吐量总线(例如,经由光子互连)可操作地耦合到池化存储器控制器104。例如,光子互连可以显著减少与由计算节点100A至100N访问扩展存储器106A相关联的延迟,即使当这种访问由池化存储器控制器104调节时。在一些示例中,光子互连可以允许以相对于访问本机存储器最小的延迟来访问扩展存储器106A,例如,在相对于访问本机存储器的零、一、二或其他适当少的数目的附加非均匀存储器访问(NUMA)跳中。在一些示例中,例如可以在存储器控制器104上并入存储器侧高速缓存,以减少与节点对池存储器的读取/写入相关联的延迟。在一些示例中,多个计算节点中的一个或多个计算节点可以包括NUMA感知的存储器控制器,该存储器控制器被配置为优化计算节点的本机存储器和分离式存储器池106(例如,扩展存储器106A和/或扩展大容量存储器池106B)的一项或多项中的存储器段布局。例如,计算节点可以被配置为将可能被频繁访问的数据存储在相对较小数目的NUMA跳内的位置中(例如,在本机存储器中或在分离式存储器池中),并且将可能不太被频繁访问的数据存储在较大数目NUMA跳内的位置中(例如,在扩展大容量存储器池中)。
在一些示例中,池化存储器控制器104可以包括一个或多个符合计算快速链路(CXL)的池化存储器控制器(CPMC)。在一些示例中,扩展存储器106A可以使用任何合适类型的易失性RAM来实现——例如,双倍数据速率同步动态RAM(DDR SDRAM)。池化存储器控制器104可以促进由各种计算节点100A至100N中的任意计算节点或所有计算节点对分离式存储器池106的利用。应当理解,分离式存储器池可以包括与任何合适的总存储器容量对应的任何合适数目的物理存储器单元,并且可以由一个或多个不同的存储器控制系统控制。在一些情况下,节点可以被限制为使用单个存储器控制器104后面的存储器,或者可以使用多个池段,而“段”是指由单个存储器控制器管理的存储器。
通常,单个计算节点可以包括本机存储器控制器和/或其他控制器、总线等,其被配置用于寻址/访问本机存储器。本机存储器控制器可以被配置为确定存储器访问(例如,读取或写入)何时寻址到本机存储器(即,本地的并且紧密耦合到计算节点的资源的)中,从而在不外部参考分离式存储器池的情况下处理这种访问。此外,本机存储器控制器可以是“池感知的”,并且被配置为确定存储器访问何时参考分离式存储器池中的存储器。为了处理这种存储器访问,本机存储器控制器的池感知子组件(例如,经由硬件、固件和/或软件)根据需要进行协调,以访问由池化存储器控制器管理的存储器段。通常,在计算节点上运行的软件(包括OS)可能在很大程度上或完全不知道所访问的存储器的具体位置(例如,本机存储器与来自池的被指派的存储器),同时仍然被配置为看到包括本机存储器和池化存储器两者的总存储器分配。因此,在计算节点上运行的软件可能完全未感知和/或不可知所分配的存储器在本机存储器和分离式存储器池之间的具体分布。本机存储器控制器和/或池化存储器控制器可以以任何合适的方式协作以实现本文所述的功能,例如,存储器分配、存储器指派、存储器寻址和/或存储器访问(例如,读取和/或写入)。
在没有精简配置的一个示例场景中,分离式存储器池可以包括1TB(1024GB)的总存储器,其可以均匀地分布在八个计算节点之间。此外,每个计算节点可以包括128GB的本机附接存储器(例如,本机存储器102A、本机存储器102B和本机存储器102N可以各自包括对应计算节点本地的128GB的存储器)。因此,每个计算节点可以被指派分离式存储器池的128GB的存储器,同时在本机附接存储器和池化存储器之间总共有256GB的被配置的存储器。总的来说,再次在本机附接存储器和池化存储器之间,八个计算节点可以访问2TB的存储器总量。在这个例子中,由于128GB的本机存储器和128GB的池化存储器,从节点的内部OS和存储器系统的角度来看,每个节点被分配256GB的存储器。也就是说,节点“看到”256GB的可用存储器。
然而,每个计算节点通常不可能完全利用其存储器分配。相反,在更常见的场景中,每个计算节点在正常使用期间可能仅使用其被分配的存储器的最多50%,并且一些计算节点可以使用远少于50%。因此,即使1TB分离式存储器池将被完全指派给多个计算节点,在任何给定时间只有相对小部分的池化存储器可能会被使用,并且这表示对可用资源的低效使用。
考虑到这一点,可以在不显著影响多个计算节点性能的情况下减少存储器池中实际可用的——即,“被配置的”——存储器量。例如,每个计算节点的存储器空间仍然可以被构造为使得其存储器分配的池部分为128GB(因此当将八个节点相加时总计为1TB),例如通过提供用于128GB远程存储器的地址范围,然而,存储器池可以实际仅被配置有总共256GB。因此,被分配的存储器的量超过了实际被配置的存储器的量。换言之,虽然每个计算节点可以被允许使用多达128GB的池存储器作为其256GB分配的一部分,但在统计上,许多计算节点在任何给定时间都可能不会使用该128GB的全部或者甚至很大一部分。
此外,不同计算节点之间,存储器分配需求可能不同(例如,基于针对不同虚拟机、程序和/或计算服务的不同存储器需求)。例如,第一虚拟机可以被分配1TB的存储器,而不同的第二虚拟机可以被分配2TB的存储器。更一般地,不同的虚拟机可以根据需要针对不同的计算工作负载分配任何合适的存储器量。因此,指派给一个计算节点的任何未使用的存储器可以被重新指派给其他节点中的一个或多个节点。以这种方式,如果需要,则任何特定的计算节点可以在仍然保留分离式池中的存储器的同时使用多达128GB的池存储器,因为每个计算节点通常在任何给定时间都不会使用128GB。
这种精简配置可以在任何合适的程度上进行。在多节点分组中,可用存储器的量——本机的加池化的——超过由计算节点在典型情况下使用的存储器量通常是有益的。换言之,如果各个计算节点平均使用大约256GB,那么通常希望在本机附接存储器和池化存储器之间实际配置略多于256GB的存储器,使得计算节点在正常使用期间不会耗尽可用存储器。然而,在实践中,任何合适的存储器量可以在分离式存储器池中被配置,其可以与被分配给多个计算节点的存储器量具有任何合适的关系。
针对计算节点的分配是计算节点在整个操作过程中可以使用的最大存储器量。该分配可以具有对应的地址空间大小,该地址空间大小可以超过在任何给定时间对计算节点可用的物理存储器。这种“可用性”指的是本机附接存储器加上来自池的、“被指派”给由节点立即/当前使用的存储器量,在操作过程中,该存储器量通常小于每次分配可以指派给节点的最大池存储器量。换句话说,节点被配置有可视化存储器分配,该存储器分配对应于其本机附接存储器加上已“被承诺”给节点的最大池存储器量。池存储器的“指派”是来自池的可变量的存储器,其范围从零到节点被允许使用的最大池存储器量。池存储器可以在计算机系统的操作期间的任何时间被指派给计算节点。例如,响应于使用存储器地址或存储器地址范围的请求,或者在任何其他时间用于任何合适的计算目的,可以在引导时的初始指派中或者在任何后续分配操作中将存储器指派给计算节点。此外,本公开的存储器控制器可以灵活地控制存储器指派,例如,将附加的存储器指派给在操作期间需要的计算节点、放弃先前的存储器指派(例如,以便释放存储器池中的存储器)、和/或管理对存储器池的池压力,如将在下文中描述的。
如刚刚提到的,计算节点可以请求指派物理存储器以提供所分配的地址空间的一部分(例如,以增加存储器使用)。例如,所提供的部分可以包括存储器的一个或多个“段”,其中段是指存储器的任何连续部分(例如,存储器页、或者与指示由池化存储器控制器管理的存储器部分的最小粒度的段大小对齐的任何其他存储器块,例如,8KB段、8MB段、1GB段或任何其他合适的段大小)。如本文所述的存储器控制器可以通过向请求计算节点提供对由池控制器管理的物理存储器的一个或多个段的访问(例如,读取和存储数据)来进行响应。
尽管本公开是关于多个计算节点和单个池化存储器控制器来描述的,但是应当理解,计算节点可以使用多个不同的池化存储器控制器。例如,计算节点可以耦合到两个或任意数目的不同池化存储器控制器。备选地或附加地,分组中的一些计算节点可以使用第一池化存储器控制器,而其他计算节点使用第二池化存储器控制器。多个池化存储器控制器可以被配置用于任何合适的目的,例如,提供更大的存储器资源池,跨多个控制器条带化存储器指派(例如,以提供冗余和/或增强的速度,如在RAID配置中,以在一个或多个存储器控制器故障和/或相关联的存储器硬件故障的情况下提供故障转移),和/或提供大规模的、按比例放大的计算生态系统。在一些示例中,附加的池化存储器控制器可以被配置为提供分离式存储器资源的扩展池(例如,其中每个存储器控制器管理存储器池的段)。例如,如果存储器指派将超过第一池化存储器控制器104的预定义阈值和/或容量,则可以使用由不同池化存储器控制器提供的存储器资源来进行后续指派和/或数据交换(例如,代替或除了使用如本文所述的扩展大容量存储器池)。
本文对预定义的使用阈值进行了各种参考,该使用阈值对应于触发响应动作的存储器池压力水平。在某些情况下,使用静态阈值——例如固定的使用量、使用百分比、活动水平。在其他情况下,阈值可以是基于操作条件动态的。例如,可以使用机器学习模型来标识行为模式,以确定可操作的压力何时被施加在存储器池上。更进一步地,可以采用分级来标识多个存储器压力程度。在这种情况下,可以在适度的压力水平下采取一组对策,并且在更高的压力水平下进行更实质性的干预。
在一些示例中,扩展大容量存储器池106B可以与计算节点分立,并且通常将具有较低的相关联成本(例如,用于配置的财务成本、计算设备占地面积内的空间成本、和/或用于维护和/或访问存储器内数据的功率成本),从而相对于扩展存储器106A促进更大的容量。通常,与扩展存储器106A相比,扩展大容量存储器池106B一般可能会具有针对访问所存储数据的更高延迟。用于扩展大容量存储器池106B的存储器技术的非限制性示例包括硬盘、固态驱动器(SSD)和/或联网资源(例如,被配置为与空间上不同的计算设备接口以访问SDRAM存储器、硬盘和/或与空间上不同的计算设备相关联的SSD资源的网络接口)。在一些示例中,扩展大容量存储器106B可以充当用于一个或多个不同池化存储器控制器的扩展大容量存储器池(例如,池化存储器控制104和与不同计算节点集合相关联的一个或多个附加池化存储器控制器可以被配置为在必要时利用扩展大容量存储器106B的不同段)。
每当节点需要访问存储器段时(例如,在存储器分配或指派期间或响应于所尝试的存储器访问),节点可以与池化存储器控制器104协商,以确定节点是否应该从分离式存储器池106被指派以及节点应该从分离式存储器池106被指派多少存储器。例如,与池化存储器控制器104的协商可以由池化存储器控制器的池感知子组件来执行。例如,如果计算节点请求将在预定义阈值和/或容量内的指派(即,池上的压力很小或没有压力),则池化存储器控制器104可以简单地提供完全指派,而不需要压力减轻干预。对节点的指派通常会导致节点保持在或低于分配给节点的操作系统/应用的最大存储器量
在操作期间的任何时刻,池化存储器控制器104可以确定存储器池上是否存在过度的压力。例如池化存储器控制器104可以响应于请求存储器指派的计算节点或者在任何时间进行这样的确定(例如,基于可能导致计算节点和其他计算节点的未来指派的总指派和/或总分配,或者基于当前或未来分配可能导致进一步指派的任何合适的逻辑评估,诸如对一个或多个计算节点的资源使用增加的预测)。当提供存储器指派可能导致相当大的存储器压力时,池化存储器控制器104可以被配置为使用其他存储器资源(例如,扩展大容量存储器池106B)来提供指派,和/或在提供指派之前、在提供指派之后或与提供指派同时地减少对另一节点的存储器指派。此外,池化存储器控制器104被配置为通过将被指派的存储器的一个或多个段(例如,任何合适大小(诸如预定大小,例如8Kb)的部分或切片)从扩展存储器106A交换到扩展大容量存储器池106B中,来降低对存储器池的存储器压力。
确定哪些存储器段要交换到扩展大容量存储器池106B中以减轻存储器压力可以基于与存储器的使用特性有关的任何合适的确定。例如,可以基于使用特性低于预定义阈值来将存储器段确定为“冷段”,例如,与其他“暖”段相比,“冷”指示:基于使用特性,段的使用相对较低。使用特性可以基于以下一项或多项:(1)使用的新近度和/或频率(例如,低于阈值的使用特性可以表示从未被使用的段、最早使用的段、或最不频繁使用的段)、(2)指派的新近度(例如,最早指派的段)、(4)对未来延迟的影响的逻辑评估(例如,存储器的、被确定为不太可能在未来被频繁使用的段)、(5)向大容量存储器的传输的评估延迟/定时(例如,存储器的稀疏地填充有非零数据的段,从而减少向大容量存储器的传输时间),等等。
因此,池化存储器控制器104可以使完全耗尽由扩展存储器106A提供的存储器资源的可能性最小化,从而在节点需要来自池的更多存储器时减轻即将到来的指派。换句话说,如果总存储器指派超过预定义阈值和/或接近总存储器容量(诸如紧接在由计算节点请求的成功存储器指派之后),池化存储器控制器104可以立即和/或预先采取步骤来将数据从扩展存储器106A交换到扩展大容量存储器106B中,使得存储器一般的可用于任何新指派请求。
池化存储器控制器104可以根据任何合适的方法来指派、取消指派和以其他方式管理分离式存储器池106中的存储器资源(例如,管理扩展存储器106A和/或扩展大容量存储器池106B之间的数据分布),例如通过基于前述使用特性(例如,存储器部分被使用的最近程度或频繁程度)在扩展存储器106A和扩展大容量存储器池106B之间交换数据(页面调度)。
图2示出了可以由池化存储器控制器104实现的示例方法200。在202处,方法200包括将分离式存储器池的多个存储器段指派给多个计算节点。
在204处,方法200还包括将存储器段的子集标识为冷存储器段。可以基于关于使用的任何合适的确定来标识冷段,例如,如206处所示,基于确定针对每个这样的冷段的使用特性低于预定义阈值。在一些示例中,可以基于逻辑确定和/或统计确定来标识冷段(例如,代替或除了相对于预定义阈值的使用特性测量),例如经由机器学习。例如,可以操作机器学习算法或统计过程(例如,递归神经网络)来学习分离式存储器的使用模式,例如,通过检测与特定事件、调度或上下文相关联的指派的数目(例如,基于一个或多个节点的活动、基于一个或多个特定计算机程序的执行、基于检测存储器侧高速缓存活动的特定模式、和/或基于任何其他合适的数据,在一天中的特定时间检测请求的增加)。在一些示例中,如208处所示,确定针对段的使用特性低于预定义阈值可以基于指示何时页面调度出存储器段的替换策略。例如,如208A处所示,替换策略可以基于使用频率(例如,标识具有低于预定义阈值的使用频率的存储器段,诸如最不频繁使用的段)。备选地或附加地,如在208B处所示,替换策略可以基于使用的新近度(例如,具有低于预定义阈值的使用新近度的存储器段,诸如最早使用的段)。备选地或附加地,如208C处所示,替换策略可以基于占用密度(例如,具有低于预定义阈值的非零数据比例的存储器段)。上述替换策略的示例是非限制性的,并且使用特性的确定和/或冷段的标识可以基于任何合适的确定(例如,基于针对页面调度出段的相对较小的性能惩罚的评估、基于针对释放与段相关联的资源的相对较大的性能增益的评估、和/或基于任何其他逻辑条件或基于统计或机器学习过程)。
在212处,方法200还包括将数据从冷段中的一个或多个冷段移出到扩展大容量存储器设备,这在本文中被称为页面调度(paging)。因此,在214处,冷段的页面调度导致释放分离式存储器池的一个或多个被指派的存储器段。在一些示例中,在212处页面调度出一个或多个冷段是响应于如在210处所示的确定当前被指派的存储器段的量指派了存储器的预定义阈值量。例如,可以在将存储器指派给计算节点的过程中进行这样的确定,例如,响应于将新段指派给多个计算节点中的一个计算节点,使得新指派导致所指派的段的总数超过预定义阈值。在一些示例中,可以通过将存储器指派给由池化存储器控制器已经指派的存储器的原始多个计算节点中的一个计算节点来超过预定义阈值。在其他示例中,识别当前被指派的段数目超过预定义阈值可以响应于将新段指派给不在原始多个计算节点中的新计算节点。备选地或附加地,在212处页面调度出一个或多个冷段可以在任何其他合适的时间进行,例如,根据预先确定的调度、根据识别存储器使用的逻辑条件或统计条件、和/或预先地进行以释放分离式存储器池的存储器。
图3至图6示意性地描绘了根据方法200的存储器管理过程的示例。图3示出了包括池化存储器控制器302的计算机系统300,池化存储器控制器302被配置为向多个计算节点310(例如,计算节点310A、310B、310C和310D)提供存储器(例如,使用扩展存储器306A和/或扩展存储器池306B)。尽管图3描绘了四个计算节点,但是可以使用任何合适数目的计算节点。计算节点中的每个计算节点对可以由计算节点分配的虚拟存储器空间内的主机存储器地址(例如,由主机计算节点实际使用的数字地址数据或符号地址数据)定义的存储器具有其自身相关联的视角(例如,对应的主机存储器312A、312B、312C和312D)。在图3中,第一计算节点310A具有被分配的具有主机存储器地址314A[1]的存储器段。如将要在本文中描述的,主机存储器地址由池化存储器控制器302转换成表示分离式存储器池内的具体位置的物理存储器地址。
池化存储器控制器302被配置为经由物理存储器段来实现主机存储器地址中的一些或全部主机存储器地址的分配。通常,池化存储器控制器302可以被配置为将由多个计算节点中的每个计算节点使用的主机存储器地址映射到分离式存储器池的存储器段,例如,通过维护主机存储器地址与扩展存储器306A和/或扩展大容量存储器306B中物理地址之间的映射。可以在段表中维护主机存储器地址和分离式存储器池中的物理地址之间的多个映射。在一些示例中,可以在段表中跟踪针对每个存储器段的使用特性,例如,通过维护时间戳、计数器等,以指示使用新近度、使用频率、占用密度等。如本文所讨论的,这样的表尤其可以用于评估存储器段是否是“冷的”。段表可以在扩展存储器306A的专用/私有部分中或任何其他存储器设备中被维护。
在一些示例中,来自段表的多个映射可以由池化存储器控制器高速缓存在转换旁视缓冲器(TLB)中。例如,转换旁视缓冲器可以是包括在存储器控制器302中的低延迟存储设备,例如寄存器或片上存储器高速缓存。在一些示例中,段表可以是多级段表,其被配置为将主机地址的范围映射到物理地址,并且将相对于参考主机地址的偏移映射到物理偏移(例如,对应于主机地址的经映射范围内的地址)。在一些示例中,池化存储器控制器可以被配置为向计算节点中的每个计算节点暴露用于访问扩展存储器和大容量存储器池中的经映射存储器地址的硬件孔径。因此,硬件孔径可以自动处理将主机存储器地址映射到扩展存储器和/或大容量存储器池中的物理地址。
例如,主机存储器地址314A[1]是经由扩展存储器306A中的物理存储器段320[1]分配的。类似地,第二计算节点310B具有两个被分配的存储器段,其具有由池化存储器控制器302经由物理存储器段320[2]提供的主机存储器地址314B[1]。
图4示出了在不同时间的计算机系统300,此时池化存储器控制器302已经向多个计算节点提供了不同的存储器指派。例如,图4可以表示在计算节点已经请求并被指派附加存储器之后的后续时间。如所示出的,计算节点310A具有附加的存储器指派,其包括被映射到物理存储器段320[3]的主机存储器地址314A[2]。应当理解,图4的场景是从图3的场景的简单递增变型。为了便于理解。在实际操作过程中,指派可以显著且迅速地变化。
池化存储器控制器302可以以任何合适的顺序,例如,按照由存储器控制器302以与主机存储器地址值无关的方式确定的顺序,将主机存储器地址映射到分离式存储器池中。换言之,图3至图6中的物理存储器段320[1]、320[2]等的编号和空间布置是扩展存储器306A的一部分被占用的非限制性示意性描述。存储器段不需要以任何特定顺序或空间布置来布置,例如,存储器段可以经由扩展存储器306A的任何合适的连续部分或非连续部分来提供。此外,物理存储器中的存储器段不需要对应于主机存储器地址,例如,主机存储器地址314A[1]可以位于计算节点312A的存储器视角内的低编号存储器地址,而主机存储器地址314A[2]位于计算节点312A的存储器视角内的高编号存储器地址(例如,如图中所描绘的),而这些存储器地址可以由存储器控制器302映射到扩展存储器306A中的任何合适位置(例如,作为非限制性示例,两个存储器地址可以被映射到扩展存储器306A中的低编号存储器段)。在一些示例中,主机存储器地址和物理存储器之间的映射可以基于存储器策略(例如,故障遏制策略或性能优化策略)来确定。例如,主机存储器地址可以根据策略被映射到物理存储器的连续部分或非连续部分。
在任何给定的时间,一些存储器段可以是“冷的”,诸如图4中用虚线边界指示的(在主机存储器视角和物理存储器的示意图两者中示出)。可以以任何合适的方式来标识冷存储器段,例如基于使用特性低于阈值,如以上关于图2所描述的。例如,在图4中,与主机存储器地址314A[1](被映射到物理存储器段320[1]和主机存储器地址314B[1](被映射到存储器段320[2]相对应的存储器段被指示为冷的。在一些示例中,一个或多个段可以被指定为被保持在扩展存储器中的“被钉(pinned)”段,而与使用特性无关,例如,被钉段不可用于交换。
图4还描绘了用于检测存储器压力的示例性预定义阈值330,例如,扩展存储器池306A的存储器段的阈值量,如果超过该阈值量,则指示可能正在出现和/或可能出现池压力,例如相对于扩展存储器池306A的总容量。作为非限制性示例,如果扩展存储器池306A总共具有6个段,则预定义阈值400可以是4个段(例如,指示如果4个段被占用,则由于只剩下2个段,所以该池可能经受相当大的存储器压力)。应当理解,系统300是高度简化的、非限制性的示例。池化存储器控制器可以被配置为提供对扩展存储器的访问,该扩展存储器包括任何适当数目的任何适当大小的存储器段,例如数千或数百万个段。类似地,用于检测存储器压力的预定义阈值可以基于任何适当数目的段和/或扩展存储器的比例,例如,基于超过三分之二、四分之三或任何其他适当比例的扩展存储器段被分配。
图5描绘了在总存储器指派超过预定义阈值330时的情况,例如,在计算节点310D具有映射到物理存储器段320[4]的主机存储器地址314D[1],使得总共有扩展存储器306A的4个段在使用时。这样,由于超过了预定义阈值330,池化存储器控制器302可以被配置为对存储器压力进行响应,例如,通过将数据从扩展存储器306A页面调度到扩展大容量存储器306B。如图6所示。
图6示意性地描绘了池化存储器控制器302将数据从扩展存储器306A页面调度到扩展大容量存储器306B,从而减小扩展存储器306B上的压力。例如,可以响应于总存储器指派超过预定义阈值330来对数据进行页面调度。例如,扩展大容量存储器306B可以被配置为存储非常大量的数据(例如,十亿字节、万亿字节或更多的数据),从而潜在地可用于从扩展存储器306A中页面调度出大量段(例如,数百、数千、数百万或更多的段)。备选地或附加地,可以在任何其他合适的时间对数据进行页面调度,例如,预先地或响应于逻辑条件和/或统计条件(如上文关于图2所描述的)。如图6所示,“冷”段被映射到扩展大容量存储器306B中。可以以任何合适的方式来页面调度出数据,例如,可以将来自每个冷段的数据复制到扩展大容量存储器306B内的合适位置中,从而保留数据以用于计算节点潜在的后续访问。因此,可以释放扩展存储器306A中的物理存储器段,从而减少扩展存储器306A的总占用。如所示出的,在交换出冷段之后,扩展存储器306A的总占用率可以低于预定义阈值330,例如,从而允许后续存储器分配而不会填满扩展存储器306A。因此,池化存储器控制器302能够从扩展存储器306A中向多个计算节点提供更多的存储器空间。
当存储器类似于图3至图6中描绘的过程而被分配或变冷时,池化存储器控制器302可以如图3至图6所示并且如关于图2所述在任何合适的时间页面调度出冷存储器段。因此,计算节点可以容易地分配主机存储器地址,并且池化存储器控制器302可以将主机存储器地址映射到扩展存储器306A中被指派的存储器段。应当理解,访问被存储在扩展存储器306A中的数据的延迟可以小于访问扩展存储器池306B中的存储器的延迟。因此,通过确保扩展306A中的空间主要用于不在冷段中的数据,计算节点可以能够在来自冷段的数据在扩展大容量存储器306B中被维护的同时,更有效地访问扩展存储器306A的已使用部分中的数据并有效地分配扩展存储器306B的其他部分。由于来自冷段的数据可能不太会被使用(例如,基于使用特性),因此通过将这种数据存储在扩展大容量存储器306B内,对计算节点的数据访问效率可以没有影响或者几乎没有影响。
图3至图6描绘了在存储器的初始预定义阈值量被超过而导致池化存储器控制器302页面调度出冷段时的情况。在一些示例中,例如,响应于存储器的初始预定义阈值量被超过,可以设置(预定义的或以其他方式确定的)用于页面调度出冷段的、存储器的不同的第二阈值量。例如,在存储器压力出现时的初始情况之后(例如,如图5中描绘),池化存储器控制器302可以被配置为例如基于设置存储器的较低阈值量来预先页面调度出冷段,在该较低阈值量处页面调度出冷分段。
在一些示例中,计算节点可以随后访问与如下的段对应的主机存储器地址,该段先前被确定为冷的并且被交换到扩展大容量存储器306B中。因此,池化存储器控制器302被配置为提供对扩展大容量存储器306B中的数据的访问。在一些示例中,池化存储器控制器302被配置为:确定来自被页面调度出到扩展大容量存储器306B中的冷段的数据满足取回条件,并且响应于取回条件被满足而将数据从扩展大容量存储306B页面调度回到扩展存储器306A中。例如,取回条件可以包括对数据的任何访问(例如,一旦来自被页面调度出到扩展大容量存储器306B中的冷段的数据被计算节点请求,则该段可以被认为不再是冷的,并且该数据可以被移回到扩展存储器306A中,并且主机存储器地址被重新映射到扩展存储器306A以提供有效的访问)。作为另一示例,取回条件可以包括使用特性的第二测量高于使用阈值,例如,数据最初可以经由大容量存储器306B而被访问,但是如果数据以足够的频率被访问,或者如果大容量存储器306B的对应部分变得更密集地被处于活跃使用中的数据占据,数据可以移动回到扩展存储器306A中,并且主机存储器地址可以被重新映射到扩展存储器306A。在其他示例中,取回条件可以基于对数据的预期访问的计算预测(例如,基于附近的第二主机存储器地址正在被使用,从与第一主机存储器地址对应的扩展大容量存储器取回数据)。通常,数据可以在任何合适的时间从扩展大容量存储器306B中被取回,并被页面调度回扩展存储器306A中,例如,如果存储器压力已经下降到阈值以下。在一些示例中,如果存储器压力已经减轻或增加,可以改变预定义的使用特性阈值和/或预定义的阈值330,以调节将数据从扩展存储器306A交换到扩展大容量存储器306B的趋势(例如,降低用于检测冷段的使用特性阈值,使得段可以被认为是“暖的”直到较低的使用频率、使用新近度等;或者增加预定义阈值330,使得在冷段被交换之前可以容忍更多的存储器占用)。
在一些实施例中,本文所描述的方法和过程可以被绑定到一个或多个计算设备的计算系统。特别地,这样的方法和过程可以实现为计算机应用程序或服务、应用编程接口(API)、库和/或其他计算机程序产品。
图7示意性地示出了计算系统700的非限制性实施例,该计算系统700可以实施上述方法和过程中的一个或多个。计算系统700以简化形式示出。计算系统700可以采用一个或多个个人计算机、服务器计算机、平板电脑、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备的形式。例如,计算系统700可以例示图1所示的计算机系统100或图3至图6所示的系统300的一个或多个方面。计算系统700可以实现图2中描绘的方法200。
计算系统700包括逻辑机器702和存储机器704。计算系统700可以可选地包括显示子系统706、输入子系统708、通信子系统710和/或图7中未示出的其他组件。
逻辑机器702包括被配置为执行指令的一个或多个物理设备。例如,逻辑机器可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现为执行任务、实现数据类型、转换一个或多个组件的状态、实现技术效果或以其他方式获得期望的结果。
逻辑机器可以包括被配置为执行软件指令的一个或多个处理器。附加地或备选地,逻辑机器可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑机器。逻辑机器的处理器可以是单核或多核,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑机器的各个组件可选地可以分布在两个或更多个单独的设备之间,这些设备可以远程定位和/或被配置用于协调处理。逻辑机器的各方面可以由配置在云计算配置中的远程可访问的联网计算设备来虚拟化和执行。
存储机器704包括一个或多个物理设备,其被配置为保存能够由逻辑机器执行以实现本文所述的方法和过程的指令。当实现这样的方法和过程时,存储机器704的状态可以被转换——例如,以保存不同的数据。
存储机器704可以包括可移除的和/或内置的设备。存储机器704可以包括光学存储器(例如,CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(例如,RAM、EPROM、EEPROM等)和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等),等等。存储机器704可以包括易失性的、非易失性的、动态的、静态的、读/写的、只读的、随机存取的、顺序存取的、位置可寻址的、文件可寻址的、和/或内容可寻址的设备。例如,存储机器704可以包括池化存储器控制器,池化存储器控制器被配置为访问如本文所述的扩展存储器和/或扩展大容量存储器。
应当理解,存储机器704包括一个或多个物理设备。然而,本文所描述的指令的各方面备选地可以由在有限的持续时间内不被物理设备保持的通信介质(例如,电磁信号、光信号等)传播。
逻辑机器702和存储机器704的各方面可以一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括现场可编程门阵列(FPGA)、程序专用集成电路和应用专用集成电路(PASIC/ASIC)、程序通用标准产品和应用通用标准产品(PSSP/ASSP)、片上系统(SOC)和复杂可编程逻辑器件(CPLD)。
术语“模块”、“程序”和“引擎”可以用于描述被实现为执行特定功能的计算系统700的方面。在一些情况下,模块、程序或引擎可以经由执行由存储机器704保存的指令的逻辑机器702被实例化。可以理解,不同的模块、程序和/或引擎可以从相同的应用、服务、代码块、对象、库、例程、API、函数等中实例化。同样地,相同的模块、程序和/或引擎可以由不同的应用、服务、代码块,对象、例程、API、函数等实例化。术语“模块”、“程序”和“引擎”可以包含可执行文件、数据文件、库、驱动程序、脚本、数据库记录等的单个或群组。
应当理解,如本文所使用的,“服务”是能够跨多个用户会话被执行的应用程序。服务可以对一个或多个系统组件、程序和/或其他服务可用。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
当被包括时,显示子系统706可以用于呈现存储机器704所保存的数据的视觉表示。这种视觉表示可以采用图形用户界面(GUI)的形式。由于本文所描述的方法和过程改变了由存储机器保存的数据,并因此转换了存储机器的状态,因此显示子系统706的状态同样可以被转换以视觉地表示底层数据的变化。显示子系统706可以包括利用几乎任何类型的技术的一个或多个显示设备。这样的显示设备可以在共享外壳中与逻辑机器702和/或存储机器704被组合,或者这样的显示设备可以是外围显示设备。
当被包括时,输入子系统708可以包括诸如键盘、鼠标、触摸屏或游戏控制器的一个或多个用户输入设备,或与一个或多个用户输入设备接口连接。在一些实施例中,输入子系统可以包括被选择的自然用户输入(NUI)组件部分,或与被选择的自然用户输入组件部分接口连接。这样的组件部分可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外被处理。示例NUI组件部分可以包括用于声音和/或语音识别的麦克风;用于机器视觉和/或姿势识别的红外相机、彩色相机、立体相机和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测组件部分。
当被包括时,通信子系统710可以被配置为将计算系统700与一个或多个其他计算设备通信地耦合。通信子系统710可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置为经由无线电话网络、或有线网、或无线局域网、或广域网通信。在一些实施例中,通信子系统可以允许计算系统700经由诸如互联网的网络向其他设备发送消息和/或从其他设备接收消息。
在一个示例中,提供了一种精简配置的多节点计算机系统,包括:(1)分离式存储器池,该分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用,这样的存储器容量相对于多个计算节点被精简配置;以及(2)池化存储器控制器。池化存储器控制器被配置为:(1)将分离式存储器池的多个存储器段指派给多个计算节点;(2)将多个存储器段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于使用阈值;以及(3)将冷段中的一个或多个页面调度出到扩展大容量存储器设备,从而释放分离式存储器池的一个或多个被指派的存储器段。
在该示例和其他示例中,存储器段是DRAM段。在这些和其他示例中,扩展大容量存储器可以是SSD设备。在该示例和其他示例中,确定使用特性低于使用阈值可以是基于替换策略的,该替换策略可以包括:(1)存储器段的使用频率,(2)存储器段的使用新近度,和/或(3)存储器段的占用密度。在该示例和其他示例中,页面调度出冷段可以是响应于确定当前被指派的存储器段的量超过存储器的第一预定义阈值量,这可以是响应于将新存储器段指派给多个计算节点中的一个计算节点。附加地或备选地,确定当前被指派的存储器段的数目超过预定义阈值可以是响应于将新存储器段指派给不在原始多个计算节点中的新计算节点。池化存储器控制器还可以被配置为:响应于确定当前被指派的存储器段的数目超过存储器的第二预定义阈值量而页面调度出冷段。池化存储器控制器还可以被配置为:确定来自被页面调度出到扩展大容量存储器的冷段的数据满足取回条件,并且将数据页面调度回扩展存储器中的存储器段中。取回条件可以包括评估对数据的访问和/或针对冷段的使用特性的第二测量高于使用阈值。池化存储器控制器可以(1)维护由多个计算节点中的每个计算节点使用的主机存储器地址与分离式存储器池的存储器段之间的多个映射,这样的映射是可变的,以指示数据从存储器段中被页面调度出,和/或(2)按照由池化存储器控制器以与主机存储器地址值无关的方式确定的顺序,将主机存储器地址映射到分离式存储器池中。映射可以在段表中被维护,并且针对存储器段的使用特性在段表内被跟踪。来自段表的多个映射由池化存储器控制器高速缓存在转换旁视缓冲器中。
在另一示例中,公开了一种精简配置的多节点计算机系统,包括:(1)分离式存储器池,该分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用;以及(2)池化存储器控制器。池化存储器控制器被配置为:(1)将分离式存储器池的多个动态随机存取存储器(DRAM)段指派给多个计算节点;(2)将多个DRAM段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于使用阈值;以及(3)将冷段中的一个或多个冷段页面调度出到固态驱动器(SSD)设备,从而释放分离式存储器池的一个或多个未被指派的DRAM段。
在又一示例中,提供了一种在精简配置的多节点计算机系统中管理存储器的方法。该方法包括:(1)将分离式存储器池的多个存储器段指派给多个计算节点,该分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用;(2)将多个存储器段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于使用阈值;以及(3)将冷段中的一个或多个冷段页面调度出到扩展大容量存储器设备,从而释放分离式存储器池的一个或多个被指派的存储器段。
应当理解,本文所描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应在限制意义上被考虑,因为许多变化是可能的。本文描述的特定例程或方法可以表示任意数目的处理策略中的一个或多个。因此,所示出和/或所描述的各种动作可以按所示出或所描述的顺序、按其他顺序、并行地被执行或被省略。同样地,可以改变上述处理的顺序。
本公开的主题包括本文公开的各种过程、系统和配置、以及其他特征、功能、动作和/或特性的所有新颖和非显而易见的组合和子组合,以及它们的任何和所有等同物。
Claims (15)
1.一种精简配置的多节点计算机系统,包括:
分离式存储器池,所述分离式存储器池被配置为使共享存储器容量对多个计算节点中的每个计算节点可用,这样的存储器容量相对于所述多个计算节点被精简配置;
池化存储器控制器,所述池化存储器控制器被配置为:
将所述分离式存储器池的多个存储器段指派给所述多个计算节点;
将所述多个存储器段的子集标识为冷段,这样的标识是基于确定针对每个这样的冷段的使用特性低于使用阈值;以及
将所述冷段中的一个或多个冷段页面调度出到扩展大容量存储器设备,从而释放所述分离式存储器池的一个或多个被指派的存储器段。
2.根据权利要求1所述的计算机系统,其中所述存储器是动态随机存取存储器(DRAM),并且所述存储器段是DRAM段。
3.根据权利要求1所述的计算机系统,其中所述扩展大容量存储器是SSD设备。
4.根据权利要求1所述的计算机系统,其中确定使用特性低于使用阈值是基于替换策略。
5.根据权利要求4所述的计算机系统,其中所述替换策略包括存储器段的使用频率。
6.根据权利要求4所述的计算机系统,其中所述替换策略包括存储器段的使用新近度。
7.根据权利要求4所述的计算机系统,其中所述替换策略包括存储器段的占用密度。
8.根据权利要求1所述的计算机系统,其中页面调度出所述冷段是响应于确定当前被指派的存储器段的量超过存储器的预定义阈值量。
9.根据权利要求8所述的计算机系统,其中确定所述当前被指派的存储器段的数目超过所述预定义阈值是响应于将新存储器段指派给所述多个计算节点中的一个计算节点。
10.根据权利要求8所述的计算机系统,其中识别所述当前被指派的存储器段的数目超过所述预定义阈值是响应于将新存储器段指派给不在原始的所述多个计算节点中的新计算节点。
11.根据权利要求8所述的计算机系统,其中存储器的所述预定义阈值量是第一预定义阈值,并且所述池化存储器控制器还被配置为:响应于确定当前被指派的存储器段的数目超过存储器的不同的第二阈值量而页面调度出冷段。
12.根据权利要求1所述的计算机系统,其中所述池化存储器控制器还被配置为:确定来自被页面调度出到所述扩展大容量存储器的冷段的数据满足取回条件,并且将所述数据页面调度回所述扩展存储器中的存储器段中。
13.根据权利要求12所述的计算机系统,其中所述取回条件包括对所述数据的访问。
14.根据权利要求12所述的计算机系统,其中所述取回条件包括针对所述冷段的所述使用特性的第二测量高于所述使用阈值。
15.根据权利要求1所述的计算机系统,其中所述池化存储器控制器维护由所述多个计算节点中的每个计算节点使用的主机存储器地址与所述分离式存储器池的存储器段之间的多个映射,这样的映射是可变的,以指示数据从存储器段被页面调度出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/115,375 US11429518B2 (en) | 2020-12-08 | 2020-12-08 | Paging in thin-provisioned disaggregated memory |
US17/115,375 | 2020-12-08 | ||
PCT/US2021/058884 WO2022125254A1 (en) | 2020-12-08 | 2021-11-11 | Paging in thin-provisioned disaggregated memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116710886A true CN116710886A (zh) | 2023-09-05 |
Family
ID=78821288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180082097.3A Pending CN116710886A (zh) | 2020-12-08 | 2021-11-11 | 精简配置的分离式存储器中的页面调度 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11429518B2 (zh) |
EP (1) | EP4260189A1 (zh) |
CN (1) | CN116710886A (zh) |
TW (1) | TW202316264A (zh) |
WO (1) | WO2022125254A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220197798A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Single re-use processor cache policy |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8423713B2 (en) * | 2010-09-06 | 2013-04-16 | Hitachi, Ltd. | Cluster type storage system and method of controlling the same |
US20120263191A1 (en) | 2011-04-12 | 2012-10-18 | Red Hat Israel, Inc. | Mechanism For Managing Quotas In a Distributed Virtualization Environment |
US9881018B2 (en) * | 2014-08-14 | 2018-01-30 | International Business Machines Corporation | File management in thin provisioning storage environments |
US9792227B2 (en) * | 2014-08-19 | 2017-10-17 | Samsung Electronics Co., Ltd. | Heterogeneous unified memory |
US9760310B2 (en) * | 2015-08-06 | 2017-09-12 | International Business Machines Corporation | High performance data storage management using dynamic compression |
US9811281B2 (en) | 2016-04-07 | 2017-11-07 | International Business Machines Corporation | Multi-tenant memory service for memory pool architectures |
US10180793B2 (en) * | 2017-01-31 | 2019-01-15 | Hewlett Packard Enterprise Development Lp | Performance attributes for memory |
US11392555B2 (en) * | 2019-05-15 | 2022-07-19 | Pure Storage, Inc. | Cloud-based file services |
US20200371692A1 (en) | 2019-05-22 | 2020-11-26 | Microsoft Technology Licensing, Llc | Memory disaggregation for compute nodes |
US20210200667A1 (en) * | 2019-12-26 | 2021-07-01 | Intel Corporation | Memory thin provisioning using memory pools |
-
2020
- 2020-12-08 US US17/115,375 patent/US11429518B2/en active Active
-
2021
- 2021-11-11 EP EP21819678.0A patent/EP4260189A1/en active Pending
- 2021-11-11 CN CN202180082097.3A patent/CN116710886A/zh active Pending
- 2021-11-11 WO PCT/US2021/058884 patent/WO2022125254A1/en active Application Filing
- 2021-12-08 TW TW110145826A patent/TW202316264A/zh unknown
-
2022
- 2022-08-10 US US17/818,816 patent/US20220382672A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11429518B2 (en) | 2022-08-30 |
EP4260189A1 (en) | 2023-10-18 |
WO2022125254A1 (en) | 2022-06-16 |
TW202316264A (zh) | 2023-04-16 |
US20220179780A1 (en) | 2022-06-09 |
US20220382672A1 (en) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9760497B2 (en) | Hierarchy memory management | |
JP6496626B2 (ja) | 異種統合メモリ部及びその拡張統合メモリスペース管理方法 | |
US11150962B2 (en) | Applying an allocation policy to capture memory calls using a memory allocation capture library | |
US20110072204A1 (en) | Memory server | |
JP2014021972A (ja) | 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造 | |
JPWO2016135875A1 (ja) | 情報処理装置 | |
US10176098B2 (en) | Method and apparatus for data cache in converged system | |
US20220066928A1 (en) | Pooled memory controller for thin-provisioning disaggregated memory | |
US11157191B2 (en) | Intra-device notational data movement system | |
US7793051B1 (en) | Global shared memory subsystem | |
US20220382672A1 (en) | Paging in thin-provisioned disaggregated memory | |
CN106155910B (zh) | 一种实现内存访问的方法、装置和系统 | |
KR101823983B1 (ko) | 메모리 디바이스들 및 방법들 | |
JP2015191604A (ja) | 制御装置、制御プログラム、および制御方法 | |
US10664393B2 (en) | Storage control apparatus for managing pages of cache and computer-readable storage medium storing program | |
US11687443B2 (en) | Tiered persistent memory allocation | |
JP2019175427A (ja) | コンピュータシステム及びその動作方法 | |
KR102433549B1 (ko) | 통합 메모리 디바이스 및 그의 동작 방법 | |
US20200348874A1 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
KR20200059493A (ko) | 데이터 처리 시스템 | |
TW202340931A (zh) | 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 | |
WO2016085461A1 (en) | Computing resource with memory resource memory management |
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 |