CN117616402A - 通过超额订阅由系统支持的计算实体共享的物理存储器的系统中的存储器减少 - Google Patents
通过超额订阅由系统支持的计算实体共享的物理存储器的系统中的存储器减少 Download PDFInfo
- Publication number
- CN117616402A CN117616402A CN202280046551.4A CN202280046551A CN117616402A CN 117616402 A CN117616402 A CN 117616402A CN 202280046551 A CN202280046551 A CN 202280046551A CN 117616402 A CN117616402 A CN 117616402A
- Authority
- CN
- China
- Prior art keywords
- memory
- logical
- pooled
- physical
- allocated
- 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 712
- 230000009467 reduction Effects 0.000 title abstract description 4
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000013507 mapping Methods 0.000 claims description 47
- 239000004744 fabric Substances 0.000 claims description 21
- 238000013519 translation Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000010801 machine learning Methods 0.000 description 19
- 230000014616 translation Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 239000010410 layer Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000012549 training Methods 0.000 description 8
- 238000011176 pooling Methods 0.000 description 7
- 239000013598 vector Substances 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/16—General purpose computing application
- G06F2212/163—Server or database system
-
- 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/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
提供了与通过超额订阅计算实体间共享的物理存储器的系统中的存储器减少有关的方法和系统。该存储器的一部分包括与该系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的组合。逻辑池化存储器控制器被配置为:(1)追踪向多个计算实体中的任何计算实体分配的逻辑池化存储器的页面是否是已知模式页面的状态,以及在与任何分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系,以及(2)允许写入操作在第一类型的第二物理存储器中向任何可用空间写入数据,仅限对应于先前向计算实体分配的逻辑池化存储器的一部分的物理存储器的范围。
Description
背景技术
多个用户或者租户可以共享系统,包括计算系统和通信系统。计算系统可以包括公有云、私有云,或者同时具有公有和私有部分的混合云。公有云包括执行各种功能的服务器的全局网络,该功能包括存储和管理数据、运行应用和交付内容或者服务,例如流媒体视频、配置电子邮件、提供办公生产力软件,或者处理社交媒体。服务器和其他组件可能位于世界各地的数据中心中。虽然公有云通过互联网向公众提供服务,但是企业可以使用私有云或者混合云。私有云和混合云都也包括位于数据中心中的服务器的网络。
多个租户可以使用与在云端中的服务器相关联的计算、存储和网络资源。作为示例,与不同租户相关联的计算实体可以被分配某些数量的计算和存储器资源。在许多这种情况中,向各种计算实体分配的资源(包括存储器资源)可能没有得到充分利用。在包括基站的其他系统中,例如通信系统,类似的存储器资源未充分利用可能发生。
发明内容
在一个示例中,本公开涉及包括向计算实体分配与系统相关联的存储器的一部分的方法,其中该存储器的一部分包括用于和与系统相关联的多个计算实体使用的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。如本文所用,术语“计算实体”包括但不限于实现功能、虚拟机、应用、服务、微服务、容器、用于无服务器计算的单内核或者上述的一部分的任何可执行代码(以硬件、固件、软件或者上述的任何组合的形式)。如本文所用,术语“逻辑池化存储器”指的是包括由多个计算实体共享的超额分配的物理存储器的存储器,这些计算实体可以对应于单个主机或者多个主机。逻辑池化存储器可以被映射到第一类型的第二物理存储器,并且其中被指示为可用于向多个计算实体分配的逻辑池化存储器的数量大于第一类型的第二物理存储器的数量。该方法还可以包括向与逻辑池化存储器相关联的逻辑池化存储器控制器指示与初始被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的所有页面是已知模式页面。该方法还可以包括逻辑池化存储器控制器追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与任何被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者。该方法还可以包括响应于由计算实体发起的写入操作,允许向第一类型的第二物理存储器中的任何可用空间写入数据,该可用空间不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。
在另一个示例中,本公开涉及包括用于与多个计算实体使用的存储器的系统,在其中存储器的一部分包括与系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。该逻辑池化存储器可以被映射到第一类型的第二物理存储器,并且被指示为可用于向多个计算实体分配的逻辑池化存储器的数量可以大于第一类型的第二物理存储器的数量。该系统还可以包括被耦合到逻辑池化存储器的逻辑池化存储器控制器,该逻辑池化存储器控制器被配置为:(1)追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,以及(2)响应于由计算实体发起的用以写入除已知模式以外的任何数据的写入操作,允许写入操作向第一类型的第二物理存储器中的任何可用空间写入数据,该可用空间不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。
在另一个示例中,本公开涉及包括可被配置为执行多个计算实体中的一个或多个计算实体的多个主机服务器。该系统还可以包括存储器,在其中存储器的一部分包括在多个主机服务器当中共享的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。该逻辑池化存储器可以被映射到第一类型的第二物理存储器,并且被指示为可用于向多个计算实体分配的逻辑池化存储器的数量可以大于第一类型的第二物理存储器的数量。该系统还可以包括被耦合到与系统相关联的逻辑池化存储器的逻辑池化存储器控制器,该控制器被配置为:(1)追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,以及(2)响应于由计算实体发起的、由与多个主机服务器中的任何主机服务器相关联的处理器执行的、用以写入除已知模式以外的任何数据的写入操作,允许写入操作向第一类型的第二物理存储器中的任何可用空间写入所述数据,该可用空间不超过与先前被提供给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。
本发明内容被提供来以简化形式介绍一些概念,以下在详细描述中将进一步描述这些概念。本摘要不旨在于标识声明的主题内容的关键特征或者基本特征,也不旨在于被用于限制声明的主题内容的范围。
附图说明
本公开资料通过示例的方法说明,并且不受附带数字的限制,在其中相似的引用指示类似的要素。在图中的要素被说明用于简单性和清晰度,并且不一定是按比例绘制的。
图1是根据一个示例包括与逻辑池化存储器系统耦合的主机服务器的系统环境的框图;
图2根据一个示例示出了超额订阅过程流;
图3是根据一个示例包括VM调度器、机器学习(ML)系统和包括被配置为允许用于超额订阅的逻辑池化存储器系统的主机服务器的系统的框图;
图4是根据一个示例被配置为允许用于存储器的超额订阅的逻辑池化存储器系统的框图;
图5根据一个示例示出了使用转换后备缓冲区(TLB)的映射表的示例实现的图;
图6示出了包括与被配置为允许用于存储器的超额订阅的逻辑池化存储器系统耦合的多个主机服务器的示例系统的框图;
图7示出了用于实现用于允许向计算实体分配的池化存储器的超额订阅的至少部分方法的示例系统的框图;
图8示出了用于超额订阅用于和计算实体使用的物理存储器的示例方法的流程图;以及
图9示出了用于超额订阅用于和计算实体使用的物理存储器的另一个示例方法的流程图。
具体实施方式
在本公开中描述的示例涉及通过超额订阅在由系统支持的计算实体当中共享的物理存储器来减少在系统中的存储器。某些示例涉及在多租户计算系统中超额订阅用于与虚拟机使用的物理存储器。多租户计算系统可以是公有云、私有云或者混合云。公有云包括执行各种功能的服务器的全局网络,该功能包括存储和管理数据、运行应用,以及交付内容或者服务,例如流媒体视频、电子邮件、办公生产力软件或者社交媒体。服务器和其他组件可能位于世界各地的数据中心中。虽然公有云通过互联网向公众提供服务,但企业可以使用私有云或者混合云。私有云和混合云也都包括位于数据中心中的服务器的网络。计算实体可以使用数据中心的计算和存储器资源执行。如本文所用,术语“计算实体”包括但不限于实现功能、虚拟机、应用、服务、微服务、容器、用于无服务器计算的单内核或者上述部分的任何可执行代码(以硬件、固件、软件或者上述任何组合的形式)。或者,计算实体可以在与边缘计算设备、本地服务器或者其他类型的系统相关联的硬件上执行,包括通信系统,例如基站(例如,5G或者6G基站)。
与本公开的示例一致,计算实体被分配本地物理存储器和逻辑池化存储器的组合,假设存储器使用通常将小于或者等于向计算实体分配的存储器。这允许计算实体在系统中超额订阅已安装的存储器,因为更多的计算实体可以由系统支持,而无须部署附加的物理存储器。作为示例,在多租户计算或者通信系统中,每个租户被分配总系统存储器的一部分。可以观察到的是,所有租户不会在相同的时间使用他们存储器的全部分配。因此,作为示例,在数据中心中的主机服务器可以被分配由池化存储器系统暴露的逻辑池化存储器。VM中的每个VM可以向主机服务器分配在主机服务器上的本地物理存储器和可用的逻辑池化存储器的一部分的组合。逻辑池化存储器可以是物理池化存储器和不由任何物理存储器支持的已知模式页面的组合。总之,如本文所用的术语“逻辑池化存储器”指的是包括由多个计算实体共享的超额分配的物理存储器的存储器,这些计算实体可以对应于单个主机或者多个主机。在这个示例中,超额分配意味着逻辑池化存储器具有比被指示为可用于计算实体的存储器的总数量更小数量的物理存储器。如本文所用的术语“已知模式页面”指的是仅包括0、仅包括1或者一些其他已知模式的值或者符号的任何页面。VM可以首先使用本地物理存储器,并且一旦使用了本地物理存储器,VM就可以访问逻辑池化存储器的一部分。在多租户计算系统中,当所有VM都以这种方式被分配存储器时,它们不太可能耗尽支持逻辑池化存储器的物理池化存储器的全部分配。这就是为什么在逻辑池化存储器控制器后面的实际物理存储器可能小于向主机服务器暴露的逻辑池化存储器。这反过来可以允许用于减少需要被部署为多租户计算系统或者通信系统的一部分的物理存储器(例如,DRAM)的数量。
虽然有逻辑池化存储器的以上实现,逻辑池化存储器的一部分中的一些将保持未使用状态,但很难预测在给定时间处逻辑池化存储器的哪一部分将未使用。实际上,逻辑池化存储器的不同部分可能在不同的时间处在使用中。因此,需要一种机制以灵活地将池化物理存储器映射到向计算实体暴露的逻辑池化存储器空间,这样在使用中的逻辑池化存储器空间由物理池化存储器支持,同时留下未使用的物理池化存储器不被映射。在某些示例中,映射功能可以使用页面映射表执行。其他机制也可以被使用。此外,在一些实例中,存储器的使用可以通过在将数据存储到物理池化存储器之前压缩数据来进一步优化。如果使用了数据压缩,那么映射功能可以进一步修改,以保持被压缩的存储器页面的追踪。
图1是根据一个示例包括与逻辑池化存储器系统150耦合的主机服务器(例如,主机服务器110、120和130)的系统环境100的框图。每个主机服务器可以被配置为执行多个计算实体。在这个示例中,主机服务器110可能正在执行计算实体112(例如CE-0、CE-1和CE-2),主机服务器120可能正在执行计算实体122(例如CE-3、CE-4和CE-5),以及主机服务器130可能正在执行计算实体132(例如CE-6、CE-7和CE-N)。逻辑池化存储器系统180可以包括逻辑池化存储器190,该逻辑池化存储器190可以包括多个存储器模块。虽然没有在图1中显示,逻辑池化存储器系统180可以包括逻辑池化存储器控制器(稍后描述)。如稍后在更多细节中解释的,逻辑池化存储器190可以包括比被配置为支持逻辑地址空间的物理存储器更大的地址空间。在这个示例中,逻辑池化存储器190可以包括存储器模块:PM-1、PM-2和PM-M,其中M是大于1的整数。如本文所用的术语“存储器模块”包括基于可能充当可缓存存储器的存储器技术的任何存储器。这种存储器模块的示例包括但不限于双存储器模块(DIMM)或者单存储器模块(SIMM)。如本文所用的术语“可缓存存储器”包括任何类型的存储器,其中经由与该存储器相关联的读取操作获取的数据可能被复制到存储器缓存,这样下一次相同的数据被访问时,可能从存储器缓存中获取该数据。存储器可以是动态随机访问存储器(DRAM)、闪存、静态随机访问存储器(SRAM)、相变存储器、磁性随机访问存储器或者允许存储器充当可缓存存储器的任何其他类型的存储器技术。
继续参考图1,主机服务器中的每个主机服务器110、120和130可以经由到包括在逻辑池化存储器190中的存储器模块的链接来耦合。作为示例,主机服务器110被显示为经由链接142与存储器模块PM-1耦合、经由链接144与存储器模块PM-2耦合,以及经由链接146与存储器模块PM-3耦合。主机服务器120被显示为经由链接152与存储器模块PM-1耦合、经由链接154与存储器模块PM-2耦合以及经由链接156与存储器模块PM-3耦合。作为另一示例,主机服务器130被显示为经由链接162与存储器模块PM-1耦合、经由链接164与存储器模块PM-2耦合,以及经由链接166与存储器模块PM-M耦合。
仍然参考图1,在这个示例中,结构管理器170可以管理向相应的主机服务器分配的存储器范围。服务计算实体的处理器(例如,CPU)可以发出加载或者存储指令。加载或者存储指令可能导致向本地存储器(例如,与被配置为执行计算实体的主机服务器的CPU相关联的DRAM)的读取或者写入,或者向与逻辑池化存储器190相关联的存储器模块的读取/写入。在这个示例中,导致向与逻辑池化存储器160相关联的存储器模块读取/写入的加载或者存储指令可以由结构管理器170转换成使用链接(例如,链接142、144或者146)中的一个链接完成的事务。在一个示例中,结构管理器170可以基于计算表达链接(Compute ExpressLink)规范使用结构管理器实现。
继续参考图1,计算实体112、122和132可以使用被包括作为数据中心的一部分的集群集合来提供计算、存储和联网资源。如在本公开中所用,术语数据中心可以包括但不仅限于由云端服务提供方拥有的数据中心中的一些或所有、由云端服务提供方拥有和操作的数据中心中的一些或所有、由云端服务提供方的客户执行的云端服务提供方拥有的数据中心中的一些或所有、数据中心的任何其他组合、单个数据中心,或者甚至在特定的数据中心中的一些集群。在一个示例中,每个集群可以包括多个完全相同的服务器。因此,集群可以包括包含特定数目的CPU内核和特定数量的存储器的服务器。或者,计算实体112、122和132可以在与边缘计算设备、本地服务器或者其他类型的系统(包括通信系统,例如基站(例如,5G或6G基站))相关联的硬件上执行。虽然图1显示系统环境100为具有某些数目的组件,包括以某种方式排列的计算实体和存储器组件,但系统环境100可以包括以不同的方式排列的附加的或者更少的组件。
图2示出了超额订阅过程流的示例。这个示例示出了使用虚拟机(VM)作为正在使用与主机服务器相关联的硬件执行的示例计算实体的超额订阅过程。此外,这个示例假定主机服务器位于包括主机服务器的集群的数据中心中。这个示例进一步假定主机服务器的集群是多租户云端的一部分。然而,超额订阅过程可以被用于其他设置中,该设置包括当计算实体在与边缘计算设备、本地服务器或者其他类型的系统相关联的硬件上执行时,包括通信系统,例如基站(例如,5G或者6G基站)。
响应于来自用户的初始化VM的请求,VM调度器可以使用与主机服务器相关联的硬件资源来调度用于执行的VM。作为这个过程的一部分,VM可能被分配特定计算资源(例如,CPU)和存储器(例如,与CPU相关联的DRAM)。与主机服务器相关联的存储器可以通过单独使用超额订阅或者将超额订阅与池化组合使用来更好地被利用。作为示例,存储器可以被超额预订,并且期望在大多数用例中,VM将仅使用通常由这样的VM使用的存储器或预测由这样的VM使用的存储器。在一个示例中,VM的峰值使用的平均值可以作为本地物理存储器分配给VM。因此,特定数量的存储器可以被分配给VM,但知道这些存储器可能未必对这些虚拟机可用,包括,例如,在峰值使用或者另一个高存储器使用场景中。当这两种技术被一起使用时,池化可能有助于超额订阅,并且超额订阅可能有助于池化。这是因为来自池化的存储器以用于超额订阅的已经分配的存储器的VM使用。
仍然参照图2,示出了关于由VM用于32GB存储器(210)的请求的示例超额订阅过程。在这个示例中,响应于这个请求,管理程序(或者用于向VM分配资源的另一协调器)可以分配物理存储器的19GB和存储器的13GB,这些存储器被映射到逻辑池化存储器。在这个示例中,19GB存储器的分配可能基于由请求VM预测的存储器的使用。在这个示例中,池化存储器可能具有256GB的逻辑池化存储器和128GB的物理池化存储器。以这种方式,映射到池化存储器的13GB可能是可用的或者可能是不可用的,因为256GB的逻辑池化存储器与支持附加的VM的其他主机服务器共享。已经分配了物理存储器的19GB和映射到池化存储器的逻辑存储器的13GB的VM可以在不对该池化存储器放置任何要求的情况下执行,因为在大多数情况下,由VM实际使用的存储器可能小于19GB(220)。或者,在少数情况下,VM的存储器的使用可能超过19GB(230)。在这种情况下,附加的存储器可以从逻辑池化存储器260中的物理存储器池化262被分配。作为超额订阅过程的一部分,高水位可能与物理池化存储器262的使用相关联,这样当由VM对该存储器的使用接近高水位时,可能启动特定的缓解进程。作为示例,当达到高水位时,逻辑池化存储器控制器可能在将它们存储在物理池化存储器262中之前开始压缩页面。在另一个示例中,物理池化存储器262可以由附加的物理存储器备用,这些物理存储器可能具有更高的延迟,并且因此它可能比与物理池化存储器262相关联的存储器更便宜部署。在这种情况下,一旦达到高水位,页面就可能被写入更慢的存储器。
为了确保计算实体在使用被分配给它的逻辑池化存储器的一部分(例如,13GB)之前首先使用被分配给它的物理存储器的一部分(例如,19GB),软件机制可以被用于使计算实体能够区分物理存储器和逻辑池化存储器。在一个示例中,为了确保在支持非统一存储器访问(NUMA)节点的主机服务器中的更好的性能,池化存储器可能作为无计算的虚拟NUMA节点被暴露给VM。这使得VM区分本地物理存储器和逻辑池化存储器,该逻辑池化存储器可能具有更高的延迟。因此,VM可以继续首先使用本地物理存储器,并且一旦本地物理存储器耗尽,它就可以开始使用作为无计算虚拟NUMA节点被暴露给VM的池化存储器。其他机制也可以被用于允许VM区分本地物理存储器和逻辑池化存储器。尽管图2描述了利用由VM请求的32GB和256GB的逻辑池化存储器的总数的超额分配过程,但VM可以请求存储器的附加或者更少的数量(例如,在4GB到128GB之间的任何地方)。类似地,逻辑存储器池化的大小可能更小或者更大,这取决于由计算系统提供的计算实体的数目。此外,尽管图2描述了本地物理存储器的数量为19GB并且逻辑池化存储器的数量为13GB,但这些数量可能在计算实体当中呈现差异。此外,超额订阅过程不请求在主机服务器(或者其他系统)当中的存储器的池化,它只请求多个计算实体共享逻辑池化存储器。
图3是根据一个示例的系统300的框图,该系统300包括VM调度器302、机器学习(ML)系统304和主机服务器310,其中包括被配置为允许超额订阅的资源330。主机服务器310也可以包括管理程序320、计算资源(例如,CPU-0 332和CPU-1 338)、本地存储器资源(例如,本地存储器-0 340和本地存储器-1 342)、结构管理器350和逻辑池化存储器系统360。VM调度器302可以被配置为接收来自与多租户云端相关联的任何租户的针对虚拟机的请求,并且调度VM的位置(例如,在主机服务器310上的VM 312、VM 314、VM 316和VM 318)。在这个示例中,资源330中的每个资源可以作为硬件组件实现,例如使用SoC、控制器、处理核心、存储器模块、ASIC、FPGA、CPLD、PLA、硅IP等中的一个或多个。此外,在这个示例中,与VM调度器302、ML系统304和管理程序320中的每个相关联的功能可以经由指令实现,这些指令在被处理器执行时,被存储在非暂态介质中。尽管图3描述了关于VM的系统300,但其他计算实体也可以以类似的方式与系统300使用。此外,VM调度器302可以被配置为处理来自被包括在边缘计算设备、本地服务器或者其他类型的系统(包括通信系统,例如基站(例如5G或者6G基站))中的计算实体的请求。
ML系统304可以被配置为向VM调度器302提供资源预测,包括预测存储器使用。用以部署VM集合的请求可以到达VM调度器302处。在这个示例中,VM调度器302然后可以向ML系统304发送查询,以请求预测存储器使用。ML系统304可以提供存储器使用预测。使用这些预测,VM调度器302可以向VM分配存储器资源。或者,VM调度器302可能已经提供了存储器使用预测或者其他存储器使用信息,这样VM调度器302就不需要在每次需要放置或者调度用于执行的VM时查询ML系统304。如前面关于图2所解释的,分配的存储器可以是物理存储器(例如,本地DRAM)和到逻辑池化存储器的映射的组合。
继续参考图3,ML 304系统可以包括具有被配置为执行与ML系统304相关联的各种功能的指令的多个组件。ML系统304可以包括离线训练组件和在线预测组件。离线训练组件可以负责各种机器语言模型的训练、验证模型,以及发布经验证的模型。在线预测组件可以生成有关各个方面的预测,这些方面包括与由VM的存储器使用和与VM相关联的任何行为模式有关的预测。在训练ML模型之前,允许ML模型基于输入来预测指标的特征可以被选择。训练阶段可以包括使用反向传播或者其他技术,允许ML模型学习在特定输入参数和基于参数的特定预测之间的关系。作为示例,使用随机梯度下降训练的神经网络模型可以被用于预测用于计算实体(例如VM)的存储器使用。其他类型的ML模型,包括贝叶斯模型,可以被使用。
通常,可以实现监督学习算法,该算法可能基于输入数据训练,并且一旦训练完成,它就可能基于训练来预测或者处方。学习和推理技术中的任何技术,例如线性回归、为回归做准备的支持向量机(SVM)、为回归做准备的随机森林、为回归做准备的梯度提升树和神经网络都可以被使用。线性回归可以包括建模在自变量和因变量之间的过去关系。神经网络可以包括被用于创建输入层、一个或多个隐藏层和输出层的人工神经元。每一层都可以编码为矩阵或者权重的向量,这些权重以系数或者常数的形式表达,这可能经由神经网络的离线训练获取。神经网络可以被实现为循环神经网络(RNN)、长短期记忆(LSTM)神经网络,或者门控循环单元(GRU)。由基于监督学习的模型需要的所有信息都可以被转换成对应于这些技术中的任何技术的向量表示。
采取LSTM示例,LSTM网络可以包括一系列重复的RNN层或者其他类型的层。LSTM网络的每一层都可以在给定的时间步长处消耗输入,例如,来自前一个时间步长的层状态,并且可以产生新的一组输出或者状态。在使用LSTM的情况下,内容的单个块可以被编码到单个向量或者多个向量。作为示例,单词或者单词的组合(例如,短语、句子或者段落)可以被编码为单个向量。每个块可以被编码到LSTM网络的单个层(例如,特定的时间步长)。LSTM层可以使用等式集合来描述,例如以下的等式集合:
it=σ(Wxixt+Whiht-1+Wcict-1+bi
ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)
ct=ftct-1ittanh(Wxcxt+Whcht-1+bc)
ot=σ(Wxoxt+Whoht-1+Wcoct+bo)
ht=ottanh(ct)
在这个示例中,在每个LSTM层内部,输入和隐藏状态可以使用向量操作的组合(例如,点积、内积或者向量加法)或者非线性操作(如果需要)来处理。对应于机器学习系统的指令可以被编码为对应于A/I处理器的硬件。在这种情况下,与ML系统304相关联的功能中一些或者所有功能可能是硬编码的,或者以其他方式作为A/I处理器的一部分提供。作为示例,有必要的功能的A/I处理器可以使用FPGA实现。
在另一个示例中,向VM分配的存储器可以动态地改变或者确定。作为示例,行为变化可以对应于随时间推移由虚拟机提供的工作负载,并且可以被用于动态地改变存储器分配。行为变化的一个示例可以涉及服务web搜索工作负载或者其他类似的工作负载的虚拟机。这种VM可能具有昼夜模式,这样工作负载在白天期间需要更多的资源,但在夜晚期间不需要太多资源。在一个示例中,使用快速傅里叶变换(FFT)算法,可以检测与VM相关联的行为的周期性。FFT可以被用于在多个时间尺度处检测周期性,但只有当由虚拟机处理的工作负载具有与特定模式一致的周期性(例如,日模式)时,VM的存储器分配才可以被动态地改变。周期性分析可以产生也能够被用于训练ML模型以预测VM将可能执行日模式或者其他模式的基本事实标签。在另一个示例中,其他特征(例如,云端订阅ID、创建VM的用户、VM类型、VM大小和客户操作系统)也可以被用于静态或者动态地改变被分配给VM的物理存储器和池化存储器的范围。
在另一个示例中,不是预测存储器使用或者确定行为/使用模式,而是响应于用于调度VM的请求,VM可以被独占地分配本地物理存储器。稍后,随着与主机服务器(或者主机服务器的合集)相关联的本地物理存储器开始达到特定的利用水平,所调度的VM可以被分配本地物理存储器和所映射的逻辑池化存储器的组合。以这种方式,存储器可以向当前正在执行的VM动态地分配。
仍然参考图3,管理程序320可以管理虚拟机,包括VM 312、314、316和318。CPU-0332可以包括一个或多个处理核心,并且CPU-1 338可以包括一个或多个处理核心。对应于管理程序320的指令在被处理核心中的任何处理核心执行时,可以提供由管理程序320提供的管理功能。管理程序320可以确保与任何给定VM相关联的任何线程仅在它的组的逻辑核心上调度。CPU-0 332可以耦合到本地存储器-0 340,并且CPU-1 338可以耦合到另一本地存储器-1 342。本地存储器-0 340和本地存储器-1 342中的每个本地存储器可以包括一个或多个存储器模块。这种存储器模块的示例包括但不限于双存储器模块(DIMM)或者单存储器模块(SIMM)。任何“可缓存存储器”的存储器类型都可以被用于实现存储器模块。如本文所用的术语“可缓存存储器”包括任何类型的存储器,在其中经由与该存储器相关联的读取操作获取的数据可能被制到存储器缓存,这样下一次相同数据被访问时,它可能从存储器缓存中获取。存储器可以是动态随机访问存储器(DRAM)、闪存、静态随机访问存储器(SRAM)、相变存储器、磁性随机访问存储器或者可能允许存储器充当可缓存存储器的任何其他类型的存储器技术。
继续参考图3,在这个示例中,CPU-0 332可以经由结构接口-0 334耦合到结构管理器350,并且CPU-1 338可以基于另一结构接口-1 336耦合到结构管理器350。结构管理器350可以允许由与CPU-0 332和CPU-1 338相关联的处理核心执行的VM中的任何VM以访问逻辑池化存储器系统360。在一个示例中,与主机服务器310相关联的CPU中的任何CPU都可以向由管理程序320设置的逻辑地址空间发出加载或者存储指令。加载或者存储指令可能导致向本地存储器(例如,本地存储器-0 240或者本地存储器-1 342,这取决于发出加载或者存储指令的CPU)的读取或者写入,或者与逻辑池化存储器系统360相关联的读取/写入事务。在一个示例中,假设本地存储器是DRAM,与访问DRAM相关联的双数据速率(DDR)协议中的任何协议都可以由CPU使用以读取/写入本地存储器。在这个示例中,导致向与逻辑池化存储器系统360相关联的存储器模块读取/写入的加载或者存储指令,可以由结构管理器350(或者另一个类似的子系统)转换成事务,该事务使用将虚拟机和与逻辑池化存储器系统360相关联的存储器耦合的任何链接完成。读取/写入事务可以使用与结构管理器350和逻辑池化存储器系统360相关联的协议来执行。与逻辑池化存储器系统360相关联的存储器模块在被实现为DRAM存储器模块时,可以通过与使用相关的DDR协议中的任何协议的逻辑池化存储器系统360相关联的控制器访问。
在一个示例中,结构管理器350可以基于计算表达链接(CXL)规范使用结构管理器实现。在这个示例中,与逻辑池化存储器系统360相关联的存储器模块可以被配置为类型3CXL设备。由管理程序320向虚拟机暴露的逻辑地址空间至少可以是由与CXL总线/链接相关联的控制器暴露的地址范围的子集。因此,作为这个示例的一部分,与是基于PCIe的非相干I/O协议的CXL.io协议相关联的事务可以被用于配置在被包括在逻辑池化存储器系统360中的CPU和存储模块之间的存储器设备和链接。CXL.io协议也可以由与在设备发现、枚举、错误报告和管理中的主机服务器310相关联的CPU使用。或者,支持这种配置事务的任何其他I/O协议也可以被使用。对存储器模块的存储器访问可以经由与CXL.mem协议相关联的事务处理。这个CXL.mem协议是支持存储器事务的存储器访问协议。作为示例,与主机服务器310的CPU中的任何CPU相关联的加载指令和存储指令可以经由CXL.mem协议处理。或者,允许将CPU加载/存储指令转换成与被包括在逻辑池化存储器系统360中的存储器模块相关联的读取/写入事务的任何其他协议也可以被使用。尽管图3示出了包括以特定方式排列的特定组件的主机服务器310,但主机服务器310可以包括以不同方式排列的附加或者更少的组件。作为示例,尽管图3示出了耦合到CPU的本地存储器,但没有本地存储器可以耦合到CPU。相反,CPU仅可以访问与逻辑池化存储器系统360相关联的存储器。此外,尽管图3示出了由单个主机服务器托管的VM,但VM 312、314、316和318可以使用一组主机服务器(例如,在数据中心中的主机服务器的集群)来托管。逻辑池化存储器系统360可以跨主机服务器共享,或者可以针对每个主机服务器专用。
图4是根据一个示例被配置为允许用于存储器的超额订阅的逻辑池化存储器系统400的框图。在一个示例中,图3的逻辑池化存储器系统360可以被实现为逻辑池化存储器系统400。在这个示例中,逻辑池化存储器系统400可以包括逻辑池化存储器410、逻辑池化存储器控制器450和池化存储器控制结构480。逻辑池化存储器410可以包括物理池化存储器412和已知模式页面414。物理池化存储器412可以包括具有物理存储器(例如DRAM)的存储器模块。物理池化存储器412可以对应于逻辑地址空间。已知模式页面414可以表示不由任何物理存储器支持的逻辑地址空间。逻辑池化存储器控制器450可以通过与池化存储器数据结构480交互来管理对逻辑池化存储器410的访问。逻辑池化存储器控制器450可以被实现为硬件、固件或者软件指令的任何组合。对应于逻辑池化存储器控制器450的指令可以被存储在与逻辑池化存储器系统400相关联的存储器中。这种指令在被与逻辑池化存储器系统400相关联的处理器执行时,可以提供与逻辑池化存储器控制器450相关联的功能的至少部分。其他功能可以由与逻辑池化存储器控制器450相关联的控制逻辑提供,包括有限状态机和其他逻辑。
在这个示例中,池化存储器控制结构480可以包括映射表482和物理存储器空闲页面列表484。映射表482和物理存储器空闲页面列表484都可以被存储在物理池化存储器412或者其他存储器(例如,与逻辑池化存储器控制器450相关联的缓存)中。映射表482可以维护与物理池化存储器412相关联的逻辑地址空间和物理地址空间之间的映射。映射表482也可以根据页面是否为已知模式页面来保持页面的状态的追踪。已知模式页面可以不具有作为物理池化存储器412的一部分的任何所分配的物理空间。在这个示例中,与已知模式页面相关联的物理存储器地址被认为是无效的(在映射表482中标识为不适用(N/A))。如果压缩被用于释放在物理池化存储器412中的附加空间,那么也可以使用映射表482来追踪它。以下的表1示出了示例映射表482。
表1
如在表1中所示,映射表482可以由页面号索引。已知模式页面指示符(例如,已知模式页面(KNOWN-PRTTERN PAGE)标志)可以与每个页面相关联。逻辑高值(例如,1)可以向逻辑池化存储器控制器450指示在对应于该页面号的物理池化存储器412中没有物理存储器空间已经被分配。逻辑低值(例如,0)可以向逻辑池化存储器控制器450指示在对应于该页面号的物理池化存储器412中物理存储器空间已经被分配。逻辑池化存储器控制器450可以基于与页面号相关联的任何状态变化来修改已知模式页面指示符。在VM的调度或者创建的点处,管理程序(或者主机操作系统)可以将针对VM的存储器中的一些存储器映射到与主机服务器相关联的物理存储器,并且将其余存储器映射到逻辑池化存储器410。此时,管理程序(或者操作系统)可以向逻辑池化存储器控制器450发出命令,以将与被分配给VM的逻辑池化存储器相关联的页面的已知页面指示符设置为逻辑高值(例如,1)。VM也可以在VM初始化时将已知模式写入被分配给它的逻辑池化存储器。逻辑池化存储器控制器450可以检测到正在写入已知模式的写入操作,作为在这个点处没有物理存储器需要被分配给该VM的指示。此外,逻辑池化存储器控制器450可以确保针对对应页面的已知模式页面指示符在映射表482中被准确地反映。
一开始,逻辑池化存储器控制器450可以将针对该VM的逻辑池化存储器中的所有逻辑池化存储器映射到已知模式页面414。新调度的VM也可以与管理程序工作,以确保对应于被分配给VM的逻辑池化存储器410的任何页面在映射表482中被标识为已知模式页面。稍后,当VM使用完被分配给它的所有本地物理存储器并且它开始向逻辑存储器地址空间写入不是已知模式(例如,非零)时,逻辑池化存储器控制器450可以从对应于物理池化存储器412的逻辑地址空间(由逻辑池化存储器控制器450暴露的)内开始向该VM分配页面。物理存储器空闲页面列表484可以包括对应于空闲的并且没有由映射表482映射的物理池化存储器412的页面列表。以下的表2示出了示例物理存储器空闲页面列表484。这个示例列出了对应于可以被分配的物理池化存储器412的页面。
表2
尽管地址转换被描述为单层地址转换,但地址转换可以是多级地址转换,并且因此,它可能需要附加的映射表的使用。如前所述,在任何情况下,逻辑池化存储器控制器450都可以被配置为维护映射表,并且确保已知模式页面的适当追踪,以允许用于池化和向VM分配的存储器的超额订阅。此外,尽管映射表482是相对于页面描述的,但存储器的其他分组(包括存储器块)也可以被用于映射表482。此外,映射表482的功能可以使用与处理器和控制器相关联的寄存器或者其他类似的硬件结构来实现。此外,尽管映射表482被描述为存储在物理池化存储器412中,但映射表的至少一部分可以存储在与逻辑池化存储器控制器450相关联的缓存中,以加快地址转换过程。
图5根据一个示例示出了使用转换后备缓冲区(TLB)530的映射表的实现的图。如前面关于图4所解释的,映射表482可以由逻辑池化存储器控制器450使用,以将从管理程序(或者另一个源)接收的逻辑地址转换为与物理池化存储器412相关联的物理地址。在这个示例中,逻辑池化存储器控制器520可以包括作为转换后备缓冲器(TLB)530实现的缓存。TLB 530可以实现为内容可寻址存储器(CAM)、全相联高速缓冲存储器、双向集合相联高速缓冲存储器、直接映射高速缓冲存储器或者其他类型的合适的高速缓冲存储器。TLB 530可以被实现以完成用于逻辑池化地址到物理池化存储器地址的转换,以及用于检查页面的已知模式页面状态。针对每个地址转换请求,逻辑池化存储器控制器520可以首先检查TLB530以确定地址转换是否已经缓存。如果发现地址转换缓存在TLB 530中,则可能产生TLB命中(HIT)信号。此外,对应于导致TLB命中信号的页面号的物理地址可以向物理池化存储器560提供,以允许用于对存储在物理地址处的数据或者指令的访问。或者,如果地址转换没有缓存,可能会生成TLB丢失(MISS)信号。这反过来可能导致遍历映射表562,除非已知模式页面标志被设置为逻辑真值。如在图5中所示,物理存储器空闲页面列表564也可以被存储在物理池化存储器560中。
图6示出了包括与被配置为允许用于存储器的超额订阅的逻辑池化存储器系统670耦合的多个主机服务器的系统600的框图。系统600可以包括耦合到逻辑池化存储器系统670的主机服务器610、主机服务器620和主机服务器630。如前所述,每个主机服务器可以托管多个计算实体(例如,VM),这些实体反过来可能是由系统600的不同租户购买或者支付的。每个服务器可以包括本地存储器(例如,关于图3的主机服务器310描述的存储器模块),并且可以访问逻辑池化存储器,该逻辑池化存储器可以是被包括在逻辑池化存储器系统670中的逻辑池化存储器的一部分。如前所述,结构管理器(基于CXL规范实现)可以向主机610、620和630中的每个主机暴露与逻辑池化存储器系统670相关联的逻辑池化存储器的子集。逻辑池化存储器系统670可以用和之前描述的方式类似的方式实现。
已经被调度的或者经由主机服务器610向租户变得可用的计算实体中的每个计算实体都可以被分配本地存储器612的一部分和池化存储器614的一部分。如前所述的向每个计算实体的分配可以基于向由逻辑池化存储器系统670管理的逻辑池化存储器的超额订阅。在这个示例中,由主机服务器610托管的每个计算实体可以经由链接616(或者链接的集合)耦合到逻辑池化存储器系统670。已经被调度的或者经由主机服务器610对租户变得可用的计算实体中的每个计算实体都可以被分配本地存储器622的一部分和池化存储器624的一部分。如前所述,向由主机服务器620托管的每个计算实体的分配可以基于对由逻辑池化存储器系统670管理的逻辑池化存储器的超额订阅。在这个示例中,由主机服务器620托管的每个计算实体可以经由链接626(或者链接的集合)耦合到逻辑池化存储器系统670。已经被调度的或者经由主机服务器610对租户变得可用的计算实体中的每个计算实体可以被分配本地存储器632的一部分和池化存储器634的一部分。如前所述的向由主机服务器630托管的每个计算实体的分配可以基于向由逻辑池化存储器系统670管理的逻辑池化存储器的超额订阅。在这个示例中,由主机服务器630托管的每个计算实体可以经由链接636(或者链接的集合)耦合到逻辑池化存储器系统670。作为示例,与主机服务器610、620和630中的每个主机服务器的CPU中的任意CPU相关联的加载和存储指令可以经由CXL.mem协议处理。或者,允许将CPU加载/存储指令转换成与被包含在逻辑池化存储器系统670中的存储器模块相关联的读取/写入事务的任何其他协议也可以被使用。尽管图6示出了系统600作为包括以某种方式排列的某些组件,但系统600可以包括以不同的方式排列的附加或者更少的组件。
图7示出了用于实现用于允许向计算实体分配的池化存储器的超额订阅的方法的至少一些的系统700的框图。系统700可以包括处理器702、I/O组件704、存储器706、呈现组件708、传感器710、数据库712、联网接口714和I/O端口716,它们可以经由总线720互连。处理器702可以执行存储在存储器706中的指令。I/O组件704可以包括诸如键盘、鼠标、语音识别处理器或者触摸屏的组件。存储器706可以是非易失性存储或者易失性存储(例如闪存、DRAM、SRAM或者其他类型的存储器)的任意组合。呈现组件708可以包括显示器、全息设备或者其他呈现设备。显示可以是任何类型的显示器,例如LCD、LED或者其他类型的显示器。传感器710可以包括被配置为检测和/或接收信息(例如,收集的数据)的遥测或者其他类型的传感器。传感器710可以包括被配置为检测和/或接收信息(例如,由在数据中心中的主机服务器执行的各种计算实体的存储器使用)的遥测或者其他类型的传感器。传感器710可以包括被配置为感知与CPU、存储器或者其他存储组件、FPGA、主板、底板管理控制器等相关联的条件的传感器。传感器710也可以包括被配置为感知与机架、机箱、风扇、电源供应单元(PSU)等相关联的条件的传感器。传感器710也可以包括被配置为感知与联网接口控制器(NIC)、机架顶部(TOR)交换机、机架中间(MOR)交换机、路由器、电源分配单元(PDU)、机架级不间断电源(UPS)系统等相关联的条件的传感器。
仍然参考图7,数据库712可以被用于存储收集或者记录的数据中的任何数据,并且被用作为需要的用于本文描述的方法的性能。数据库712可以被实现为分布式数据库的集合或者被实现为单个数据库。联网接口714可以包括通信接口,例如以太网、蜂窝无线电、蓝牙无线电、UWB无线电或者其他类型的无线或者有线的通信接口。I/O端口716可以包括以太网端口、光纤端口、无线端口或者其他通信或者诊断端口。尽管图7示出了系统700作为包括以某种方式排列和耦合的某些数目的组件,但它可以包括不同地排列和耦合的更少或者附加的组件。此外,与系统700相关联的功能可以根据需要分发。
图8示出了用于和计算实体使用的超额订阅物理存储器的示例方法的流程图800。在一个示例中,与这个方法相关联的步骤可以由前面描述的系统的各种组件执行。步骤810可以包括向计算实体分配与系统相关联的存储器的一部分,其中存储器的一部分包括与系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。逻辑池化存储器被映射到第一类型的第二物理存储器,并且被指示为可用于向多个计算实体分配的逻辑池化存储器的数量大于第一类型的第二物理存储器的数量。如前关于图2所述,虚拟机(计算实体的一种类型)可以被分配19GB的物理存储器(例如,存储器模块,包括针对CPU被配置为本地存储器的DRAM)和13GB的逻辑池化存储器,其可以是图2的逻辑池化存储器260的一部分,该逻辑池化存储器260包括图2的物理池化存储器262,也可以是包括DRAM的存储器模块。如本文所用的阶段“第一类型”中使用的术语“类型”指的是该存储器是否是可缓存存储器类型。如前所述,术语“可缓存存储器”包括任何类型的存储器,其中经由与该存储器相关联的读取操作获取的数据可能被复制到存储器缓存,这样下次相同的数据被访问时,它可能从存储器缓存中获取数据。存储器可以是动态随机访问存储器(DRAM)、闪存、静态随机访问存储器(SRAM)、相变存储器、磁性随机访问存储器或者可能允许存储器充当可缓存存储器的任何其他类型的存储器技术。总之,第一类型的第一物理存储器和第一类型的第二物理存储器需要是可缓存类型,但它们可以在其他方面是不同的类型(例如,DRAM与相变存储器比较或者SRAM与DRAM比较)。
步骤820可以包括向与逻辑池化存储器相关联的逻辑池化存储器控制器指示与初始被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的所有页面都是已知模式页面。作为示例,管理程序(例如,图3的管理程序320)可以向逻辑池化存储器控制器(例如,图4中的逻辑池化存储器控制器450)指示初始被分配的页面的状态作为已知模式页面(例如,已知模式页面414)。
步骤830可以包括逻辑池化存储器控制器,该控制器追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者。在这个示例中,作为这个步骤的一部分,如前面关于图4和5的解释,逻辑池化存储器控制器(例如,图4的逻辑池化存储器控制器450)可以使用映射表(例如,图4的映射表482)来追踪页面的状态(已知模式页面,或者不是已知模式页面)以及在物理存储器中的页面号与物理地址之间的关系(例如,图4的物理池化存储器412)。如前所解释的,为了加速对逻辑池化存储器的访问,映射表的至少一部分可以被实现为转换后备缓冲区。此外,映射表(或者类似的结构)可以使用寄存器实现。
步骤840可以包括响应于由计算实体发起的写入操作,逻辑池化存储器控制器允许向第一类型的第二物理存储器中的任何可用空间写入数据,该可用空间不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。如前所解释的,当计算实体(例如,VM)已经使用完被分配给它的所有本地物理存储器,并且开始向逻辑存储器地址空间写入未知模式时,管理程序可以从在对应于物理存储器(例如,图4的物理池化存储器412)的逻辑地址空间(由逻辑池化存储器控制器450暴露的)内开始向计算实体分配页面。逻辑池化存储器控制器可以访问空闲页面列表(例如,图4的物理存储器空闲页面列表484),以访问空闲的以及没有由映射表映射的页面。此外,如前所解释的,计算实体可以被分配比之前被分配给计算实体(例如,在关于图2描述的示例中的13GB)的由逻辑池化存储器控制器管理的更多物理存储器。这个方法可以由该计算实体允许用于在系统中安装的存储器的超额订阅,由于更多的计算实体可能由系统支持,而不必须部署附加的物理存储器(例如,DRAM)。
图9示出了用于和计算实体使用的超额订阅物理存储器的另一种示例方法的流程图900。在一个示例中,与这个方法相关联的步骤可以由前面描述的系统的各种组件执行。步骤910可以包括向计算实体分配与系统相关联的存储器的一部分,其中存储器的一部分包括与系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。逻辑池化存储器可以映射到第一类型的第二物理池化存储器,并且被指示为可用于向多个计算实体分配的逻辑池化存储器的数量可以大于第一类型的第二物理池化存储器的数量。如前关于图2的描述,是一个类型的计算实体的虚拟机可以被分配物理存储器(例如,存储器模块,包括针对CPU被配置为本地存储器的DRAM)的19GB和逻辑池化存储器的13GB,它可以是包括图2的物理池化存储器262的图2的逻辑池化存储器260的一部分,也可以是包括DRAM的存储器模块。作为示例,逻辑池化存储器可以是作为图6的逻辑池化存储器系统670的一部分被包括的逻辑池化存储器,并且物理池化存储器可以对应于作为图6的逻辑池化存储器系统670的一部分包括的物理存储器(例如,DRAM)。
步骤920可以包括经由在多个计算实体中的每个计算实体和作为第一类型的第二物理池化存储器的一部分被包括的物理存储器设备中的每个物理存储器设备之间的相应链接,将指向逻辑池化存储器的任何加载或者存储指令转换到用于完成的存储器事务。在一个示例中,如前所解释的基于计算表达链接(CXL)规范使用结构管理器实现的结构管理器(例如,图3的结构管理器350或者图6的结构管理器650)可以将加载和存储指令转换到与CXL规范相关联的事务。向计算实体暴露的逻辑地址空间可以是由与CXL总线/链接相关联的控制器暴露的地址范围的至少一个子集。
步骤930可以包括向与逻辑池化存储器相关联的逻辑池化存储器控制器指示与初始被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的所有页面都是已知模式页面。作为示例,管理程序(例如,图3的管理程序320或者与图6的任何主机服务器610、620和630相关联的管理程序)可以向逻辑池化存储器控制器(例如,图4的逻辑池化存储器控制器450)指示初始被分配的页面的状态作为已知模式页面(例如,已知模式页面414)。管理程序的组合也可以相互协调,以管理向计算实体的由具有多个管理共享的逻辑池化存储器的管理程序的计算系统或通信系统支持的管理器分配。
步骤940可以包括逻辑池化存储器控制器,该逻辑池化存储器控制器追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者。在这个示例中,作为这个步骤的一部分,如前面关于图4-6的解释,逻辑池化存储器控制器(例如,图4的逻辑池化存储器控制器450)可以使用映射表(例如,图4的映射表482)来追踪页面的状态(已知模式页面,或者非已知模式页面)以及物理存储器中的页面号与物理地址之间的关系(例如,图4的物理池化存储器412)。如前所解释的,为了加速对逻辑池化存储器的访问,映射表的至少一部分可以被实现为转换后备缓冲区。此外,映射表(或者类似的结构)可以使用寄存器实现。
步骤950可以包括响应于由计算实体发起的用以写入除已知模式以外的任何数据的写入操作,逻辑池化存储器控制器允许向第一类型的第二物理存储器中的任何可用空间写入数据,该可用空间不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。如前所解释的,当计算实体(例如,VM)已经使用完被分配给它的所有本地物理存储器,并且开始向逻辑存储器地址空间写入未知模式时,管理程序可以从对应于物理存储器(例如,图4的物理池化存储器412)的逻辑地址空间(由逻辑池化存储器控制器450暴露的)内开始向计算实体分配页面。逻辑池化存储器控制器可以访问空闲页面列表(例如,图4的物理存储器空闲页面列表484),以访问空闲的以及没有由映射表映射的页面。此外,如前所解释的,计算实体可以被分配比之前被分配给计算实体(例如,在关于图2描述的示例中的13GB)的由逻辑池化存储器控制器管理的更多物理存储器。这个方法可以由该计算实体允许用于在系统中安装的存储器的超额订阅,由于更多的计算实体可能由系统支持,而不必须部署附加的物理存储器(例如,DRAM)。
总之,本公开涉及包括向计算实体分配与系统相关联的存储器的一部分的方法,在其中该存储器的一部分包括用于和与该系统相关联的多个计算实体使用的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。逻辑池化存储器可以映射到第一类型的第二物理存储器,并且其中被指示为可用于向多个计算实体分配的逻辑池化存储器的数量可以大于第一类型的第二物理存储器的数量。该方法还可以包括向与该逻辑池化存储器相关联的逻辑池化存储器控制器指示与初始被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的所有页面是已知模式页面。该方法还可以包括逻辑池化存储器控制器,该逻辑池化存储器控制器追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者。该方法还可以包括响应于由计算实体发起的写入操作,逻辑池化存储器控制器允许向第一类型的第二物理存储器中的任何可用空间写入数据,不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。
在这种方法中,与系统相关联的逻辑池化存储器的数量可以等于与对应于没有由任何类型的物理存储器支持的已知模式页面的存储器的数量组合的第一类型的第二物理存储器的数量。追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态以及逻辑存储器地址与物理存储器地址之间的关系可以包括维护映射表。在一个示例中,映射表可以使用转换后备缓冲区来实现。
该方法还可以包括基于由计算实体使用的第一类型的第一物理存储器的预测使用来分配第一类型的第一物理存储器的一部分。该方法还可以包括基于与被分配给计算实体的第一类型的第一物理存储器的使用相关联的使用模式,动态地改变被分配给计算实体的第一类型的第一物理存储器的一部分的数量。
该方法还可以包括经由软件机制暴露被分配给计算实体的逻辑池化存储器的一部分,以允许计算实体区分被分配给计算实体的逻辑池化存储器的一部分和被分配给计算实体的第一类型的第一物理存储器的一部分。逻辑池化存储器可以被耦合到用于执行多个计算实体中的任何计算实体的处理器,多个计算实体经由由结构管理器管理的相应链接已经被分配与系统相关联的逻辑池化存储器的至少一部分。
在另一个示例中,本公开涉及包括用于和多个计算实体使用的存储器的系统,存储器的一部分包括与系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合,其中逻辑池化存储器被映射到第一类型的第二物理存储器,并且其中被指示为可用于向多个计算实体分配的逻辑池化存储器的数量大于第一类型的第二物理存储器的数量;以及逻辑池化存储器控制器,被耦合到与系统相关联的逻辑池化存储器,逻辑池化存储器控制器被配置为:(1)追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何所分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,以及(2)响应于由计算实体发起的、用以写入除已知模式之外的任何数据的写入操作,允许写入操作向第一类型的第二物理存储器中的任何可用空间写入数据,可用空间不超过与先前被分配给计算实体的逻辑池化存储器的一部分相对应的物理存储器的范围。
作为系统的一部分,与系统相关联的逻辑池化存储器的数量可以等于与对应于由没有任何类型的物理存储器支持的已知模式页面的存储器的数量组合的第一类型的第二物理存储器的数量。逻辑池化存储器控制器还可以被配置为维护映射表以追踪向多个计算实体中的任意计算实体分配的逻辑池化存储器的页面是否是已知模式页面的状态,以及与任何向多个计算实体中的任意计算实体分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系。映射表可以使用转换后备缓冲区来实现。
作为系统的一部分,在一个示例中,调度器可以被配置为基于由计算实体的第一类型的第一物理存储器的预测使用来分配第一类型的第一物理存储器的一部分。调度器也可以被配置为基于与向计算实体分配的第一类型的第一物理存储器的使用相关联的使用模式,动态地改变向计算实体分配的第一类型的第一物理存储器的一部分的数量。逻辑池化存储器控制器还可以被配置为向多个计算实体中的每个计算实体指示与初始向任意多个计算实体分配的逻辑池化存储器相关联的所有页面是已知模式页面。
在另一个示例中,本公开涉及包括可被配置为执行多个计算实体中的一个或多个计算实体的多个主机服务器。该系统还可以包括存储器,在其中存储器的一部分包括在多个主机服务器当中共享的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合。该逻辑池化存储器可以被映射到第一类型的第二物理存储器,并且被指示为可用于向多个计算实体分配的逻辑池化存储器的数量可以大于第一类型的第二物理存储器的数量。该系统还可以包括被耦合到与系统相关联的逻辑池化存储器的逻辑池化存储器控制器,该控制器被配置为:(1)追踪向多个计算实体中的任何计算实体分配的逻辑池化存储器的页面是否是已知模式页面的状态,以及在与任何向多个计算实体中的任何计算实体分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系,以及(2)响应于由计算实体发起、由与多个主机服务器中的任何主机服务器相关联的处理器执行的写入操作以写入任何数据而不是已知模式,逻辑池化存储器控制器允许写入操作在第一类型的第二物理存储器中向任何可用空间写入数据,仅限对应于先前向计算实体分配的逻辑池化存储器的一部分的物理存储器的范围。
作为系统的一部分,与系统相关联的逻辑池化存储器的数量等于与对应于没有由任何类型的物理存储器支持的已知模式页面的存储器的数量相组合的第一类型的第二物理存储器的数量。逻辑池化存储器控制器还被配置为:维护映射表,以追踪被分配给多个计算实体中的任何计算实体的逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给多个计算实体中的任何计算实体的任何所分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,并且其中映射表使用转换后备缓冲区而被实现。
作为系统的一部分,在一个示例中,调度器被配置为基于由计算实体使用的第一类型的第一物理存储器的预测使用,向计算实体分配第一类型的第一物理存储器的一部分。调度器还可以被配置为基于与被分配给计算实体的第一类型的第一物理存储器的使用相关联的使用模式,动态地改变被分配各级计算实体的第一类型的第一物理存储器的一部分的数量。逻辑池化存储器控制器还被配置为:向多个计算实体中的每个计算实体指示与初始被分配给多个计算实体中的任何计算实体的逻辑池化存储器相关联的所有页面是已知模式页面。
需要理解的是,本文描述的方法、模块和组件只是示例。备选地或附加地,本文描述的功能可能至少部分地由一个或多个硬件逻辑组件执行。例如,并且没有限制的是,说明性类型的硬件逻辑器件可能包括现场可编程门阵列(FPGA)、应用特定集成电路(ASIC)、应用特定标准产品(ASSP)、系统在芯片上的系统(SoC)、复杂可编程逻辑设备(CPLD)等使用。在抽象但仍然明确的意义上,以实现相同功能的组件的任何安排都有效地“相关联”,这样实现所需的功能。因此,以实现特定功能的本文组合的任何两个组件可能被视为彼此“相关联”,这样实现所需的功能,而不管架构或者中间组件。同样地,任何两个如此相关联的组件也可能被视为互相“可操作连接的”或者“耦合的”,以实现所需的功能。仅仅因为组件(可以是装置、结构、系统或者功能的任何其他实现)在本文被描述为被耦合到另一个组件,并不意味着这些组件一定是分离的组件。作为示例,被描述为耦合到另一个组件B的组件A可以是组件B的子组件,组件B可以是组件A的子组件,或者组件A和组件B可以是另一个组件C的组合的子组件。
与在本公开中描述的一些示例相关联的功能也可能包括存储在非暂态介质中的指令。如本文所用的术语“非暂态介质”指的是存储使机器以特定方式运行的数据和/或者指令的任何介质。典型的非暂态介质包括非易失性介质和/或易失性介质。例如,非易失性介质包括硬盘、固态驱动器、磁盘或者磁带、光盘或者磁带、闪存、EPROM、NVRAM、PRAM或者其他这种介质,或者这种介质的网络版本。例如,易失性介质包括例如DRAM、SRAM的动态存储器、高速缓存,或者其他这种媒体。非暂态介质与传输介质不同,但可能与传输介质组合使用。传输介质用于向机器或者从机器传输数据和/或者指令。典型的传输介质包括同轴电缆、光纤电缆、铜线和无线媒体,例如无线电波。
此外,在本领域中的技术人员将意识到在上述操作的功能之间的界限仅仅是说明性的。多个操作的功能可以组合成单个操作,和/或单个操作的功能可以分布在其他操作中。此外,可选实施例可以包括特定操作的多个实例,并且操作的顺序可以在各种其他实施例中被更改。
虽然本公开提供了具体的示例,但可以在不偏离在以下权利要求中阐明的本公开的范围的情况下进行各种修改和变更。因此,规范和数字应被视为说明性的而不是限制性的意义,并且所有这种修改都旨在于被包括在本公开的范围之内。关于特定的示例的任何益处、优势,或者对于本文描述的问题的解决方案不旨在于被解释为任何或者所有的权利要求的关键的、必要的,或者基本的特征或者要素。
此外,术语“一”或者“一个”,如本文所用,被定义为一个或多个。此外,在权利要求中使用的诸如“至少一个”和“一个或多个”的介绍性短语,不应该被理解以暗示通过不定条款“一”或者“一个”引入的另一个权利要求要素限制包含这种引入的权利要求要素的任何特定权利要求到只包含一个这种要素的发明,即使当相同的权利要求包括介绍性短语“一个或多个”或者“至少一个”,以及诸如“一”或者“一个”的不定条款时。确定条款的使用也是如此。
除非另有说明,诸如“第一”和“第二”的术语被用于任意区分这种术语描述的要素。因此,这些术语不一定旨在于指示这种要素的时间或者其他优先次序。
Claims (15)
1.一种方法,包括:
向计算实体分配与系统相关联的存储器的一部分,其中所述存储器的所述一部分包括用于和与所述系统相关联的多个计算实体使用的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合,其中所述逻辑池化存储器被映射到所述第一类型的第二物理存储器,并且其中被指示为可用于向所述多个计算实体分配的所述逻辑池化存储器的数量大于所述第一类型的所述第二物理存储器的数量;
向与所述逻辑池化存储器相关联的逻辑池化存储器控制器指示与初始被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器相关联的所有页面是已知模式页面;
所述逻辑池化存储器控制器追踪被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给所述多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者;以及
响应于由所述计算实体发起的写入操作,所述逻辑池化存储器控制器允许向所述第一类型的所述第二物理存储器中的任何可用空间写入数据,所述可用空间不超过与先前被分配给所述计算实体的所述逻辑池化存储器的所述一部分相对应的物理存储器的范围。
2.根据权利要求1所述的方法,其中与所述系统相关联的所述逻辑池化存储器的数量等于与对应于没有由任何类型的物理存储器支持的已知模式页面的存储器的数量相组合的所述第一类型的所述第二物理存储器的数量。
3.根据权利要求1所述的方法,其中追踪被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器的所述页面是否是已知模式页面的所述状态,以及所述逻辑存储器地址和所述物理存储器地址之间的关系两者包括:维护映射表。
4.根据权利要求3所述的方法,其中所述映射表使用转换后备缓冲区而被实现。
5.根据权利要求1所述的方法,还包括:基于由所述计算实体对所述第一类型的所述第一物理存储器的预测使用来分配所述第一类型的所述第一物理存储器的所述一部分。
6.根据权利要求1所述的方法,还包括:基于与被分配给所述计算实体的所述第一类型的所述第一物理存储器的使用相关联的使用模式,动态地改变被分配给所述计算实体的所述第一类型的所述第一物理存储器的所述一部分的数量。
7.根据权利要求1所述的方法,还包括:经由软件机制暴露被分配给所述计算实体的所述逻辑池化存储器的所述一部分,以允许所述计算实体区分被分配给所述计算实体的所述逻辑池化存储器的所述一部分和被分配给所述计算实体的所述第一类型的所述第一物理存储器的所述一部分。
8.根据权利要求1所述的方法,其中所述逻辑池化存储器被耦合到用于执行所述多个计算实体中的任何计算实体的处理器,所述多个计算实体经由由结构管理器管理的相应链接已经被分配与所述系统相关联的所述逻辑池化存储器的至少一部分。
9.一种系统,包括:
存储器,其中所述存储器的一部分包括与所述系统相关联的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合,其中所述逻辑池化存储器被映射到所述第一类型的第二物理存储器,并且其中被指示为可用于向多个计算实体分配的所述逻辑池化存储器的数量大于所述第一类型的所述第二物理存储器的数量;以及
逻辑池化存储器控制器,被耦合到与所述系统相关联的所述逻辑池化存储器,所述逻辑池化存储器控制器被配置为:(1)追踪被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给所述多个计算实体中的任何计算实体的任何所分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,以及(2)响应于由计算实体发起的、用以写入除已知模式之外的任何数据的写入操作,允许所述写入操作向所述第一类型的所述第二物理存储器中的任何可用空间写入所述数据,所述可用空间不超过与先前被分配给所述计算实体的所述逻辑池化存储器的一部分相对应的物理存储器的范围。
10.根据权利要求9所述的系统,其中与所述系统相关联的所述逻辑池化存储器的数量等于与对应于没有由任何类型的物理存储器支持的已知模式页面的存储器的数量相组合的所述第一类型的所述第二物理存储器的数量。
11.根据权利要求9所述的系统,其中所述逻辑池化存储器控制器还被配置为:维护映射表,以追踪被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器的所述页面是否是所述已知模式页面的所述状态,以及与被分配给所述多个计算实体中的任何计算实体的任何逻辑池化存储器相关联的所述逻辑存储器地址和所述物理存储器地址之间的所述关系两者,并且其中所述映射表使用转换后备缓冲区而被实现。
12.根据权利要求9所述的系统,还包括:调度器,被配置为基于由所述计算实体对所述第一类型的所述第一物理存储器的预测使用,向所述计算实体分配所述第一类型的所述第一物理存储器的所述一部分。
13.根据权利要求12所述的系统,其中所述调度器还被配置为:基于与被分配给所述计算实体的所述第一类型的所述第一物理存储器的使用相关联的使用模式,动态地改变被分配给所述计算实体的所述第一类型的所述第一物理存储器的所述一部分的数量。
14.根据权利要求9所述的系统,其中所述逻辑池化存储器控制器还被配置为:向所述多个计算实体中的每个计算实体指示与初始被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器相关联的所有页面是已知模式页面。
15.一种系统,包括:
多个主机服务器,可配置为执行多个计算实体中的一个或多个计算实体;
存储器,其中所述存储器的一部分包括在所述多个主机服务器中间被共享的第一类型的第一物理存储器的一部分和逻辑池化存储器的一部分的组合,其中所述逻辑池化存储器被映射到所述第一类型的第二物理存储器,并且其中被指示为可用于向所述多个计算实体分配的所述逻辑池化存储器的数量大于所述第一类型的所述第二物理存储器的数量;以及
逻辑池化存储器控制器,被耦合到与所述系统相关联的所述逻辑池化存储器,所述逻辑池化存储器控制器被配置为:(1)追踪被分配给所述多个计算实体中的任何计算实体的所述逻辑池化存储器的页面是否是已知模式页面的状态,以及与被分配给所述多个计算实体中的任何计算实体的任何所分配的逻辑池化存储器相关联的逻辑存储器地址和物理存储器地址之间的关系两者,以及(2)响应于由计算实体发起的、由与所述多个主机服务器中的任何主机服务器相关联的处理器执行的、用以写入除已知模式之外的任何数据的写入操作,允许所述写入操作向所述第一类型的所述第二物理存储器中的任何可用空间写入所述数据,所述可用空间不超过与先前被分配给所述计算实体的所述逻辑池化存储器的一部分相对应的物理存储器的范围。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/367,061 | 2021-07-02 | ||
US17/367,061 US11455239B1 (en) | 2021-07-02 | 2021-07-02 | Memory reduction in a system by oversubscribing physical memory shared by compute entities supported by the system |
PCT/US2022/030990 WO2023278077A1 (en) | 2021-07-02 | 2022-05-26 | Memory reduction in a system by oversubscribing physical memory shared by compute entities supported by the system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117616402A true CN117616402A (zh) | 2024-02-27 |
Family
ID=82156736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280046551.4A Pending CN117616402A (zh) | 2021-07-02 | 2022-05-26 | 通过超额订阅由系统支持的计算实体共享的物理存储器的系统中的存储器减少 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11455239B1 (zh) |
EP (1) | EP4363983A1 (zh) |
JP (1) | JP2024524135A (zh) |
KR (1) | KR20240029764A (zh) |
CN (1) | CN117616402A (zh) |
TW (1) | TW202303401A (zh) |
WO (1) | WO2023278077A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11994997B2 (en) * | 2020-12-23 | 2024-05-28 | Intel Corporation | Memory controller to manage quality of service enforcement and migration between local and pooled memory |
US20240187316A1 (en) * | 2022-12-05 | 2024-06-06 | Microsoft Technology Licensing, Llc | Using virtual non-uniform memory access nodes to funnel virtual machine memory accesses |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978892A (en) * | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
US7702843B1 (en) * | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US8949295B2 (en) * | 2006-09-21 | 2015-02-03 | Vmware, Inc. | Cooperative memory resource management via application-level balloon |
US8583875B1 (en) * | 2010-07-13 | 2013-11-12 | Vmware, Inc. | Efficient readable ballooning of guest memory by backing balloon pages with a shared page |
US10761876B2 (en) * | 2018-11-21 | 2020-09-01 | Microsoft Technology Licensing, Llc | Faster access of virtual machine memory backed by a host computing device's virtual memory |
US11188370B2 (en) * | 2019-01-24 | 2021-11-30 | Vmware, Inc. | Memory scheduler using guest-originated statistics |
US20200371692A1 (en) * | 2019-05-22 | 2020-11-26 | Microsoft Technology Licensing, Llc | Memory disaggregation for compute nodes |
US11237868B2 (en) | 2019-10-08 | 2022-02-01 | Microsoft Technology Licensing, Llc | Machine learning-based power capping and virtual machine placement in cloud platforms |
US11567803B2 (en) * | 2019-11-04 | 2023-01-31 | Rambus Inc. | Inter-server memory pooling |
US11789878B2 (en) | 2019-12-19 | 2023-10-17 | Intel Corporation | Adaptive fabric allocation for local and remote emerging memories based prediction schemes |
US20210112132A1 (en) | 2020-12-21 | 2021-04-15 | Nitish Paliwal | System, apparatus and method for handling multi-protocol traffic in data link layer circuitry |
-
2021
- 2021-07-02 US US17/367,061 patent/US11455239B1/en active Active
-
2022
- 2022-05-26 EP EP22732791.3A patent/EP4363983A1/en active Pending
- 2022-05-26 JP JP2023577866A patent/JP2024524135A/ja active Pending
- 2022-05-26 WO PCT/US2022/030990 patent/WO2023278077A1/en active Application Filing
- 2022-05-26 KR KR1020247001606A patent/KR20240029764A/ko unknown
- 2022-05-26 CN CN202280046551.4A patent/CN117616402A/zh active Pending
- 2022-06-17 TW TW111122584A patent/TW202303401A/zh unknown
- 2022-08-04 US US17/881,257 patent/US11656981B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP4363983A1 (en) | 2024-05-08 |
WO2023278077A1 (en) | 2023-01-05 |
US11455239B1 (en) | 2022-09-27 |
US20230004488A1 (en) | 2023-01-05 |
JP2024524135A (ja) | 2024-07-05 |
KR20240029764A (ko) | 2024-03-06 |
TW202303401A (zh) | 2023-01-16 |
US11656981B2 (en) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163452B2 (en) | Workload based device access | |
US10248346B2 (en) | Modular architecture for extreme-scale distributed processing applications | |
Lee et al. | Smartsage: training large-scale graph neural networks using in-storage processing architectures | |
US11656981B2 (en) | Memory reduction in a system by oversubscribing physical memory shared by compute entities supported by the system | |
JP7539202B2 (ja) | コンピューティング環境におけるアクセラレータとストレージとの間のダイレクト・データ・アクセス | |
US11068418B2 (en) | Determining memory access categories for tasks coded in a computer program | |
US11010084B2 (en) | Virtual machine migration system | |
US10204060B2 (en) | Determining memory access categories to use to assign tasks to processor cores to execute | |
US11836087B2 (en) | Per-process re-configurable caches | |
WO2023200502A1 (en) | Direct swap caching with zero line optimizations | |
US10915445B2 (en) | Coherent caching of data for high bandwidth scaling | |
US11860783B2 (en) | Direct swap caching with noisy neighbor mitigation and dynamic address range assignment | |
US11836361B2 (en) | Implementing compiler-based memory safety for a graphic processing unit | |
US20230061154A1 (en) | Implementing hardware-based memory safety for a graphic processing unit | |
US11003378B2 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US20230229498A1 (en) | Systems and methods with integrated memory pooling and direct swap caching | |
WO2023140911A1 (en) | Systems and methods with integrated memory pooling and direct swap caching | |
Kim et al. | e-CLAS: Effective GPUDirect I/O Classification Scheme | |
WO2023172319A1 (en) | Direct swap caching with noisy neighbor mitigation and dynamic address range assignment | |
Obando | Near-Memory Address Translation | |
Picorel Obando | Near-Memory Address Translation | |
CN112445713A (zh) | 用于对内存有效分区的技术 |
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 |