CN116324706A - 分离式存储器池分配 - Google Patents
分离式存储器池分配 Download PDFInfo
- Publication number
- CN116324706A CN116324706A CN202180054413.6A CN202180054413A CN116324706A CN 116324706 A CN116324706 A CN 116324706A CN 202180054413 A CN202180054413 A CN 202180054413A CN 116324706 A CN116324706 A CN 116324706A
- Authority
- CN
- China
- Prior art keywords
- memory
- slice
- node
- slices
- request
- 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 471
- 238000000034 method Methods 0.000 claims description 75
- 239000004744 fabric Substances 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 28
- 238000004891 communication Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000002167 anodic stripping potentiometry Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 206010003664 atrial septal defect Diseases 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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/466—Transaction processing
- G06F9/467—Transactional 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
-
- 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
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
Abstract
公开了涉及分离式存储器池的示例。一个示例提供了一种存储器系统,该存储器系统包括存储器控制器和存储器,该存储器附接到存储器控制器并且形成分离式存储器池的至少一部分,分离式存储器池包括多个切片,多个切片被各自动态地分配给相应的计算节点。存储器系统被配置为接收调整存储器池到请求计算节点的分配的请求,在存储器池的部分包括能满足请求的未分配切片的情况下,将未分配的部分的至少一部分分配给请求计算节点,以及在存储器池的部分不包括能满足请求的未分配切片的情况下,使得请求被引导到另一计算节点以释放到该另一计算节点的至少一个切片。
Description
背景技术
数据中心通常包括大量离散的计算节点,例如服务器计算机或其他合适的计算设备。这样的设备可以独立地和/或协作地工作以满足各种计算工作负荷。
附图说明
图1示意性地描绘了与分离式存储器池通信耦合的多个计算节点。
图2描绘了分离式存储器池的切片的示例清单。
图3示出了使分离式存储器池的一个或多个切片在线以用于执行存储器事务的方法的流程图。
图4示出了示例物理地址映射。
图5示出了示出将分离式存储器池的切片分配给计算节点的方法的流程图。
图6示出了示出了取消分配分配给计算节点的分离式存储器池的切片的方法的流程图。
图7示出了示例计算系统的框图。
具体实施方式
如上文说明的,数据中心通常包括大量离散计算节点,例如服务器计算机或其他合适的计算设备。此样的计算节点可以被称为“主机计算设备”或“主机”,因为在某些情况下,它们可以被用于托管虚拟机。然而,应当理解,计算节点可以被用于任何合适的计算目的,并且不需要专门地被用于托管虚拟机。此外,在一些示例中,计算节点可以被实现为虚拟机。
取决于特定实现,每一个单独的计算节点可以具有任何合适的计算机硬件集合。例如,传统服务器可以基本上自给自足(self-sufficient),包括处理资源、数据存储、易失性/非易失性存储器、网络接口组件、电源、冷却解决方案等。相比之下,一些“刀片服务器”或机架式系统省略了内部电源、冷却系统和/或网络接口,而是依赖于外壳/机架结构来为计算节点集群提供这样的基础设施类型功能。
无论如何,每一个单独的计算节点通常将包括一些本地/本机硬件资源集合,包括数据存储装置、存储器、处理资源等。然而,(例如,与数据中心客户相关联的)计算工作负载通常不均匀地分布在数据中心的计算节点之间。相反,在一个常见的场景中,数据中心中的计算节点子集可能被分配资源密集型工作负载,而其他节点则处于空闲状态或处理相对较少的资源密集型任务。因此,数据中心的总资源利用率可能相对较低,并且因为这样的工作负载对于具有有限资源的单个节点是本地化的,其它密集工作负载的完成可能是资源受限的。在其他情况下,计算节点只配备有基本上超过统计上的正常操作所需的存储器和/或其他资源。这些场景表示可用计算资源的使用效率低下,有时被称为“资源搁浅”,因为可能潜在地被应用于非本机工作负载的本机资源反而滞留在闲置或未充分利用的主机中。
当硬件资源被从单个计算节点中取出,并且其替代性地被分离为可被多个附接的计算节点灵活访问的分离资源池时,此问题可以被缓解。例如,易失性存储器硬件(例如,随机存取存储器(RAM))可以作为可由多个计算节点中的任何一个(例如,在数据中心中)使用的分离式存储器池(disaggregated memory pool)的一部分来被收集。这种服务有助于缓解资源搁浅,因为计算节点可以在需要时自由请求存储器,并在不再需要时释放这些存储器。
在一些示例中,集体地分配给多个计算节点的存储器的量可能超过分离式存储器池中实际提供的存储器的量。这有时被称为“精简配置”。一般来说,在没有精简配置的数据中心环境中,可以观察到随着时间推移,统计上单个计算节点(和/或在计算节点上实现的虚拟机)通常被配置了比计算节点最终实际使用的资源(例如,存储空间、存储器)更多的资源。例如,在大多数情况下,为特定计算节点安装的存储器的量可能显著高于计算节点实际使用的存储器的量。当在多个计算节点上组合时,空闲存储器(或其他资源)的平均量可以代表数据中心中总存储器的大部分。
在没有精简配置的一个示例场景中,分离式存储器池可以包括1TB(1024GB)的总存储器,其可以均匀被分布在八个计算节点之间。此外,每一个计算节点可以包括128GB的本机附接存储器。因此,每一个计算节点可以被分配128GB的分离式存储器池的存储器,同时在本机附接的存储器和池化存储器之间具有总共256GB的预分配的(provisioned)存储器。总的来说,同样在本机附接的存储器和池化存储器之间,八个计算节点可以访问2TB的总存储器。在此示例中,由于128GB的本机存储器和128GB的池化存储器,从节点和存储器系统上执行的操作系统(OS)的角度来看,每一个节点分配了256GB的存储器。也就是说,256GB的可用存储器对节点“可见”。
然而,通常不太可能每一个计算节点都将充分利用其存储器分配,尤其是因为系统不是精简配置的。相反,在更常见的情况下,在正常使用期间每一个计算节点可能仅使用其分配的存储器的50%,并且一些计算节点可能使用的存储器明显少于50%。因此,即使1TB分离式存储器池将被完全分配给多个计算节点,但在任何给定时间,只有相对小的一部分池化存储器可能被使用。这意味着可用资源的使用效率低下。
考虑到这一点,可以在不显著影响多个计算节点的性能的情况下,减少实际可用的存储器的量(即,在存储器池中“预分配的”存储器的量)。例如,每一个计算节点的存储器空间仍然可以被构造为使得其存储器分配的池部分为128GB(因此,当对八个节点求和时达到1TB),例如,通过提供128GB远程存储器的地址范围;然而,存储器池实际上可以仅被配备256GB的总量。因此,分配的存储器的量超过了实际提供的存储器的量,但在计算节点上执行的OS和应用程序将感知并能够使用256GB,包括本机附接到计算节点的128GB本机存储器,以及根据需要,来自存储器池的128GB远程存储器。
在此示例中,虽然每一个特定计算节点都分配了128GB的池化存储器,但从统计上看,许多计算节点在任何给定时间都可能不会使用128GB的全部或甚至大部分。因此,分配给一个计算节点的任何未使用的存储器可以被重新分配给其他节点中的一个或多个。以这种方式,如果需要,任何特定计算节点都可以选择使用高达128GB的池化存储器,同时仍然保留分离式池中的存储器,这是因为每一个计算节点通常在任何给定时间都不会使用128GB。因此,本文中使用的“分配”可以指计算节点及其上执行的软件可见并可访问的存储器的量或区域,其中总体分配可以来自本地、本机附接和远程池化存储器。如上所述,如过存储器池均匀分布在计算节点上,那么从存储器池分配给多个计算节点中的每一个计算节点的存储器的量可能大于存储器池中可以提供给每一个计算节点的物理存储器的量。
精简资源调配代表了用于调整如何将分离式存储器池分配给计算节点的一个潜在动力。在其他情况下对存储器池的分配的调整可能是被期望的,包括那些精简配置不被采用的情况——例如,计算节点可能需要被提供附加的存储器,以完成需要比当前分配给节点的更多量的存储器的工作负载,即使分配的量等于节点实际可用的量。
增加对计算节点的存储器分配的一种方法简单地涉及将附加的物理存储器附接到节点。能够在节点操作期间向计算节点添加物理存储器的示例被称为“热插拔”,其中在节点操作过程中物理添加的存储器被称为“热添加”存储器,并且在节点操作中物理移除的存储器被称作“热移除”存储器。作为一个示例,这些操作可能涉及将双列直插式存储器模块(DIMM)物理插入母板中或从母板中移除。热插拔还支持用于逻辑上使存储器“在线”(即,在安装存储器后使存储器对节点是可获取/可使用的)和使存储器“离线”(即,使已安装的存储器对节点是不可获取/不可使用的)的机制。
然而,基于热插拔的存储器管理方法存在各种缺点。例如,高级配置和电源接口(ACPI)标准支持的热插拔协议是基于将物理存储器设备分配给节点,该协议规定将整个存储器设备(例如,存储器扩展板)以及因此由该存储器设备提供的存储器的全部附接到单个主机。这样,虽然通过在线/离线,存储器设备提供的存储器的全部可以被灵活地分配给不同节点,但不允许分配更小、更细粒度的存储器。取决于由存储器设备提供的存储器,其整体上的大量存储器(例如,数十GB)可以被分配给主机。存储器的更大量的分配会增加存储器碎片,并显著地限制在多个节点之间共享池化存储器的能力。
热插拔示例可能会带来附加的缺点。例如,用于检测存储器热添加/移除的现有机制基于定制硬件电路。这需要定制固件,以与ACPI接合。因此,在热添加/移除过程中,操作系统需要与系统固件交互。可靠性和服务问题可能导致固件不透明的实现。此外,热插拔实现还可能需要定制硬件、固件和驱动程序来支持不同的中央处理单元(CPU)架构,从而增加成本和复杂性。总之,现有的基于热插拔的技术对于存储器的跨节点动态分配、管理和共享是受限的。
一些方法允许将物理存储器设备分区为逻辑设备。例如,基于外围组件互连快速(PCIe)即插即用框架的机制允许将物理存储器设备划分为逻辑设备,但需要比如(多个)计算快速链路(CXL)交换机之类的附加硬件来将逻辑设备呈现为物理设备。在CXL层次结构中引入(多个)交换机也会增加存储器访问的延迟。此外,PCI即插即用需要重新枚举PCIe总线,并为新添加的存储器设备加载驱动程序。这会导致热添加/移除存储器的延迟不确定。换句话说,从存储器延迟的角度来看,这些方法是次优的。
因此,公开了涉及提供包括动态分配给计算节点的多个存储器切片的分离式存储器池的示例。作为初始化过程的一部分,计算节点发现一个或多个存储器控制器,每一个控制器被附接到从计算节点的角度来看处于远程位置的存储器。附接到每一个存储器控制器的存储器共同形成包括分离式存储器池的存储器,其范围(例如,地址范围)和拓扑也在计算节点的初始化期间被发现。虽然该环境信息在节点处已知并向节点公开,但计算节点对存储器池的使用初始被禁用。相反,计算节点查询存储器控制器以发现分配给该计算节点的存储器池切片。通常,池化存储器生态系统中的切片数目明显地超过了节点可能使用的切片数目。例如,池系统可能包括许多TB的存储器切片,但单个节点可能只能访问512GB的存储器。
基于请求的框架允许计算节点请求分配附加切片并释放先前分配的切片。在一些示例中,可以使用存储器池的未分配切片来服务针对附加切片或切片扩展的请求。在其他示例中,可以通过请求计算节点释放所分配的切片来服务这样的请求,其中计算节点可以评估切片的使用以确定切片是否可以被释放。
本文所述的方法提供了一个分离式存储器池,其可以通过切片的方式,以任何适当的细粒度级别而被分布在任何适当数目的计算节点之间。这可以增加存储器池的利用率并减少资源搁浅,进而又可以支持提供满足计算节点的计算要求的、具有更小尺寸的存储器池。因此,所描述的方法可以支持和增强精简配置,并且也适用于不使用精简配置的示例。此外,所描述的方法可以提供这些和其他优点,而无需规定设备重新枚举,也无需包括交换机,从而减少存储器事务中的延迟和延迟不确定性。此外,提供了保护对各个计算节点的切片分配的机制,从而防止计算节点访问未分配给该节点的切片。
图1示意性地示出了示例计算系统100,其中多个计算节点102A-N通信地耦合到包括分离式存储器池106的存储器系统104。N是任何合适的正整数,使得任何合适数量的计算节点100可以在执行计算工作负载时利用存储器池106。
存储器系统104包括多个存储器控制器108A-N,其中N是任何合适的正整数。附接到每一个存储器控制器108的是一组相应的存储器110,例如附接到存储器控制器108A的存储器110A。总的来说,附接到每一个存储器控制器108的存储器110A-N形成包括分离式存储器池106的存储器。如下所述,每一个存储器控制器108管理将其所附接的存储器110的部分分配给计算节点102的请求,管理释放所附接存储器的所分配部分的请求,并且可以实施逐节点的分配。在一些示例中,每一个计算节点102可以相对一致地访问存储器控制器108,而在其他示例中,可以向具有不同服务质量的不同计算节点提供不同的存储器控制器。
总体而言,存储器控制器108与系统100中的其他部件协作以将存储器池106的切片分配给相应的计算节点。如本文所使用的,存储器池106的“切片”是指包括存储器池的存储器110的至少一部分。存储器110可以采取任何合适的形式,包括但不限于双倍数据速率同步动态RAM(DDR SDRAM)。
形成分离式存储器池106的存储器110远程附接到计算节点100。因此,存储器110和存储器池106可以被称为“扩展”、“远程”或“池化”存储器。当存储器控制器108管理这样的池化存储器时,存储器控制器类似地可以被称为“扩展”、“远程”或“池化”存储器控制器。相反,每一个计算节点102与各自的本机存储器控制器112(例如,与计算节点102A接合的本机存储器控制器112A)接合。每一个本机存储器控制器112控制器管理本机附接到相应计算节点100的本机存储器。
这样,本机存储器控制器112可以有助于在本机附接的存储器中运行指向本机附接的存储器的存储器事务。本机存储器控制器112可以执行其他功能,包括但不限于优先将存储器事务引导到本机附接的存储器,以及响应于来自存储器控制器108的通信而执行功能。例如,本机存储器控制器112可以从存储器控制器108接收可用于分配给计算节点102的存储器池106的部分是低的指示,并且作为响应,延迟向计算节点分配存储器池的一部分的请求。
在一些示例中,每一个本机存储器控制器112可以包括处理存储器事务以确定这些事务是否应该被引导到本机附接的存储器或分离式存储器池106的部件,并且将存储器事务引导到适当的位置。例如,该部件可以利用地址映射,该地址映射标识对应于本机附接的存储器的地址范围和对应于存储器池106的地址范围。该部件还可以处理来自存储器控制器108的通信。
相反,在计算节点102上运行的、导致这样的存储器事务被发出的多个操作系统可能缺乏本机附接的存储器和池化存储器之间的划分的认识。相反,这两组存储器在多个操作系统看来可能是一个连续的地址范围。因此,本机存储器控制器112可以以对计算节点102及其上执行的软件透明的方式将存储器事务引导到存储器池106。然而,在下面描述的一些示例中,在计算节点102上执行的多个操作系统可以被配置有与存储器控制器108接合的类驱动器和应用编程接口(API),以使多个操作系统能够利用分离式存储器池106。
每一个存储器控制器108可以包括一个或多个端口,每一个端口将存储器控制器通信地耦合到一个或多个计算节点102。在本机存储器控制器112被配置为知晓如上所描述的存储器控制器108的情况下,存储器控制器108中的(多个)端口可以通信地耦合到本机存储器控制器。在所描绘的示例中,存储器控制器108直接附接到计算节点102,而没有中间交换机。然而,可以设想使用交换机将存储器控制器108通信地耦合到计算节点102的实现。在交换机被使用的情况下,每一个存储器控制器108可以包括与交换机和多个计算节点102通信的单个端口。此外,在一些示例中,每一个存储器控制器108可以是符合CXL的存储器控制器(例如,支持CXL.io和CXL.mem协议的类型3CXL设备)。在这样的示例中,并且在存储器控制器108被直接附接到计算节点102而没有CXL交换机的情况下,每一个存储器控制器可以将其自身作为多个CXL链路上的多个单逻辑设备而呈现给计算节点102。在存储器控制器108是符合CXL的存储器控制器但使用交换机来促进存储器控制器节点通信的示例中,每一个存储器控制器可以将其自身作为CXL(多个)链路上的多逻辑存储器设备而呈现给计算节点102。
计算系统100还包括结构管理器114,该结构管理器与计算节点102和存储器控制器108协作,以服务关于分离式存储器池106的切片的请求。结构管理器本质上具有更大的存储器池106的全局视图(与仅对由单个池化存储器控制器108管理的切片具有可见性相反),并提供协调的全局功能。为此,结构管理器114可以从每一个存储器控制器108接收附接到该存储器控制器的存储器110的(多个)切片的描述。然后,结构管理器114可以将来自每一个存储器控制器108的描述组装在一个清单中,该清单共同描述了整个分离式存储器池106的(多个)切片。
图2示出了存储器池106针对示例场景被划分成的切片的示例清单200,在该示例场景中存储器池的一部分被分配给各个计算节点102,并且存储器池的另一部分未被分配给任何计算节点。清单200包括存储器池106的每一个切片的描述,以指示该切片被分配给的计算节点102(对于被分配给计算节点的切片)和切片的尺寸。然而,清单200可以包括任何合适的附加或替代信息,包括但不限于每一个切片的地址范围。此外,在一些示例中,结构管理器114可以向参与分配存储器池106的切片的高级管理器、分配器和/或管理程序提供清单。
除了维护如何分配分离式存储器池106的切片的清单之外,结构管理器114可以指导存储器池的分配。例如,结构管理器114可以接收向计算节点102分配切片的请求,并查阅其清单以标识存储器池106中满足该请求的切片。在标识出能够满足请求的未分配切片(即,未分配给任何计算节点102的切片)的情况下,结构管理器114可以请求或指示附接到包含切片的存储器110的相应存储器控制器108,以将未分配切片的至少一部分分配给请求节点。具体地,可以将满足请求的未分配切片的一部分分配给请求计算节点102(例如,如果一部分的尺寸大于满足请求的部分,则不分配整个未分配切片)。
相反,如果在存储器池106中的任何地方的未分配切片都不可用,则结构管理器114可以向一个或多个存储器控制器108发出请求,以释放当前分配给计算节点102的(多个)切片。然而,该功能至少部分地在存储器控制器108处执行的示例是可能的。例如,存储器控制器108可以接收针对切片的请求,并确定附接到该存储器控制器的存储器110是否包括能够满足该请求的未分配的部分。如果存在这样的未分配的部分,则存储器控制器108可以将该部分的至少一部分作为切片分配给请求计算节点102。如果不存在这样的未分配的部分,则存储器控制器108可以请求计算节点102释放由附接到该存储器控制器的存储器110所存储的分配切片。
在一些示例中,存储器池106的一部分可以被保持为缓冲器,以便在没有足够的未分配的部分(除了缓冲器之外)来服务这样的请求,和/或计算节点102尽管被要求这样做,但不能释放足够的切片来服务的情况。在存储器池106包括这样的缓冲器的示例中,即使在缓冲器的尺寸足以服务于请求的情况下,对切片的请求也可能被拒绝。这可以被认为是存储器池106不包括能够满足切片请求的未分配切片的场景。在这样的示例中,不同于使用缓冲器来服务请求,可以基于切片使用信息标识出未分配的、不太可能导致问题的(多个)分配切片,并且被分配了这些(多个)切片的计算节点102可以被请求释放这些(多个)切片。
由结构管理器114在指导切片的分配和切片的取消分配中利用的切片使用信息可以包括逐切片的使用信息(例如,每一个切片被使用的时间,每一个切片被使用的频率,使用了每一个切片的应用的标识、每一个切片中数据的优先级或重要性)。这样的信息可以被包括在如上所描述的清单中或者以任何其他合适的方式提供。例如,结构管理器114可以利用每一个切片使用信息来向请求计算节点102分配来自存储器110的特定单元的切片,该存储器110的特定单元容纳分配给同一计算节点的另一切片。作为另一示例,结构管理器114可以利用每一个切片使用信息来优先标识被认为优先级较低和/或不太频繁或最近使用的待释放的候选切片。
接收释放已分配切片的请求的存储器控制器108可以使用分配切片来查询在计算节点102上执行的操作系统。图1示出了一种示例性方法,其中存储器控制器108A生成到计算节点102A的中断(例如,消息信号中断(MSI)、MSI-X、系统管理中断(SMI)或不可屏蔽中断(NMI)),以尝试释放已分配给计算节点102A并由在计算节点102B上执行的操作系统116使用的(多个)切片。在该示例中,释放分配切片的请求被存储在存储器控制器108A的一个或多个寄存器118中。由操作系统116实现的类驱动器120读取(多个)寄存器118以发现请求,并调用操作系统的API以请求释放(多个)已分配切片。类似地,分配空闲切片的请求以及关于切片分配的其他请求也可以存储在(多个)寄存器118中,以供操作系统116经由类驱动器120发现。
操作系统116可以确定是否可以以任何合适的方式释放分配给计算节点102A的(多个)切片。例如,如果操作系统当前未使用或预期在未来使用切片,则操作系统116可以接受释放切片的请求,并且如果操作系统当前正在使用切片或可能在将来使用切片,那么操作系统116可以拒绝该请求。操作系统116可以考虑替代或附加的标准,包括但不限于使切片让渡(relinquishment)对于一些应用/负载而言比其他应用更少可能的策略,例如任务关键型工作负载或需要完成以实现服务级别协议的工作负载。作为另一示例,操作系统116可以将到计算节点102A的(多个)切片的分配指定为固定,其中这种固定分配的切片不能被重新分配给另一个计算节点。
在一些示例中,操作系统116释放的(多个)切片足以满足计算节点102针对(多个)切片的请求。在其他示例中,操作系统116可能无法释放足够数目和/或尺寸的(多个)切片以满足请求。在这种情况下,操作系统116可以释放尽可能多的(多个)切片,并(从计算节点102A或存储器控制器108A)向结构管理器114输出其他切片未被释放的指示。然后,结构管理器114可以请求在其他计算节点102上执行的一个或多个其他操作系统释放操作系统116无法释放的(多个)切片。在一些示例中,操作系统116可能无法释放任何切片,在这种情况下,计算节点102A或存储器控制器108A可以向结构管理器114输出释放(多个)切片的请求被拒绝的指示。
调整分离式存储器池106的分配的请求可以源自任何合适的位置,包括分配(多个)切片和释放(多个)分配切片的请求。例如,这样的请求可以源自计算节点102或在其上执行的操作系统(例如,操作系统116)。这些请求可以被直接转发到一个或多个存储器控制器108,或者转发到结构管理器114,然后结构管理器114可以将请求发送到所选的存储器控制器。作为另一示例,结构管理器114可以指示一个或多个存储器控制器108调整(多个)切片分配——例如,基于来自更高级别分配器的调整切片分配的请求或指令。在结构管理器114涉及切片分配的情况下,结构管理器可以查阅清单(例如清单200)以确定哪些存储器控制器108和/或计算节点102请求调整(多个)切片分配。为了建立切片分配,在一些示例中,结构管理器114可以命令一个或多个存储器控制器108自我编程以重新分配存储器地址。结构管理器114可以从存储器控制器108接收所请求的切片分配操作已成功执行的确认,此时,结构管理器可以向操作系统发送消息,以指示切片分配以及与(多个)分配切片相关联的潜在存储器(多个)地址范围。
存储器控制器108可以实现有助于针对存储器池经历存储器压力的情况(即,存储器池的未分配的部分相对较小的情况下)管理分类存储器池106的功能。例如,存储器控制器108可以检测存储器压力的存在(例如,通过分析其所附接的存储器110的分配),并且响应于向一个或多个计算节点102发出释放(多个)分配切片的请求,释放(多个)分配切片不需要咨询计算节点,向计算节点发出警告,以便于计算节点可以主动释放(多个)分配切片,延迟或禁用对(多个)切片的请求,和/或采取任何其他适当的动作。此外,存储器控制器108可以例如通过标识最近最少使用的切片、最不频繁使用的切片,或者通过考虑任何其他合适的使用模式,来评估附接的存储器110在标识用于释放的切片时的使用。
分离式存储器池106的切片的分配可以被强制,使得计算节点102不能访问未分配给该计算节点的切片。这种每一个节点分配可以以任何合适的方式实施。在一些示例中,每一个存储器控制器108可以执行每一个节点分配——在知道哪个计算节点102被分配给附接到该存储器控制器的存储器110的每一个切片的情况下,存储器控制器可以阻止未分配给该切片的另一计算节点对分配给一个计算节点的切片的访问。可替换地或附加地,可以通过仅向计算节点102提供分配给该计算节点的(多个)切片的(多个)地址范围而不提供未分配给该节点的(多个)切片的(多个)地址范围来实施每一个节点分配。
结构管理器114可以以任何合适的方式实现。作为一个示例,结构管理器114可以在计算系统100中的一个或多个计算节点102上执行的代码中实现。在其他示例中,结构管理器114可以由计算系统100外部的一个或多个计算节点或任何其他合适的设备来实现。此外,结构管理器114可以与计算系统100中的部件具有任何适当的通信关系以实现其功能。例如,结构管理器114可以直接与计算节点102通信以建立期望的切片分配,或者在其他示例中可以经由存储器控制器108和/或本机存储器控制器112与计算节点通信。在使用交换机(例如CXL交换机)来促进存储器系统104和计算节点102之间的通信的情况下,结构管理器114可以对交换机进行编程以促进存储器系统节点通信。
虽然图1描述了包括结构管理器114,但是其中结构管理器被省略的实现是可能的。例如,在计算系统100包括附接到多个存储器控制器108的单个计算节点102的情况下,结构管理器114可以被省略。在这样的示例中,存储器控制器108可以从计算节点102接收调整切片分配的请求,确定这样的请求是否可以由附接的存储器110来实现,并且,在未分配的切片不可用于实现这样的请求的情况下,向计算节点发出释放(多个)切片的请求。通常,本文结合存储器控制器108描述的功能中的至少一些可替换地或附加地可以在结构管理器114(或任何其他合适的(多个)部件)处实现,并且这里结合结构管理器描述的功能中的至少一些可替换地或附加地可以在存储器控制器(或任何其他合适的(多个)部件)处实现。在一些示例中,结构管理器114可以被包括在计算系统100包括的附接到公共存储器控制器108的两个或更多个计算节点102的实现中。换句话说,结构管理器114的包括可以是计算系统100是否包括多个计算节点102的结果。
应该理解,释放分配切片可以涉及任何合适的(多个)操作。例如,释放的切片可以从先前分配给它的计算节点102中被取消分配,并且然后将其分配给请求的计算节点,使得释放的切片随后可用于运行存储器事务(例如,读取、写入、存储器一致性操作)。一旦其被分配被释放的切片,被释放的切片存储的数据可以被请求计算节点102重写。在其他示例中,由释放的切片存储的数据可以在切片对请求计算节点102可用之前被复制到另一位置。例如,这样的数据可以从分离式的存储器池106被复制到大容量存储器(例如,性能低于存储器池中存储器的存储器)。
图3示出了示出了在操作系统处使用于执行存储器事务的分离式存储器池的一个或多个切片在线的方法300的流程图。例如,方法300可以在计算节点102处被实现,以使分离式存储器池106的切片在线。此外,方法300可以作为计算节点的初始化(例如,引导过程)的一部分来被执行。
在300,方法300包括,经由计算节点的基本输入/输出系统(BIOS),发现具有形成分离式存储器池的存储器的一个或多个存储器控制器。例如,计算节点102A可以发现存储器控制器108A-108N中的一个或多个,每一个存储器控制器附接到共同形成存储器池106的存储器中的相应存储器110。在一些示例中,计算节点可以使用CXL枚举方法来发现(多个)存储器控制器。发现存储器控制器可以包括:对于每一个发现的存储器控制器,,将附加到该存储器控制器的扩展存储器添加304到计算节点的物理地址映射。图4示出了示例物理地址映射400,其中映射了两个池化存储器控制器的扩展存储器(例如,附接到池化存储器的存储器控制器108A的扩展存储器110A和附接到池化存储器控制器108B的扩展存储器110B)。地址映射400还包括关于本机附接到计算节点的存储器映射输入/输出(MMIO)和存储器(例如DDR)的地址信息。在发现附接到每一个池化存储器控制器的每一个扩展存储器单元的范围时,还可以发现整个分离式存储器池的范围。
在306,方法300包括经由BI操作系统,利用针对所发现的每一个存储器控制器的扩展存储器的基地址和尺寸来更新ACPI表。更新ACPI表可以包括将扩展存储器指定308为热插拔。可替换地或附加地,更新ACPI表可以包括将扩展存储器指定310为离线。这里,扩展存储器在计算节点初始化时被禁用,其中初始化指的是节点启动的一部分,在此期间BIOS处于活动状态,而操作系统未启动。虽然扩展存储器的一个范围(例如,存储器地址范围)对计算节点是可见和已知的,但因为它被指定为热插拔和/或离线而被禁用,因此它还不能被使用。同样,因为(多个)切片的地址范围还未知,计算节点还无法感知节点可以使用的扩展存储器的(多个)切片。此时,扩展存储器及其(多个)切片将不会被已在计算节点上执行的操作系统的BIOS或启动代码使用。
在312,方法300包括经由BIOS调用操作系统。在314,方法300包括经由操作系统读取ACPI表以发现每一个发现的存储器控制器的扩展存储器。这里,并且如上文描述的,扩展存储器的范围对于操作系统来说是可见的和已知的,但是扩展存储器还不可访问,因为它可能由于被指定为离线而被禁用。在316,方法300包括经由操作系统初始化所发现的扩展存储器控制器。初始化发现的扩展存储器控制器可以包括枚举扩展存储器控制器。
在318,方法300包括经由操作系统实现的类驱动器初始化每一个发现的扩展存储器控制器的扩展存储器。在320,方法300包括经由类驱动器向每一个发现的扩展存储器控制器输出针对分离式存储器池的一个或多个切片的请求。在322,方法300包括接收针对(多个)切片的一个或多个地址范围。在324处,方法300包括经由类驱动器调用操作系统的API以在操作系统处使(多个)切片在线。这可以包括将(多个)切片指定为在线。在将(多个)切片指定为在线之前,(多个)切片可以被指定为离线。这里,切片的(多个)存储器地址是操作系统已知的,并且可由操作系统访问。在326,方法300包括使用(多个)切片运行存储器事务。这可以包括将存储器相关指令(例如,存储、加载)引导到与切片相关联的(多个)地址范围。鉴于上述情况,计算节点的上述引导或初始化过程可以提供分离式存储器池的可寻址性,而上述在线过程可以提供对存储器池的访问性。
图5示出了示出将分离式存储器池的切片分配给计算节点的方法500的流程图。方法500可以被实现,以例如将分离式存储器池106的切片分配给计算节点102。
在502,方法500包括:在池化存储器控制器(例如,存储器控制器108A)处,接收向计算节点分配分离式存储器池的切片的请求。在一些示例中,可以从结构管理器(例如,结构管理器114)接收504请求。结构管理器可以从多个存储器控制器中选择存储器控制器,例如基于描述附接到每一个存储器控制器的各个存储器的切片的分配的清单。在一些示例中,结构管理器可以从另一个实体处(例如更高级别的分配器或管理程序)接收请求。
在506,方法500包括在存储器控制器处生成到计算节点的中断。中断可以是MSI-X、SIX、SMI、NMI形式或任何其他合适的形式。在508,方法500包括,经由在计算节点上运行的操作系统实现的类驱动器,读取存储器控制器的一个或多个寄存器,以发现将切片分配给计算节点的请求。这使得操作系统能够访问存储器控制器以发现关于切片的请求。在510,方法500包括经由类驱动器调用操作系统的API以将切片添加到操作系统。将切片添加到操作系统可以包括将切片(例如,切片的存储器地址范围)添加512到由操作系统维护的物理地址映射。在一些示例中,本机存储器控制器(例如,本机存储控制器112A)可以存储切片的地址范围,使得本机存储器可以将针对切片的指令引导到附接到包括切片的存储器的扩展存储器控制器。在知道与切片相对应的存储器地址信息的情况下,操作系统可以使用切片执行存储器事务。
在514,方法500包括经由操作系统生成指示切片到计算节点的分配完成的响应。在516,方法500包括在存储器控制器处接收响应。作为一个示例,可以经由与计算节点相关联的存储器控制器的CXL端口发送响应。在518,方法500包括从存储器控制器向结构管理器发送响应。
图6示出了示出了取消分配分离式存储器池中分配给计算节点的切片的方法600的流程图。方法600可以被实现,以例如取消分配分离式存储器池106的(多个)切片。
在602,方法600包括在池化存储器控制器(例如,存储器控制器108A)处从计算节点接收取消分配分离式存储器池的切片的请求。作为一个示例,可以从结构管理器接收604请求。在一些示例中,结构管理器可以从多个存储器控制器中选择存储器控制器来处理请求。在其他示例中,另一实体(例如更高级别的分配器或计算节点)可以将存储器控制器标识为请求的接收方。此外,将从其分配切片的计算节点可以以任何适当的方式来标识,例如由结构管理器来标识。在另一个示例中,存储器控制器可以分析其切片以标识其取消分配更可能被接受的切片——例如,存储器控制器可根据最近最少使用的策略对切片进行优先级排序以进行取消分配,或者可确定切片中保存的数据被停放在另一存储器/存储位置。
在606,方法600包括在存储器控制器处生成对计算节点的中断。在608,方法600包括,经由由在计算节点上运行的操作系统实现的类驱动器,读取存储器控制器的一个或多个寄存器以发现请求。在610处,方法600包括经由类驱动器调用操作系统的API以从操作系统移除切片。从操作系统移除切片可包括从操作系统维护的物理地址映射移除612切片。在移出切片之前,可能会询问操作系统以确定切片是否能够被释放,例如,基于操作系统或应用程序是否正在使用或将来可能使用切片。如果操作系统接受该请求,则可以释放该切片,并且操作系统可以停止使用该切片执行存储器事务。但是,如果操作系统拒绝该请求,则切片将不会被释放。
在614,方法600包括经由操作系统生成指示请求是被接受还是被拒绝的响应。如上文所描述的,如果切片当前未被使用、将来不太可能被使用、包括低优先级数据和/或出于任何其他合适的原因,则操作系统可以接受该请求。如果切片当前正在使用、将来可能使用、包括高优先级或任务关键数据,和/或出于任何其他合适的原因,操作系统可以拒绝该请求。该响应可以被输出到存储器控制器。如果操作系统接受该请求,则响应可以指示切片被释放。如果操作系统拒绝该请求,则响应可能指示该片未被释放。在616,方法600包括在存储器控制器处接收响应。在618,方法600包括从存储器控制器向结构管理器发送响应。
本文所描述的方法能够提供可通过灵活和动态分配的切片分布在多个计算节点之间的分离式存储器池。如上文所描述的,可以向每一个计算节点通知存储器池的范围,而不需要初始知道或能够访问其组成切片。通过基于消息传递的框架,使切片在线并且可供在计算节点上运行的多个操作系统使用,从而避免了热添加过程的复杂性。同样,基于消息传递的框架允许在考虑到分配切片的使用的情况下取消分配切片的分配并将其提供给请求计算节点,从而使用分配切片执行的计算工作负载不会被过度中断,并且不会经历热移除过程。因此,这些方法可以增强精简配置实现,但也适用于不采用精简配置的实现。
在一些实施例中,本文所描述的方法和过程可以绑定到一个或多个计算设备的计算系统。特别地,这样的方法和过程可以被实现为计算机应用程序或服务、应用编程接口(API)、库和/或其他计算机程序产品。
图7示意性地示出了可以实施上述方法和过程中的一个或多个的计算系统700的非限制性实施例。计算系统700以简化形式示出。计算系统700可以采取一个或多个个人计算机、服务器计算机、平板电脑、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备的形式。
计算系统700包括逻辑子系统702和存储子系统704。计算系统700可以可选地包括显示子系统706、输入子系统708、通信子系统710和/或图7中未示出的其他部件。
逻辑子系统702包括被配置为执行指令的一个或多个物理设备。例如,逻辑器可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、部件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现为执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果或以其他方式获得期望的结果。
逻辑器可以包括被配置为执行软件指令的一个或多个处理器。附加地或替代地,逻辑器可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑器。逻辑器的处理器可以是单核或多核,并且在其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑器的各个部件可选地可以分布在两个或更多个单独的设备之间,这些设备可以远程定位和/或配置用于协调处理。逻辑器的各方面可以被虚拟化并由配置在云计算配置中的远程可访问的联网计算设备执行。
存储装置子系统704包括一个或多个物理设备,其被配置为保存可由逻辑器执行的指令。当实现这样的方法和过程时,存储装置子系统704的状态可以被转换,例如,以保存不同的数据。
存储装置子系统704可以包括可移动和/或内置设备。存储装置子系统704可以包括光盘存储器(例如CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(例如RAM、EPROM、EEPROM等)和/或磁存储器(例如硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等。存储装置子系统704可以包括易失、非易失、动态、静态、读/写、只读、随机访问、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。
应当理解,存储装置子系统704包括一个或多个物理设备。然而,本文所描述的指令的方面可替换地可由不会被物理设备对于有限持续时间内持有的通信介质(例如,电磁信号、光信号等)传播。
逻辑子系统702和存储装置子系统704的各方面可以一起集成到一个或多个硬件逻辑部件中。例如,这样的硬件逻辑部件可以包括现场可编程门阵列(多个FPGA)、程序专用集成电路(PASIC/多个ASIC)、程序和应用专用标准产品(PSSP/多个ASP)、片上系统(SOC)和复杂可编程逻辑器件(多个CPLD)。
术语“模块”、“程序”和“引擎”可用于描述被实现为执行特定功能的计算系统700的一个方面。在一些情况下,模块、程序或引擎可以经由运行由存储装置子系统704保存的指令的逻辑子系统702来实例化。应当理解,不同的模块、程序和/或引擎可以从相同的应用、服务、代码块、对象、库、例程、API、函数等实例化。同样,相同的模块、软件和/或发动机可以由不同的应用、服务、代码块,对象、例程、API、函数等来实例化。术语“模块”、“程序”和“引擎”可以包括单个或组的可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。
应当理解,此处使用的“服务”是可跨多个用户会话执行的应用程序。服务可用于一个或多个系统部件、程序和/或其他服务。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
当被包括时,显示子系统706可用于呈现由存储装置子系统704保存的数据的视觉表示。该视觉表示可以采取图形用户界面(GUI)的形式。由于本文所描述的方法和过程改变了存储机器所保持的数据,并因此改变了存储计算机的状态,因此显示子系统706的状态同样可以被转换为可视地表示底层数据的变化。显示子系统706可以包括一个或多个利用几乎任何类型的技术的显示设备。这样的显示设备可以与共享外壳中的逻辑子系统702和/或存储装置子系统704组合,或者这样的显示装置可以是外围显示设备。
当被包括时,输入子系统708可以包括一个或多个用户输入设备,例如键盘、鼠标、触摸屏或游戏控制器,或与之接口,并且输入动作的转换和/或处理可以在板上或板下进行。在一些实施例中,输入子系统可以包括或与选定的本机用户输入(NUI)接口。这样的部件可以是被集成或外围的,并且输入动作的传导和/或处理可以在板上或板外被处理。示例NUI部件可以包括用于语音和/或语音标识的麦克风;用于机器视觉和/或手势标识的红外、彩色、立体和/或深度相机;用于运动检测和/或意图标识的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估大脑活动的电场感测部件。
当被包括时,通信子系统710可以被配置为将计算系统700与一个或多个其他计算设备通信地耦合。通信子系统710可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置为经由无线电话网络或有线或无线局域网或广域网进行通信。在一些实施例中,通信子系统可以允许计算系统700经由诸如因特网的网络向其他设备发送和/或从其他设备接收消息。
另一示例提供了一种存储器系统,该存储器系统包括存储器控制器和存储器,该存储器附接到存储器控制器并形成分离式存储器池的至少一部分,分离式存储器池包括多个切片,多个切片被各自动态地分配给两个或更多个计算节点中的相应一个,其中存储器系统被配置为接收调整分离式存储器池到请求计算节点的分配的请求,响应于确定分离式存储器池的部分包括能够满足请求的未分配切片,将未分配的部分的至少一部分分配给请求计算节点,以及响应于确定分离式存储器池的部分不包括能够满足请求的未分配切片,向另一计算节点输出释放多个切片中被分配给计算节点的至少一个切片的请求。在这样的示例中,分离式存储器池的地址范围对于两个或更多个计算节点中的每一个计算节点都是可见的。在这样的示例中,存储器系统替换地或附加地可以被配置为,输出针对多个切片中的每一个切片的相应地址范围。在这样的示例中,释放至少一个切片的请求可以由在另一计算节点上运行的操作系统处理。在这样的示例中,存储器系统替换地或附加地可以被配置为响应于另一计算节点释放至少一个切片,输出至少一个切片的地址范围以用于由请求计算节点接收,并且响应于该另一计算节点拒绝释放该至少一个片段,输出该至少一个切片未被释放的指示。在这样的示例中,对于两个或更多个计算节点中的每一个计算节点,可以在初始化时针对这样的节点禁用多个切片中的每一个切片。在这样的示例中,存储器系统替换地或附加地可以被配置为阻止请求计算节点对分配给另一计算节点的切片的访问。在这样的示例中,存储器控制器替换地或附加地可以被配置为,向结构管理器描述分离式存储器池的一部分的分配,以及响应于结构管理器来调整分离式存储器池的部分的分配。在这样的示例中,存储器控制器替换地或附加地可以包括一个或多个寄存器,并且存储器控制器替代地或附加地可以被配置为将在用于调整分离式存储器池的部分的分配的指令存储在一个或多个寄存器中,其中该指令由操作系统可发现。在这样的示例中,存储器可以被映射在每一个计算节点的物理地址空间中。在这样的示例中,存储器控制器替代地或附加地可以被配置为:响应于另一计算节点拒绝释放至少一个切片的请求,向结构管理器输出释放至少一个切片的请求被拒绝的指示,并且结构管理器可以被配置为向另一存储器控制器发出请求,以向请求计算节点分配附接到另一存储器控制器的存储器的切片。
另一示例提供了一种在计算节点处的方法,该方法包括发现附接到相应的存储器一个或多个存储器控制器,相应的存储器控制器形成分离式存储器池,分离式存储器池包括多个切片,多个切片被各自被动态地分配给两个或更多个计算节点中的相应计算节点,多个切片初始被禁用,向一个或多个存储器控制器中的至少一个存储器控制器输出针对多个切片中的一个或多个切片的请求,接收分配给计算节点的一个或多个切片的地址范围,并使用一个或多个切片执行存储器事务。在这样的示例中,该方法替代地或附加地可以包括发现分离式存储器池的范围。在这样的示例中,分离式存储器池的范围可以在计算节点的初始化期间被发现。在这样的示例中,该方法可替代地或附加地可以包括经由类驱动器来初始化分离式存储器池,该类驱动器由计算节点实施。在这样的示例中,该方法替代地或附加地可以包括将附接到一个或多个存储器控制器中的每一个存储器控制器的相应存储器添加到存储器映射。在这样的示例中,可以经由由计算节点实现的类驱动器来输出请求。在这样的示例中,替代地或附加地,该方法可以包括将一个或多个切片指定为在线。
另一示例提供了一种在计算节点处的方法,该方法包括访问存储器控制器以发现关于分离式存储器池的切片的请求,其中该请求用以:将该切片分配给计算节点,将该片的地址范围添加到存储器映射并使用该片执行存储器事务,查询由计算节点执行的操作系统以确定切片能够被释放。在这样的示例中,该方法替代地或附加地可以包括:响应于操作系统接受该请求,向存储器控制器输出响应,以指示该切片被释放并停止使用该切片执行存储器事务,并且响应于操作系统拒绝该请求,向存储器控制器输出指示切片未被释放的响应。
应当理解,这里描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不应被视为限制性的,因为许多变化是可能的。这里描述的特定例程或方法可以表示任意数量的处理策略中的一个或多个。这样,所示出和/或描述的各种动作可以以所示出的和/或所描述的顺序、以其他顺序、并行或省略来执行。同样,可以改变上述处理的顺序。
本发明的主题包括各种工艺、系统和配置的所有新颖和非显而易见的组合和子组合,以及本文所披露的其他特征、功能、行为和/或财产,以及任何和所有等效物。
Claims (15)
1.一种存储器系统,包括:
存储器控制器;以及
存储器,所述存储器附接到所述存储器控制器并形成分离式存储器池的至少一部分,所述分离式存储器池包括多个切片,所述多个切片被各自动态地分配给两个或更多个计算节点中的相应计算节点,
其中所述存储器系统被配置为:
接收调整所述分离式存储器池到请求计算节点的分配的请求;
响应于确定所述分离式存储器池的所述部分包括能够满足所述请求的未分配切片,将未分配的所述部分的至少一部分分配给所述请求计算节点;以及
响应于确定所述分离式存储器池的所述部分不包括能够满足所述请求的未分配切片,向另一计算节点输出释放所述多个切片中被分配给所述计算节点的至少一个切片的请求。
2.根据权利要求1所述的存储器系统,其中所述分离式存储器池的地址范围对于所述两个或更多个计算节点中的每一个计算节点都是可见的。
3.根据权利要求1所述的存储器系统,其中所述存储器系统还被配置为输出针对所述多个切片中的每个切片的相应地址范围。
4.根据权利要求1所述的存储器系统,其中释放所述至少一个切片的所述请求由在所述另一计算节点上运行的操作系统处理。
5.根据权利要求1所述的存储器系统,其中所述存储器系统还被配置为:
响应于所述另一计算节点释放至少一个切片,输出所述至少一个切片的地址范围以用于由所述请求计算节点接收;以及
响应于所述另一计算节点拒绝释放所述至少一个切片,输出所述至少一个切片未被释放的指示。
6.根据权利要求1所述的存储器系统,其中对于所述两个或更多个计算节点中的每一个计算节点,所述多个切片中的每一个切片对于处于初始化的所述节点被禁用。
7.根据权利要求1所述的存储器系统,其中所述存储器系统还被配置为阻止所述请求计算节点对分配给所述另一计算节点的切片的访问。
8.根据权利要求1所述的存储器系统,其中所述存储器控制器还被配置为:向结构管理器描述所述分离式存储器池的所述部分的分配,以及响应于所述结构管理器来调整所述分离式存储池的所述部分的所述分配。
9.根据权利要求1所述的存储器系统,还包括一个或多个寄存器,所述存储器控制器被配置为将用于调整所述分离式存储器池的所述部分的分配的指令存储在所述一个或多个寄存器中,其中所述指令由操作系统可发现。
10.根据权利要求1所述的存储器系统,其中所述存储器被映射在每一个计算节点的物理地址空间中。
11.根据权利要求1所述的存储器系统,其中所述存储器控制器还被配置为:响应于所述另一计算节点拒绝释放所述至少一个切片的所述请求,向结构管理器输出释放所述至少一个切片的所述请求被拒绝的指示,并且其中所述结构管理器被配置为向另一存储器控制器发出请求,以向所述请求计算节点分配附接到所述另一存储器控制器的存储器的切片。
12.一种在计算节点处的方法,包括:
发现附接到相应的存储器的一个或多个存储器控制器,所述相应的存储器形成分离式存储器池,所述分离式存储器池包括多个切片,所述多个切片被各自动态地分配给两个或更多个计算节点中的相应计算节点,所述多个切片初始被禁用;
向所述一个或多个存储器控制器中的至少一个存储器控制器输出针对所述多个切片中的一个或多个切片的请求;
接收分配给所述计算节点的所述一个或多个切片的地址范围;以及
使用所述一个或多个切片执行存储器事务。
13.根据权利要求12所述的方法,还包括发现所述分离式存储器池的范围。
14.根据权利要求13所述的方法,其中所述分离式存储器池的所述范围在所述计算节点的初始化期间被发现。
15.根据权利要求12所述的方法,还包括经由类驱动器来初始化所述分离式存储器池,所述类驱动器由所述计算节点实施。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/011,805 | 2020-09-03 | ||
US17/011,805 US11853798B2 (en) | 2020-09-03 | 2020-09-03 | Disaggregated memory pool assignment |
PCT/US2021/031001 WO2022050993A1 (en) | 2020-09-03 | 2021-05-06 | Disaggregated memory pool assignment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324706A true CN116324706A (zh) | 2023-06-23 |
Family
ID=76284153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180054413.6A Pending CN116324706A (zh) | 2020-09-03 | 2021-05-06 | 分离式存储器池分配 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11853798B2 (zh) |
EP (1) | EP4208775A1 (zh) |
CN (1) | CN116324706A (zh) |
WO (1) | WO2022050993A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12182620B2 (en) | 2022-01-18 | 2024-12-31 | Microsoft Technology Licensing, Llc | Systems and methods with integrated memory pooling and direct swap caching |
US20240028201A1 (en) * | 2022-07-19 | 2024-01-25 | Dell Products L.P. | Optimal memory tiering of large memory systems using a minimal number of processors |
KR20240059347A (ko) | 2022-10-27 | 2024-05-07 | 삼성전자주식회사 | 메모리 공간 할당 방법, 장치 및 시스템 |
US20240220320A1 (en) * | 2022-12-30 | 2024-07-04 | Advanced Micro Devices, Inc. | Systems and methods for sharing memory across clusters of directly connected nodes |
US20250173263A1 (en) * | 2023-11-27 | 2025-05-29 | Dell Products L.P. | Bmc memory expansion system |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6326973B1 (en) | 1998-12-07 | 2001-12-04 | Compaq Computer Corporation | Method and system for allocating AGP/GART memory from the local AGP memory controller in a highly parallel system architecture (HPSA) |
US8788739B2 (en) | 2009-06-29 | 2014-07-22 | Hewlett-Packard Development Company, L.P. | Hypervisor-based management of local and remote virtual memory pages |
US20110103391A1 (en) | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US20120263191A1 (en) * | 2011-04-12 | 2012-10-18 | Red Hat Israel, Inc. | Mechanism For Managing Quotas In a Distributed Virtualization Environment |
US8661230B2 (en) * | 2011-04-15 | 2014-02-25 | International Business Machines Corporation | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
US9405682B2 (en) * | 2012-06-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Storage device access using unprivileged software code |
US9250831B1 (en) * | 2013-03-14 | 2016-02-02 | Inphi Corporation | Isolated shared memory architecture (iSMA) |
US9977618B2 (en) | 2013-12-27 | 2018-05-22 | Intel Corporation | Pooling of memory resources across multiple nodes |
US9535606B2 (en) | 2014-12-22 | 2017-01-03 | Intel Corporation | Virtual serial presence detect for pooled memory |
US10346246B2 (en) * | 2015-11-30 | 2019-07-09 | International Business Machines Corporation | Recovering data copies in a dispersed storage network |
US10210012B2 (en) | 2016-06-27 | 2019-02-19 | Intel Corporation | Techniques for persistent memory virtualization |
US10091904B2 (en) * | 2016-07-22 | 2018-10-02 | Intel Corporation | Storage sled for data center |
US10277677B2 (en) | 2016-09-12 | 2019-04-30 | Intel Corporation | Mechanism for disaggregated storage class memory over fabric |
US10394475B2 (en) | 2017-03-01 | 2019-08-27 | International Business Machines Corporation | Method and system for memory allocation in a disaggregated memory architecture |
US20190044809A1 (en) | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US10649813B2 (en) * | 2018-03-29 | 2020-05-12 | Intel Corporation | Arbitration across shared memory pools of disaggregated memory devices |
US10936374B2 (en) * | 2018-05-17 | 2021-03-02 | International Business Machines Corporation | Optimizing dynamic resource allocations for memory-dependent workloads in disaggregated data centers |
US10915370B2 (en) * | 2018-11-29 | 2021-02-09 | International Business Machines Corporation | Inter-host communication without data copy in disaggregated systems |
US10983794B2 (en) * | 2019-06-17 | 2021-04-20 | Intel Corporation | Register sharing mechanism |
US20220066928A1 (en) * | 2020-09-02 | 2022-03-03 | Microsoft Technology Licensing, Llc | Pooled memory controller for thin-provisioning disaggregated memory |
-
2020
- 2020-09-03 US US17/011,805 patent/US11853798B2/en active Active
-
2021
- 2021-05-06 WO PCT/US2021/031001 patent/WO2022050993A1/en active Application Filing
- 2021-05-06 EP EP21730340.3A patent/EP4208775A1/en active Pending
- 2021-05-06 CN CN202180054413.6A patent/CN116324706A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022050993A1 (en) | 2022-03-10 |
US11853798B2 (en) | 2023-12-26 |
US20220066827A1 (en) | 2022-03-03 |
EP4208775A1 (en) | 2023-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10180843B2 (en) | Resource processing method and device for a multi-core operating system | |
EP3798835B1 (en) | Method, device, and system for implementing hardware acceleration processing | |
JP5507661B2 (ja) | 仮想マシン用非一様仮想メモリーアーキテクチャー | |
US11853798B2 (en) | Disaggregated memory pool assignment | |
US20190155548A1 (en) | Computer system and storage access apparatus | |
US11093297B2 (en) | Workload optimization system | |
US20170031699A1 (en) | Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment | |
US8930507B2 (en) | Physical memory shared among logical partitions in a VLAN | |
US10289564B2 (en) | Computer and memory region management method | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
JP2016541072A5 (zh) | ||
JP2014021972A (ja) | 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造 | |
CN106445628A (zh) | 一种虚拟化方法、装置和系统 | |
US11467776B1 (en) | System supporting virtualization of SR-IOV capable devices | |
US20250199726A1 (en) | System supporting virtualization of sr-iov capable devices | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
US10983832B2 (en) | Managing heterogeneous memory resource within a computing system | |
CN116171430A (zh) | 具有独立地一致的节点的计算设备 | |
US9755986B1 (en) | Techniques for tightly-integrating an enterprise storage array into a distributed virtualized computing environment | |
US9088569B2 (en) | Managing access to a shared resource using client access credentials | |
US20240020174A1 (en) | Memory disaggregation in a multi-node environment | |
US9015418B2 (en) | Self-sizing dynamic cache for virtualized environments | |
US20140245300A1 (en) | Dynamically Balanced Credit for Virtual Functions in Single Root Input/Output Virtualization | |
KR20150010095A (ko) | 운영체제 구성 장치 및 방법 | |
EP2645245B1 (en) | Information processing apparatus, apparatus mangement method, and apparatus management program |
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 |