CN112513821A - 用于scm应用的多实例2lm架构 - Google Patents
用于scm应用的多实例2lm架构 Download PDFInfo
- Publication number
- CN112513821A CN112513821A CN201980051316.4A CN201980051316A CN112513821A CN 112513821 A CN112513821 A CN 112513821A CN 201980051316 A CN201980051316 A CN 201980051316A CN 112513821 A CN112513821 A CN 112513821A
- Authority
- CN
- China
- Prior art keywords
- memory
- instance
- priority level
- size
- created
- 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 claims abstract description 541
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000003860 storage Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 8
- 208000031339 Split cord malformation Diseases 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000004645 scanning capacitance microscopy Methods 0.000 description 7
- 238000013068 supply chain management Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/109—Address translation 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/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
- 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
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0283—Price estimation or determination
- G06Q30/0284—Time or distance, e.g. usage of parking meters or taximeters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Computer Interaction (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Finance (AREA)
- Economics (AREA)
- Marketing (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Data Mining & Analysis (AREA)
- Game Theory and Decision Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
提供了一种多实例二层内存(2‑Level‑Memory,2LM)架构,用于管理具有不同内存使用优先级的处理实例对具有不同性能和成本级别的内存的访问。所述2LM架构包括虚拟内存管理模块,所述虚拟内存管理模块根据指定的内存使用优先级等级和指定的虚拟内存大小创建内存实例,并为所述创建的内存实例的每个使用优先级等级定义策略,从而管理各个处理实例的访问。所述虚拟内存管理模块响应处理实例的虚拟内存请求,确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小;如果不能满足,则选择能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的另一内存实例,并以所述另一内存实例交换出所述第一内存实例。
Description
相关申请案交叉申请
本申请要求2018年8月1日提交的申请号为62/713,329、发明名称为“用于SCM应用的多实例2LM架构(Multi-instance 2LM Architecture for SCM Applications)”的美国临时申请的优先权,其全部内容通过引用并入本文。
技术领域
本文的公开内容涉及一种用于包括存储级内存(storage-class memory,SCM)的内存系统的多实例二层内存(two-level memory,2LM)架构,更具体地,涉及一种多实例2LM架构,该多实例2LM架构实现根据服务协议性能和成本优先的处理实例所请求的优先内存实例。
背景技术
存储级内存(storage-class memory,SCM)是一种内存类型,它弥补了闪存与动态随机存取内存(dynamic random-access memory,DRAM)之间的性能和成本差距。SCM是一种新型的非易失性内存,它的运行速度比传统的3D NAND闪存快得多,接近动态RAM的速度。NAND内存在页级寻址,而SCM还可以在字节级寻址。SCM的速度和耐久性是NAND的上千倍,但它的成本比NAND更高。然而,与DRAM(几十纳秒的延迟)相比,SCM的固有性能较低(数百纳秒的更高延迟),因此SCM不适合用作通用计算中的主内存。因此,SCM不太适用于高优先级实例和应用,但与闪存相比又是相对理想的。为了在内存系统中使用SCM,对于高优先级实例和应用,需要解决该SCM性能问题,同时尽可能使用SCM来保持基于云的内存系统的成本和资源效率。
现有技术通常侧重于基于单实例的二层内存(two-level memory,2LM)系统,并使用基于硬件或软件的方法来权衡单实例对相应内存类型的访问。这类系统不适合与传统的基于云的内存系统一起使用,传统的基于云的内存系统允许用户根据对系统资源的优先级访问,按每个实例的不同定价级别按需购买云服务。特别地,这类系统不是为通常在云系统中使用的类型的多实例虚拟机系统的性能优先级和成本权衡而设计的。
发明内容
现在描述了各种示例从而以简化形式引入一些概念,在具体实施方式中会进一步描述这些概念。发明内容并非旨在确定请求保护的主题的关键或必要特征,也并非旨在用于限制请求保护的主题的范围。
提供了一种软件定义的二层内存(two-level memory,2LM)架构,允许云操作系统管理不同实例或虚拟机(virtual machine,VM)之间以及实例或虚拟机内的动态随机存取内存(dynamic random-access memory,DRAM)和存储级内存(storage-class memory,SCM)。在一个或多个VM与云操作系统或虚拟机监视器之间提供虚拟内存管理模块,通过创建内存实例、为内存实例定义策略以及在每个实例内放置和移动数据来管理如DRAM和SCM等二层内存。不同的VM实例可以根据其成本/性能优先级等级访问内存实例。X实例内存交换特征包括目标/源地址选择、交换实例创建和内存交换执行特征,以根据需要针对每个VM实例交换DRAM和SCM。如果所要创建的实例的对应策略不能满足请求的虚拟内存大小,或者在VM恢复期间,根据对应的优先级执行X实例内存交换。目标地址选择流程提供了一种根据内存实例的优先级选择目标地址的机制,而源地址选择流程提供了一种机制,该机制对源地址池进行检查,当VM实例空闲时或由于优先级原因,将交换出的地址交换回来作为目标地址。
根据本发明的一个方面,提供了一种多实例二层内存(2-Level-Memory,2LM)架构,用于管理具有不同内存使用优先级的多个处理实例的内存访问。所述架构包括具有第一性能和成本级别的第一内存,以及具有低于第一性能和成本级别的第二性能和成本级别的第二内存。所述虚拟内存管理模块由至少一个操作系统实现,用于管理各个处理实例对所述第一内存和所述第二内存的访问。所述虚拟内存管理模块包括一个或多个处理器,所述一个或多个处理器执行指令以在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;为所述创建的内存实例的每个使用优先级等级定义策略;确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小。如果不满足,则所述虚拟内存管理模块选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址,并以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例。所述第二内存实例的所述目标地址是根据所述第二内存实例的所述使用优先级等级和虚拟内存大小,从所述第一内存和所述第二内存中的至少一个内存中选择的。
根据本发明的另一方面,提供了一种方法,所述方法用于管理具有不同内存使用优先级的多个处理实例对具有第一性能和成本级别的第一内存以及具有低于所述第一性能和成本级别的第二性能和成本级别的第二内存的访问。所述方法包括:在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;为所述创建的内存实例的每个使用优先级等级定义策略;确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小。响应所述创建的第一内存实例的所述策略不满足所述处理实例请求的所述指定的使用优先级等级下的所述虚拟内存大小,选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址。以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例。所述第二内存实例的所述目标地址是根据所述第二内存实例的所述使用优先级等级和虚拟内存大小,从所述第一内存和所述第二内存中的至少一个内存中选择的。
根据本发明的另一方面,提供了一种存储计算机指令的非瞬时性计算机可读介质,所述计算机指令实现一种方法,所述方法用于管理具有不同内存使用优先级的多个处理实例对具有第一性能和成本级别的第一内存以及具有低于所述第一性能和成本级别的第二性能和成本级别的第二内存的访问。所述指令在相应的指令模块中实现,当一个或多个处理器执行所述指令时,所述一个或多个处理器执行以下步骤:在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;为所述创建的内存实例的每个使用优先级等级定义策略;确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小。响应所述创建的第一内存实例的所述策略不满足所述处理实例请求的所述指定的使用优先级等级下的所述虚拟内存大小,所述指令还选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址,并以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例。所述第二内存实例的所述目标地址是根据所述第二内存实例的所述使用优先级等级和虚拟内存大小,从所述第一内存和所述第二内存中的至少一个内存中选择的。
可选地,在上述任一实施例中,根据每个处理实例的服务协议的定价模型,每个处理实例具有基于内存成本和服务时间的低、中和高内存使用优先级等级中的一种。
可选地,在上述任一实施例中,所述第一内存包括动态随机存取内存,所述第二内存包括存储级内存、闪存和硬盘驱动器内存中的至少一种。
可选地,在上述任一实施例中,所述创建的内存实例的每个使用优先级等级的所述策略指定高速缓存算法、高速缓存大小和内存交换大小中的至少一个。
可选地,在上述任一实施例中,内存实例的所述目标地址通过从所述第一内存或所述第二内存中选择至少具有所述请求的虚拟内存大小和指定的使用优先级等级的内存来确定。所述内存按照优先级降序顺序从系统可用第一内存、空闲低优先级可交换第一内存、空闲高优先级可交换第一内存、激活低优先级第一内存和激活高优先级第一内存中选择。
可选地,在上述任一实施例中,所述创建的第一内存实例的所述源地址首先从源地址池中分配,然后根据内存实例分配请求分配。
可选地,在上述任一实施例中,所述虚拟内存管理模块在内存交换期间使所述处理实例空闲,并且在所述处理实例恢复后,将内存实例交换回来,以供所述处理实例根据所述交换回来的内存实例的使用优先级等级访问。
前述示例中的任一个可以与前述其它示例中的任何一个或多个组合以在本发明范围内产生新实施例。
附图说明
在不一定按比例绘制的附图中,不同视图中相同的数字可以描述类似组件。附图通过示例而非限制的方式一般地示出了在本文中描述的各种实施例。
图1为示例性实施例中一种配置的框图,该配置包括虚拟内存管理模块(virtualmemory management module,vMMU),所述虚拟内存管理模块位于云操作系统或虚拟机监视器与一个或多个VM实例之间,用于通过创建内存实例管理二层内存访问。
图2为示例性实施例中虚拟内存管理模块的内存实例创建功能的流程图。
图3A和图3B为流程图,共同示出了示例性实施例中vMMU进行的目标内存地址选择。
图4为示例性实施例中vMMU进行源地址选择流程的流程图。
图5为示例性实施例中vMMU实现的VM恢复过程的流程图。
图6为示例性实施例中管理具有不同内存使用优先级的多个处理实例的内存访问的计算机实现方法的流程图。
图7为在示例性实施例中适合于实现vMMU的通用处理设备的框图。
具体实施方式
首先应理解,即使下文提供了一个或多个实施例的说明性实现方式,但是结合图1至图7描述的公开系统和/或方法可使用任何数量的当前已知或存在的技术予以实现。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。这些实施例进行了足够详细的描述以使本领域技术人员能够实践本发明,应理解,可以利用其它实施例,并且在不脱离本发明范围的情况下可以进行结构、逻辑和电更改。因此,以下示例性实施例的描述不具有限定意义,本发明的范围由所附权利要求书界定。
在一个实施例中,本文描述的功能或算法可以在软件中实现。所述软件可包括存储于计算机可读介质或计算机可读存储设备(如一个或多个非瞬时性内存或其它类型的基于硬件的本地或网络存储设备)中的计算机可执行指令。此外,这些功能与模块对应,所述模块可以是软件、硬件、固件或其任意组合。可根据需要在一个或多个模块中执行多个功能,所描述的实施例仅仅是示例。所述软件可在数字信号处理器、ASIC、微处理器或在计算机系统中运行的其它类型的处理器中执行,如个人计算机、服务器或其它计算机系统,从而将这种计算机系统转换成专门编程的机器。
如上所述,提供了一种二层内存(two-level memory,2LM)架构,允许云操作系统管理不同实例或虚拟机(virtual machine,VM)之间以及实例或虚拟机内的动态随机存取内存(dynamic random-access memory,DRAM)和存储级内存(storage-class memory,SCM)。在一个示例性实施例中,2LM架构是软件定义的,但也可以使用硬件实施例。在任一种情况下,在一个或多个VM实例与云操作系统或虚拟机监视器之间提供虚拟内存管理模块,通过创建内存实例、为内存实例定义策略(例如,特定优先级等级使用多少SCM和DRAM)以及在每个实例内放置和移动数据来管理如DRAM和SCM等二层内存。
不同的实例可以根据其成本/性能优先级等级访问内存实例。成本/性能优先级等级继而使用户能够针对不同的应用权衡性能,从而能够在平衡云计算客户访问计算资源的性能级别和成本时实现更大的灵活性。这提高了内存管理的效率,并在不牺牲性能的情况下,视情况使用性能较低和成本较低的内存。
X实例内存交换特征包括目标/源地址选择、交换实例创建和内存交换执行特征,以根据需要针对每个实例交换DRAM和SCM。如果所要创建的实例的对应策略不能满足请求的虚拟内存大小,或者在VM恢复期间,根据对应的优先级执行X实例内存交换。
目标地址选择流程提供了一种根据内存实例的优先级选择目标地址的机制,而源地址选择流程提供了一种机制,该机制对源地址池进行检查,当VM实例空闲时或由于优先级原因,将交换出的地址交换回来作为目标地址。
图1示出了一种示例性配置,该示例性配置包括虚拟内存管理模块(virtualmemory management module,vMMU)100,所述虚拟内存管理模块100位于云操作系统或虚拟机监视器102与一个或多个VM实例104之间,用于通过创建分别供高优先级VM实例104H、中优先级VM实例104M以及低优先级VM实例104L访问的内存实例110H、110M以及110L,来管理如DRAM 106和SCM 108等二层内存。虚拟机监视器可以是独立的,或与云OS 102集成。vMMU100实现X实例内存交换应用110X。
响应于在对应VM 104H、104M或104L的空闲期间交换出VM内存实例110H、110M或110L,根据对应的优先级,执行所述X实例内存交换以在VM恢复时间期间交换回来受影响的VM 104。vMMU 100还指定由高速缓存112实现的算法,以管理DRAM 106、SCM108与VM实例104之间的数据流,并视需要管理实例间内存交换。所选择的算法取决于请求VM实例104的优先级。
图2示出了示例性实施例中vMMU 100的内存实例创建功能。如图所示,响应VM实例104的内存访问请求,在200处开始内存实例创建,并在202处确定待创建虚拟内存实例的大小。根据创建的内存实例是高、中或低优先级内存实例,创建的内存实例对不同的优先级实例有不同的策略。在示例性配置中,DRAM 106可以用于高优先级实例,而SCM 108用于中优先级实例,硬盘驱动器(hard disk drive,HDD)或闪存用于低优先级实例。在其它配置中,提供内存类型的组合。
相关的策略可以指定在高速缓存112(图1)以及DRAM、DRAM高速缓存、SCM中用于内存实例的高速缓存算法和/或可交换内存大小。所述策略还可以指定对内存实例进行预先定义或在线和/或离线训练。例如,缓存算法、缓存大小和内存交换大小等策略参数可以按实例/优先级预先定义或为固定的,或者根据应用工作负载训练(可以是离线的或在线的)动态变化。在204处,vMMU 100确定请求内存的VM实例的优先级并建立对应的策略。
如果请求VM实例具有高优先级(例如,定价模型中的高性能和/或高成本),则在206H处创建具有高优先级策略的高优先级内存实例110H,所述高优先级策略包括高优先级缓存、高优先级缓存算法、高优先级DRAM和DRAM高速缓存,以及高优先级SCM和高优先级内存交换大小。
如果请求VM实例具有中优先级(例如,定价模型中的中等性能和/或中等成本),则在206M处创建具有中优先级策略的中优先级内存实例110M,所述中优先级策略包括中优先级缓存、中优先级缓存算法、中优先级DRAM和DRAM高速缓存,以及中优先级SCM和中优先级内存交换大小。
类似地,如果请求VM实例具有低优先级(例如,定价模型中的低性能和/或低成本),则在206L处创建具有低优先级策略的低优先级内存实例110L,所述低优先级策略包括低优先级缓存、低优先级缓存算法、低优先级DRAM和DRAM高速缓存,以及低优先级SCM和低优先级内存交换大小。
一般而言,优先级的这种变化使得能够将内存成本/性能纳入VM实例104的性能/成本优先级考虑之中,从而为内存使用启用不同的定价策略。当然,对于不同的定价模型,除了高、中、低性能/成本级别之外,优先级等级可以包括许多不同的级别。应当理解的是,对于任何不同的优先级等级和定价模式,本文所述的系统都以相同的方式进行操作。
使用在202处指定的虚拟内存大小在206H、206M或206L处创建内存优先级实例之后,vMMU 100在208处确定是否需要X实例内存交换。通常,如果所要创建的内存实例的对应策略不能满足请求的虚拟内存大小,则进行X实例内存交换。如果不需要X实例内存交换,则在210处结束内存实例创建功能。然而,如果所创建的内存实例的对应策略不能满足虚拟内存大小,则在212处选择源地址和目标地址,并在214处执行X实例内存交换,之后在210处结束内存实例创建功能。具有不同优先级等级的不同VM实例104可能导致内存交换。内存交换是否导致另一VM实例104被终止、交换到成本较低的内存或不受影响取决于另一VM实例104的优先级等级和请求VM实例104的优先级等级。
目标地址选择提供了一种根据内存实例的优先级来选择目标内存地址和源内存地址以作为目标地址和源地址的机制。目标地址选择的策略原则是最大化关键资源共享(DRAM),同时最小化高优先级VM的性能和可服务性(较低优先级实例共享优先)的影响。对于高优先级VM实例104H,最高性能/服务质量(quality of service,QoS)得到保证,而较低优先级VM实例104M或104L使用任何剩余可用资源(如果有的话)。
此外,如VM实例104按照协议所约定的,低优先级VM实例104可以被终止、进入休眠或交换到较低优先级内存,从而允许较高优先级VM实例104对较高优先级内存实例进行内存访问。另一方面,对于中优先级VM实例104M,只要VM实例的操作不中断,性能降级是可以接受的。
图3A和图3B共同示出了vMMU 10进行的目标内存地址选择。在图3A和图3B的示例中,vMMU 100对六个不同类别的内存进行优先级排序。应当理解,可以使用本文所描述的技术对更多或更少的内存类别进行优先级排序。在该示例中,根据可用性按以下优先级顺序分配内存:
A:系统可用DRAM
B:空闲低优先级VM可交换DRAM
C:空闲中优先级VM可交换DRAM
D:空闲高优先级VM可交换DRAM
E:激活低优先级VM可交换DRAM
F:激活中优先级VM可交换DRAM。
换句话说,高优先级VM实例104H可以按照优先级顺序A-F访问内存,直到内存可用于高优先级VM实例104H。类似地,中优先级VM实例104M或低优先级实例104L按相同的顺序访问内存,但中优先级VM实例104M仅具有内存选择A-E,而低优先级VM实例104L仅具有内存选择A-D。通常,在VM定价模型允许的情况下,较低优先级VM实例104L或104M会被较高优先级VM实例104H替换。相对于请求内存分配的VM实例,较低优先级VM实例104M或104L也可以被终止、交换到较慢的内存,或不受影响。
目标地址选择的策略原则是最大化关键资源共享(DRAM),同时最小化对较高优先级VM实例104H的性能和可服务性(较低优先级实例共享优先)的影响。如上所述,对于高优先级VM实例104H,最高性能/QoS得到保证,而低优先级VM实例104L使用任何可用的剩余资源(如果有的话),并且可以根据协议被终止、休眠,或与另一VM实例104交换。通常,对于中优先级VM实例104M,只要VM实例104M的操作不中断,性能降级是可以接受的。
如图3A所示,目标地址选择流程从300处开始,并提供一种根据内存实例的优先级来选择目标地址以作为目标地址和源地址的机制。在302处指定所需要的目标内存大小和实例优先级,并相应地继续处理。例如,如果在304处确定目标内存大小适合可用A内存(系统可用DRAM),则在306处分配A内存的目标内存地址,并在308处结束目标地址选择。然而,如果目标内存大小不适合单独的内存A,则在310处确定目标内存大小是否适合可用的A+B内存(系统可用DRAM+空闲低优先级VM可交换DRAM)。如果目标内存大小适合可用的A+B内存,则在312处分配A和B内存的目标内存地址,并在314处记录内存B中使用的内存地址作为内存B的源地址池。在316处结束目标地址选择。类似地,如果目标内存大小不适合内存A和B,则在318处确定目标内存大小是否适合可用的A+B+C内存(系统可用DRAM+空闲低优先级VM可交换DRAM+空闲中优先级VM可交换DRAM)。如果目标内存大小适合可用的A+B+C内存,则在320处分配A、B和C内存的目标内存地址,并在322处记录内存B和C中使用的内存地址作为内存B和C的源地址池。在324处结束目标地址选择。
图3B接续图3A,示出了如果目标内存大小不适合内存A、B和C,则在326处确定目标内存大小是否适合可用的A+B+C+D内存(系统可用DRAM+空闲低优先级VM可交换DRAM+空闲中优先级VM可交换DRAM+空闲高优先级VM可交换DRAM)。如果目标内存大小适合可用的A+B+C+D内存,则在328处分配A、B、C和D内存的目标内存地址,并在330处记录内存B、C和D中使用的内存地址作为内存B、C和D的源地址池。在332处结束目标地址选择。
如果目标内存大小不适合内存A、B、C和D,则在334处确定目标内存大小是否适合可用的A+B+C+D+E内存(系统可用DRAM+空闲低优先级VM可交换DRAM+空闲中优先级VM可交换DRAM+空闲高优先级VM可交换DRAM+激活低优先级VM可交换DRAM)。如果目标内存大小适合可用的A+B+C+D+E内存,则vMMU 100在336处确定VM实例104是否具有低优先级(104L)。如果VM实例104具有低优先级,则在338处发布内存不足错误消息,在340处结束目标地址选择。然而,如果VM实例104没有低优先级,则在342处分配A、B、C、D和E内存的目标内存地址,并在344处终止内存E中的低优先级VM实例104L或将其送入休眠。在346处将内存B-E中使用的内存地址记录为内存B-E的源地址池。然后,在348处结束目标地址选择。
如果目标内存大小不适合内存A、B、C、D和E,则在350处确定目标内存大小是否适合可用的A+B+C+D+E+F内存(系统可用DRAM+空闲低优先级VM可交换DRAM+空闲中优先级VM可交换DRAM+空闲高优先级VM可交换DRAM+激活低优先级VM可交换DRAM+激活中优先级VM可交换DRAM)。如果目标内存大小适合可用的A+B+C+D+E+F内存,则vMMU 100在352处确定VM实例104是否具有高优先级(104H)。如果VM实例104没有高优先级,则在354处发布内存不足错误消息,在356处结束目标地址选择。然而,如果VM实例具有高优先级,则在358处分配A、B、C、D、E和F内存的目标内存地址,并在360处终止内存E中的VM实例104或将其送入休眠。此外,在360处将内存F中的VM实例104降级到性能较低的内存。在362处将内存B-F中使用的内存地址记录为内存B-F的源地址池。然后,在364处结束目标地址选择。
如果目标内存大小不适合内存A、B、C、D、E和F,则在366处发布内存不足错误消息,并在368处结束目标地址选择。
图4示出了示例性实施例中vMMU 100进行的源地址选择流程。源地址选择流程提供一种机制,该机制对源地址池进行检查,当VM实例104空闲或由于较高优先级VM实例104的请求而被换出时,首先将交换出的地址交换回来作为目标地址。如图所示,从400处开始源地址选择。如果在402处确定VM实例104的源地址池为空,则在404处根据VM实例104的传统内存分配请求分配源地址,并在406处结束源地址选择。另一方面,如果在402处确定VM实例104的源地址池不为空,则在408处根据VM实例104的优先级,使用选择A-F中的最佳可用内存从源地址池中分配源地址。在410处,根据VM实例104的实例内存分配请求分派剩余的源地址,并在412处结束源地址选择。在选择源内存地址和目标内存地址之后,云操作系统102可以使用传统的内存交换技术执行内存交换。
图5示出了示例性实施例中vMMU 100实现的VM恢复过程。响应于在VM实例104的空闲期间交换出VM实例,执行X实例内存交换,从而在VM实例恢复期间,根据对应的VM性能/成本优先级交换回来受影响的VM实例104。如图5所示,在500处开始VM恢复过程,并在502处确定是否已执行X实例内存交换。如果未执行X实例内存交换,则在504处结束VM恢复过程。然而,如果已执行X实例内存交换,则vMMU 100在506处获取交换的内存大小和实例优先级,之后在508处确定是否需要X实例内存交换以恢复VM实例104。如果不需要X实例内存交换,则在510处结束VM恢复过程。然而,如果需要X实例内存交换,则在512处选择源地址和目标地址,并在514处执行X实例内存交换,之后在510处结束VM恢复过程。
在示例性实施例中,创建交换实例以执行内存交换。交换实例创建的伪代码流示例可以写为:
Swap instances create(Source addresses,Target addresses)
{
mbind(target addresses,SCM);//bind the target addresses to SCM
mbind(source addresses,DRAM);//bind the source addresses to DRAM
}
作为如何从数据中心角度使用本文描述的系统来管理多VM系统的内存需求的示例,下表示出了数据中心中可能使用的五种不同的示例性内存配置。
案例1:在第一种内存配置中,高优先级DRAM具有256GB,并且不使用SCM。在256GB系统50%利用率和每个VM 16GB的情况下,数据中心可以以1的归一化成本实现16个VM。
案例2:在第二种内存配置中,低优先级DRAM具有512GB,并且不使用SCM。在512GB系统50%利用率和每个VM 16GB的情况下,数据中心可以以1.4的归一化成本实现32个VM。
案例3:在第三种内存配置中,低优先级和高优先级DRAM具有768GB,并且不使用SCM。在768GB系统低优先级内存和高优先级内存的50%利用率以及每个VM 16GB的情况下,数据中心可以以2的归一化成本实现16个高优先级VM和32个低优先级VM。
案例4:在第四种内存配置中,低优先级DRAM-SCM内存配置具有256GB的DRAM和256GB的SCM。在512GB系统50%利用率和每个VM 16GB的情况下,数据中心可以以1.2的归一化成本实现32个VM。
案例5:在第五种内存配置中,低优先级和高优先级DRAM-SCM内存配置具有256GB的DRAM和512GB的SCM。在768GB系统低优先级内存和高优先级内存的50%利用率以及每个VM 16GB的情况下,数据中心可以以1.4的归一化成本实现16个高优先级VM和32个低优先级VM。
通过将案例5与案例3进行比较,可以了解到,本文描述的内存管理技术通过引入SCM可以在节约大约30%成本的情况下在768GB内存系统中实现相同数量的VM,而不会影响高优先级客户。本文描述的内存管理技术可以在多VM云系统中实现性能优先级和成本权衡,而这先前使用传统的云内存配置是不可能实现的。使用本文描述的内存管理技术,可以避免高优先级实例和应用的SCM性能问题,同时保持云VM系统的成本和资源效率。
对于设置数据中心内存的用户,通过如下方式建立和管理用于每个优先级等级的SCM和DRAM的量:指定由VM使用的内存大小和优先级,然后使用vMMU 100的2LM处理来指定DRAM-SCM内存配置的内存层次和对应的缓存算法。例如,可以使用合适的内存类型混合来建立数据中心,以最高效地处理用户在其各自云服务协议中建立的内存需求。
图6示出了示例性实施例中管理具有不同内存使用优先级的多个处理实例的内存访问的方法。在示例性实施例中,vMMU 100实现相应的指令模块,以管理具有不同优先级的相应VM实例对第一内存(例如,DRAM)和第二内存(例如,SCM)的访问。如图所示,vMMU 100处理指令模块,以在600处在第一内存和第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例,并在602处为创建的内存实例的每个使用优先级等级定义策略。vMMU 100还执行指令模块,以在604处确定所创建的内存实例的策略是否能够满足VM实例请求的指定的使用优先级等级下的虚拟内存大小。如果满足,则在606处将创建的内存实例分配给请求VM实例。然而,如果不满足,则在608处选择所创建的内存实例的源地址以及能够满足指定的使用优先级等级下请求的虚拟内存大小的第二内存实例的目标地址。
vMMU 100还执行指令模块,以在610处以目标地址下的第二内存实例交换出源地址下的内存实例。第二内存实例的目标地址是根据第二内存实例的使用优先级等级和虚拟内存大小,从DRAM 106、SCM 108或其它内存中选择的。在其它示例性实施例中,vMMU 100还可以包括一个或多个硬件元件,所述一个或多个硬件元件用于执行实施例中描述的步骤的任一步骤或任意组合。
这样一来,不同的VM实例可以根据其服务契约,基于其成本/性能优先级等级访问内存实例。成本/性能优先级等级继而使数据中心运营商能够针对不同的应用权衡性能,从而能够在平衡云计算客户和应用用户访问计算资源的性能级别和成本时实现更大的灵活性。
图7为示例性实施例提供的电路的框图,该电路用于实现上文结合图1-图6所述的用于管理内存的vMMU 100。在各种实施例中不需要使用所有组件。计算机700形式的一个示例性计算设备可以包括处理单元702、内存704、可移动存储器706和不可移动存储器708。尽管所述示例性计算设备图示和描述为计算机700,但是所述计算设备在不同的实施例中可以有不同的形式。例如,所述计算设备可以替代是智能手机、平板电脑、智能手表或其它计算设备,包括结合图7所示和描述的相同或类似元件。如智能手机、平板电脑和智能手表等设备通常统称为移动设备或用户设备。此外,尽管各种数据存储元件作为计算机700的一部分进行说明,但是所述存储器还可以包括或者可选地包括可通过网络(例如互联网或基于服务器的存储器)访问的基于云的存储器。
内存704可以包括易失性内存710和非易失性内存712。计算机700还可以包括或可以访问计算环境,所述计算环境包括各种计算机可读介质,如易失性内存710、非易失性内存712、可移动存储器706和不可移动存储器708。计算机存储器包括随机存取内存(randomaccess memory,RAM)、只读内存(read only memory,ROM)、可擦除可编程只读内存(erasable programmable read-only memory,EPROM)或电可擦除可编程只读内存(electrically erasable programmable read-only memory,EEPROM)、闪存或其它内存技术、只读光盘内存(compact disc read-only memory,CD ROM)、数字通用光盘(digitalversatile disk,DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备,或能够存储计算机可读指令的任何其它介质。
计算机700可以包括或可以访问计算环境,该计算环境包括输入接口714、输出接口716和通信接口718。输出接口716可以包括显示设备,例如触摸屏,所述显示设备也可以用作输入设备。输入接口714可以包括以下中的一个或多个:触摸屏、触摸板、鼠标、键盘、摄像头、一个或多个设备专用按钮、集成在计算机700内或通过有线或无线数据连接耦合到计算机700的一个或多个传感器以及其它输入设备。计算机可以使用通信连接在网络环境中运行,以连接到一个或多个远程计算机,如数据库服务器。所述远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、对端设备或其它常见的DFD网络交换机等。所述通信连接可以包括局域网(local area network,LAN)、广域网(wide areanetwork,WAN)、蜂窝网、Wi-Fi、蓝牙或其它网络。根据一个实施例,计算机700的各种组件与系统总线720连接。
存储在计算机可读介质中的计算机可读指令(如程序7222)可由计算机700的处理单元702执行。在一些实施例中,程序722包括软件,当处理单元702执行所述软件时,所述软件执行本文包括的任一实施例提供的内存管理操作。硬盘驱动器、CD-ROM和RAM是包括非瞬时性计算机可读介质(如存储设备)的制品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,因为载波太短暂。存储器还可以包括联网存储器,如存储区域网络(storage area network,SAN)。计算机程序722可以包括指令模块,所述指令模块在处理时使处理单元702执行本文描述的一种或多种方法或算法。
尽管上文详细描述了几个实施例,但也可以进行其它修改。例如,在图中描述的逻辑流程不需要所示特定顺序或连续顺序来达到期望的结果。可以向所描述的流程提供其它步骤或从所描述的流程中删除步骤,并可以向所描述的系统添加其它组件或从所描述的系统中移除组件。其它实施例可在所附权利要求书的范围内。
还应理解,可以在符合本发明的一个或多个计算设备中安装并与符合本发明的一个或多个计算设备一起销售包括一个或多个计算机可执行指令的软件,所述一个或多个计算机可执行指令有利于如上文结合本发明的任何一个步骤或所有步骤所描述的处理和操作。或者,可以获取软件并将其装载到一个或多个计算设备中,包括通过物理介质或分布系统获取软件,包括例如从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,可以将软件存储在服务器中以通过互联网分布。
此外,本领域技术人员应理解,本发明在其应用中不限于在说明书中阐述或附图中说明的组件的构造和布置细节。本文的实施例能够适用其它实施例,并且能够以各种方式实践或执行。此外,应理解,本文使用的措辞和术语是为了描述目的,不应视为限制性的。在本文中使用“包括”、“包含”或“具有”及其变体旨在涵盖其后列举的项目及其等效物以及其它项目。除非另有限制,否则术语“连接”、“耦合”和“安装”以及其变体在本文中被广泛使用,并且涵盖直接连接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。此外,如“上”、“下”、“底部”和“顶部”等术语是相对的,用于帮助说明,但并不具有限制性。
可以至少部分地在数字电子电路、模拟电子电路中,或计算机硬件、固件、软件或其组合中实现根据所说明的实施例使用的说明性设备、系统和方法的组件。例如,这些组件可以实现为有形地体现于信息载体中,或机器可读存储设备中的计算机程序产品(如计算机程序、程序代码或计算机指令),以由数据处理装置(如可编程处理器、计算机或多台计算机)执行,或用于控制数据处理装置的操作。
计算机程序可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以部署成任何形式,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署成在一台计算机中或多台计算机中在一个站点处执行,也可以分布在多个站点处并通过通信网络互连。此外,用于实现本文描述的技术的功能程序、代码和代码段很容易被本文描述的技术所属领域的程序员理解为在权利要求的范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器执行,从而执行计算机程序、代码或指令来执行功能(例如,对输入数据进行操作和/或生成输出)。例如,方法步骤也可以由专用逻辑电路(例如,现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC))执行,并且用于执行所述方法的装置可以实现为该专用逻辑电路。
结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以使用通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或它们为执行本文描述的功能而设计的任何组合来实现或执行。通用处理器可以为微处理器,可选地,该处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如DSP和微处理器、多个微处理器、一个或多个微处理器结合DSP核,或任何其它类似的配置的组合。
例如,适合执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器从只读内存或随机存取内存或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个内存设备。通常,计算机还包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或与一个或多个用于存储数据的大容量存储设备可操作地耦合以从所述大容量存储设备接收数据和/或将数据传送给所述大容量存储设备。适于体现计算机程序指令和数据的信息载体包括各种形式的非易失性内存,例如,包括半导体内存设备,例如电可编程只读内存或电可编程ROM(electrically programmable read-only memory,EPROM)、电可擦除可编程ROM(electrically erasable programmable ROM,EEPROM)、闪存设备、数据存储盘(例如,磁盘、内置硬盘、或可移动磁盘、磁光盘、CD-ROM和DVD-ROM盘)。处理器和内存可以由专用逻辑电路补充或并入专用逻辑电路。
本领域技术人员应当理解,可以使用多种不同的技术和技术方法中的任意一种来表示信息和信号。例如,上文描述中可以引用的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或磁粒、光场或光粒、或者任何组合表示。
本文所使用的“机器可读介质”是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取内存(random-access memory,RAM)、只读内存(read-only memory,ROM)、缓冲内存、闪存、光学介质、磁性介质、高速缓存内存、其它类型的存储器(例如,可擦除可编程只读内存(erasable programmable read-only memory,EEPROM))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够存储由一个或多个处理器702执行的指令的任何介质或多种介质的组合,一个或多个处理器702执行所述指令时,一个或多个处理器702执行本文描述的任何一种或多种方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
本领域技术人员应理解,虽然已经结合在不同服务协议下实现的VM实例和云服务应用描述了示例性实施例,但本文描述的公开内容不限于此。例如,本文描述的技术可用于管理具有不同优先级等级的应用在单个计算机或软件定义网络配置中对具有不同性能特性的内存的访问。在这种配置中,内存选择不需要由服务协议驱动,而是由各个应用的优先级驱动。
另外,在不脱离本发明范围的情况下,各种实施例中描述及图示为独立或分离的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。展示或描述为彼此耦合或直接耦合或者通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。变化、替换和变更的其它示例可由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下举例。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。因此,说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本发明的范围内的任何和所有修改、变体、组合或等效物。
Claims (20)
1.一种多实例二层内存(2-Level-Memory,2LM)架构,用于管理具有不同内存使用优先级的多个处理实例的内存访问,其特征在于,包括:
第一内存,具有第一性能和成本级别;
第二内存,具有低于所述第一性能和成本级别的第二性能和成本级别;
虚拟内存管理模块,由至少一个操作系统实现,用于管理各个处理实例对所述第一内存和所述第二内存的访问,其中,所述虚拟内存管理模块包括一个或多个处理器,所述一个或多个处理器执行指令以:
在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;
为所述创建的内存实例的每个使用优先级等级定义策略;确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小;
如果所述创建的第一内存实例的所述策略不能满足所述处理实例请求的所述指定的使用优先级等级下的所述虚拟内存大小,则选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址,并以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例;
其中,所述第二内存实例的所述目标地址是根据所述第二内存实例的所述使用优先级等级和虚拟内存大小,从所述第一内存和所述第二内存中的至少一个内存中选择的。
2.根据权利要求1所述的多实例2LM架构,其特征在于,根据每个处理实例的服务协议的定价模型,每个处理实例具有基于内存成本和服务时间的低、中和高内存使用优先级等级中的一个。
3.根据前述权利要求中任一项所述的多实例2LM架构,其特征在于,所述第一内存包括动态随机存取内存,所述第二内存包括存储级内存、闪存和硬盘驱动器内存中的至少一种。
4.根据前述权利要求中任一项所述的多实例2LM架构,其特征在于,所述创建的内存实例的每个使用优先级等级的所述策略指定高速缓存算法、高速缓存大小和内存交换大小中的至少一个。
5.根据前述权利要求中任一项所述的多实例2LM架构,其特征在于,所述第二内存实例的所述目标地址通过从所述第一内存或所述第二内存中选择至少具有所述请求的虚拟内存大小和指定的使用优先级等级的内存来确定,所述内存按照优先级降序顺序从系统可用第一内存、空闲低优先级可交换第一内存、空闲高优先级可交换第一内存、激活低优先级第一内存和激活高优先级第一内存中选择。
6.根据前述权利要求中任一项所述的多实例2LM架构,其特征在于,所述创建的第一内存实例的所述源地址从源地址池中分配,然后根据内存实例分配请求分配。
7.根据前述权利要求中任一项所述的多实例2LM架构,其特征在于,所述虚拟内存管理模块在内存交换期间使所述处理实例空闲,并且在所述处理实例恢复后,将内存实例交换回来,以供所述处理实例根据所述交换回来的内存实例的使用优先级等级进行访问。
8.一种计算机实现方法,用于管理具有不同内存使用优先级的多个处理实例对具有第一性能和成本级别的第一内存以及具有低于所述第一性能和成本级别的第二性能和成本级别的第二内存的访问,其特征在于,所述计算机实现方法包括:
一个或多个处理器在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;
所述一个或多个处理器为所述创建的内存实例的每个使用优先级等级定义策略;
所述一个或多个处理器确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小;
响应所述创建的第一内存实例的所述策略不满足所述处理实例请求的所述指定的使用优先级等级下的所述虚拟内存大小,所述一个或多个处理器选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址;
所述一个或多个处理器以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例;其中,所述第二内存实例的所述目标地址根据所述第二内存实例的所述使用优先级等级和虚拟内存大小从所述第一内存和所述第二内存中的至少一个内存中选择。
9.根据权利要求8所述的方法,其特征在于,根据每个处理实例的服务协议的定价模型,每个处理实例具有基于内存成本和服务时间的低、中和高内存使用优先级等级中的一种。
10.根据权利要求8或9所述的方法,其特征在于,所述第一内存包括动态随机存取内存,所述第二内存包括存储级内存、闪存和硬盘驱动器内存中的至少一种。
11.根据权利要求8至10中任一项所述的方法,其特征在于,为所述创建的内存实例的每个使用优先级等级定义策略包括:所述一个或多个处理器指定高速缓存算法、高速缓存大小和内存交换大小中的至少一个。
12.根据权利要求8至11中任一项所述的方法,其特征在于,选择所述第二内存实例的所述目标地址通过如下方式来确定:所述一个或多个处理器从所述第一内存或所述第二内存中选择至少具有所述请求的虚拟内存大小和指定的使用优先级等级的内存;所述一个或多个处理器按照优先级降序顺序从系统可用第一内存、空闲低优先级可交换第一内存、空闲高优先级可交换第一内存、激活低优先级第一内存和激活高优先级第一内存中选择所述内存。
13.根据权利要求8至12中任一项所述的方法,其特征在于,所述方法还包括:所述一个或多个处理器从源地址池中分配所述创建的第一内存实例的源地址,然后根据内存实例分配请求分配所述创建的第一内存实例。
14.根据权利要求8至13中任一项所述的方法,其特征在于,所述方法还包括:所述一个或多个处理器在内存交换期间使所述处理实例空闲,并且在所述处理实例恢复后,将内存实例交换回来,以供所述处理实例根据所述交换回来的内存实例的使用优先级等级访问。
15.一种存储计算机指令的非瞬时性计算机可读介质,所述计算机指令实现一种方法,所述方法用于管理具有不同内存使用优先级的多个处理实例对具有第一性能和成本级别的第一内存以及具有低于所述第一性能和成本级别的第二性能和成本级别的第二内存的访问,其特征在于,所述非瞬时性计算机可读介质包括:
第一指令模块,当所述第一指令模块由一个或多个处理器执行时,在所述第一内存和所述第二内存中创建具有指定的使用优先级等级和指定的虚拟内存大小的内存实例;
第二指令模块,当所述第二指令模块由所述一个或多个处理器执行时,为所述创建的内存实例的每个使用优先级等级定义策略;
第三指令模块,当所述第三指令模块由所述一个或多个处理器执行时,确定创建的第一内存实例的策略是否能够满足处理实例请求的指定的使用优先级等级下的虚拟内存大小;
第四指令模块,当所述第四指令模块由所述一个或多个处理器执行时,响应所述创建的第一内存实例的所述策略不满足所述处理实例请求的所述指定的使用优先级等级下的所述虚拟内存大小,选择所述创建的第一内存实例的源地址以及能够满足所述指定的使用优先级等级下所述请求的虚拟内存大小的第二内存实例的目标地址;
第五指令模块,当所述第五指令模块由所述一个或多个处理器执行时,以所述目标地址下的所述第二内存实例交换出所述源地址下的所述第一内存实例;其中,所述第二内存实例的所述目标地址根据所述第二内存实例的所述使用优先级等级和虚拟内存大小从所述第一内存和所述第二内存中的至少一个内存中选择。
16.根据权利要求15所述的计算机可读介质,其特征在于,根据每个处理实例的服务协议的定价模型,每个处理实例具有基于内存成本和服务时间的低、中和高内存使用优先级等级中的一种,所述第一内存包括动态随机存取内存,所述第二内存包括存储级内存、闪存和硬盘驱动器内存中的至少一种。
17.根据权利要求15或16所述的计算机可读介质,其特征在于,所述第二指令模块指定高速缓存算法、高速缓存大小和内存交换大小中的至少一个。
18.根据权利要求15至17中任一项所述的计算机可读介质,其特征在于,所述第四指令模块通过如下方式来选择所述第二内存实例的所述目标地址:从所述第一内存或所述第二内存中选择至少具有所述请求的虚拟内存大小和指定的使用优先级等级的内存;按照优先级降序顺序从系统可用第一内存、空闲低优先级可交换第一内存、空闲高优先级可交换第一内存、激活低优先级第一内存和激活高优先级第一内存中选择所述内存。
19.根据权利要求15至18中任一项所述的计算机可读介质,其特征在于,还包括第六指令模块,当所述第六指令模块由所述一个或多个处理器执行时,从源地址池中分配所述创建的第一内存实例的所述源地址,然后根据内存实例分配请求分配所述创建的第一内存实例。
20.根据权利要求15至19中任一项所述的计算机可读介质,其特征在于,还包括第七指令模块,当所述第七指令模块由所述一个或多个处理器执行时,在内存交换期间使所述处理实例空闲,并且在所述处理实例恢复后,将内存实例交换回来,以供所述处理实例根据所述交换回来的内存实例的使用优先级等级访问。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862713329P | 2018-08-01 | 2018-08-01 | |
US62/713,329 | 2018-08-01 | ||
PCT/CN2019/092892 WO2020024733A1 (en) | 2018-08-01 | 2019-06-26 | Multi-instance 2lm architecture for scm applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112513821A true CN112513821A (zh) | 2021-03-16 |
Family
ID=69232361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980051316.4A Pending CN112513821A (zh) | 2018-08-01 | 2019-06-26 | 用于scm应用的多实例2lm架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11287999B2 (zh) |
EP (1) | EP3695315A4 (zh) |
CN (1) | CN112513821A (zh) |
WO (1) | WO2020024733A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794305A (zh) * | 2023-01-09 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 虚拟机内存的调整方法和装置、存储介质及电子装置 |
WO2023051000A1 (zh) * | 2021-09-30 | 2023-04-06 | 华为技术有限公司 | 内存管理方法、装置、处理器及计算设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3695315A4 (en) | 2018-08-01 | 2020-12-02 | Huawei Technologies Co., Ltd. | MULTI-INSTANCE 2LM ARCHITECTURE FOR SCM APPLICATIONS |
KR20210051718A (ko) * | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065867A1 (en) * | 2000-08-21 | 2002-05-30 | Gerard Chauvel | Address Space priority arbitration |
US20120180040A1 (en) * | 2011-01-06 | 2012-07-12 | International Business Machines Corporation | Techniques for personalizing feed content in virtualized computing environments |
US20120221765A1 (en) * | 2011-02-24 | 2012-08-30 | Samsung Electronics Co., Ltd. | Management of memory pool in virtualization environment |
US20140089762A1 (en) * | 2012-09-26 | 2014-03-27 | Kiran Pangal | Techniques Associated with a Read and Write Window Budget for a Two Level Memory System |
CN103946811A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
US20150178204A1 (en) * | 2013-12-24 | 2015-06-25 | Joydeep Ray | Common platform for one-level memory architecture and two-level memory architecture |
CN105556493A (zh) * | 2013-09-27 | 2016-05-04 | 英特尔公司 | 用于跨设备组合存储器资源的技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312627B (zh) * | 2013-05-30 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 基于两级存储的正则表达式匹配方法 |
EP3695315A4 (en) | 2018-08-01 | 2020-12-02 | Huawei Technologies Co., Ltd. | MULTI-INSTANCE 2LM ARCHITECTURE FOR SCM APPLICATIONS |
-
2019
- 2019-06-26 EP EP19845528.9A patent/EP3695315A4/en active Pending
- 2019-06-26 WO PCT/CN2019/092892 patent/WO2020024733A1/en unknown
- 2019-06-26 CN CN201980051316.4A patent/CN112513821A/zh active Pending
-
2020
- 2020-06-09 US US16/897,087 patent/US11287999B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020065867A1 (en) * | 2000-08-21 | 2002-05-30 | Gerard Chauvel | Address Space priority arbitration |
US20120180040A1 (en) * | 2011-01-06 | 2012-07-12 | International Business Machines Corporation | Techniques for personalizing feed content in virtualized computing environments |
US20120221765A1 (en) * | 2011-02-24 | 2012-08-30 | Samsung Electronics Co., Ltd. | Management of memory pool in virtualization environment |
CN103946811A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
US20140089762A1 (en) * | 2012-09-26 | 2014-03-27 | Kiran Pangal | Techniques Associated with a Read and Write Window Budget for a Two Level Memory System |
CN105556493A (zh) * | 2013-09-27 | 2016-05-04 | 英特尔公司 | 用于跨设备组合存储器资源的技术 |
US20150178204A1 (en) * | 2013-12-24 | 2015-06-25 | Joydeep Ray | Common platform for one-level memory architecture and two-level memory architecture |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023051000A1 (zh) * | 2021-09-30 | 2023-04-06 | 华为技术有限公司 | 内存管理方法、装置、处理器及计算设备 |
CN115794305A (zh) * | 2023-01-09 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 虚拟机内存的调整方法和装置、存储介质及电子装置 |
CN115794305B (zh) * | 2023-01-09 | 2023-05-09 | 苏州浪潮智能科技有限公司 | 虚拟机内存的调整方法和装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3695315A4 (en) | 2020-12-02 |
WO2020024733A1 (en) | 2020-02-06 |
EP3695315A1 (en) | 2020-08-19 |
US20200301600A1 (en) | 2020-09-24 |
US11287999B2 (en) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10922269B2 (en) | Proactive optimizations at multi-tier file systems | |
US11314551B2 (en) | Resource allocation and scheduling for batch jobs | |
KR101815148B1 (ko) | 설정 가능한 컴퓨팅 자원 할당 기술 | |
US10055257B2 (en) | Virtual machine placement in a cloud computing environment based on factors including optimized processor-memory affinity | |
CN112513821A (zh) | 用于scm应用的多实例2lm架构 | |
US10108450B2 (en) | Mechanism for SSDs to efficiently manage background activity with notify | |
RU2569805C2 (ru) | Виртуальная архитектура неоднородной памяти для виртуальных машин | |
RU2571366C2 (ru) | Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин | |
US10108460B2 (en) | Method and system for integrated deployment planning for virtual appliances | |
US20180084036A1 (en) | Optimization of Computer System Logical Partition Migrations in a Multiple Computer System Environment | |
CN103699496A (zh) | 分级存储器管理 | |
US20180225155A1 (en) | Workload optimization system | |
TW201214284A (en) | Virtualization and dynamic resource allocation aware storage level reordering | |
CN108139937B (zh) | 多根i/o虚拟化系统 | |
US20220050722A1 (en) | Memory pool management | |
TW202223640A (zh) | 提供用於資源存取的策略執行之技術 | |
CN104461735A (zh) | 一种虚拟化场景下分配cpu资源的方法和装置 | |
JP2021504780A (ja) | 分散コンピューティング環境における自動対角スケーリングためのアプリケーションの優先順位付け | |
CN115599512A (zh) | 在图形处理单元上调度作业 | |
US10171370B1 (en) | Distribution operating system | |
KR20230036518A (ko) | 워크로드 실행을 오프로드하는 기술들 | |
US9971785B1 (en) | System and methods for performing distributed data replication in a networked virtualization environment | |
Saravanakumar et al. | An efficient technique for virtual machine clustering and communications using task-based scheduling in cloud computing | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
Meyer et al. | Supporting heterogeneous pools in a single ceph storage cluster |
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 |