[go: up one dir, main page]

CN110419025A - 用于管理动态随机存取存储器(dram)的系统和方法 - Google Patents

用于管理动态随机存取存储器(dram)的系统和方法 Download PDF

Info

Publication number
CN110419025A
CN110419025A CN201780087794.1A CN201780087794A CN110419025A CN 110419025 A CN110419025 A CN 110419025A CN 201780087794 A CN201780087794 A CN 201780087794A CN 110419025 A CN110419025 A CN 110419025A
Authority
CN
China
Prior art keywords
cluster
application
dram
memory
mapped
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.)
Granted
Application number
CN201780087794.1A
Other languages
English (en)
Other versions
CN110419025B (zh
Inventor
亚尼·科科宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110419025A publication Critical patent/CN110419025A/zh
Application granted granted Critical
Publication of CN110419025B publication Critical patent/CN110419025B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

提供了一种用于管理动态随机存取存储器(dynamic random access memory,简称DRAM)的装置,其中,所述装置包括:处理器,用于将所述DRAM的多个存储体集群中的每个集群映射到在主机计算设备的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtual machine,简称VM)上执行的多个应用的每个应用,其中每个存储体集群专门用于每个映射的应用。

Description

用于管理动态随机存取存储器(DRAM)的系统和方法
背景技术
本发明的一些实施例涉及动态随机存取存储器(dynamic random accessmemory,简称DRAM),更具体地但不仅限于,涉及用于管理DRAM的方法和系统。
在现代存储系统中,访问DRAM由存储控制器控制。DRAM被划分为包括信道、存储体、秩、行和列的层次结构,以便提高吞吐量和性能。存储控制器使用物理地址的指定比特子集来选择信道、秩、存储体、行和列。存储控制器中使用的存储算法通常由系统固件配置,因此更改过程繁琐。存储控制器的硬件功能还对可能的实现选项设置了限制。
发明内容
本发明的目的在于提供一种装置、方法、计算机程序产品和管理动态随机存取存储器(dynamic random access memory,简称DRAM))的系统。
上述及其它目的通过独立权利要求的特征来实现。根据从属权利要求、说明书以及附图,进一步的实现形式是显而易见的。
根据第一方面,提供了一种用于管理动态随机存取存储器(dynamic randomaccess memory,简称DRAM)的装置,所述装置包括:处理器,用于将DRAM的多个存储体集群中的每个集群映射到在主机计算设备的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtual machine,简称VM)上执行的多个应用的每个应用,其中每个存储体集群专门用于每个映射的应用。
在根据第一方面的所述装置的第一种可能的实现方式中,所述处理器用于执行运行公共VM的虚拟机监视器,其中虚拟机监视器用于:通过将多个DRAM集群的每个集群的映射转换为物理地址,提供给控制DRAM的存储控制器,来执行DRAM的多个存储体集群中的每个集群的映射。
映射由软件执行,所述软件提供与硬件中实现的现有存储控制器的集成。使用软件进行映射有助于在现有计算设备上实现快速、轻松的部署。
根据第二方面,提供了一种管理动态随机存取存储器(dynamic random accessmemory,简称DRAM)的方法,所述方法包括:将DRAM的多个存储体集群中的每个集群映射到在主机计算设备的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtual machine,简称VM)上执行的多个应用的每个应用,其中每个存储体集群专门用于每个映射的应用。
根据第一方面的装置和/或根据本文描述的第二方面的方法,避免或减少了DRAM存储体的竞争,特别是在公共虚拟机(virtual machine,简称VM)上执行的应用之间的竞争。在公共VM上执行的每个应用被映射到专门用于映射的应用的存储体集群,如果与将公共VM视为单个执行应用的存储体级别分区机制(Bank-level Partition Mechanism,简称BPM)方法相比较。诸如BPM的方法,将DRAM存储体分配给公共VM而不考虑在公共VM上执行的单独应用,这可能导致在公共VM上运行的应用之间的竞争。
计算性能改进源于减少或防止存储器争用,和/或减少或防止存储控制器交换,这是计算成本高昂的操作。
计算性能改进来自主机OS侧和/或客户OS侧。
在根据第二方面的所述方法的第一种可能的实现方式中,所述映射包括将托管公共VM的虚拟机监视器使用的客户物理地址映射到由存储控制器控制的DRAM的物理地址。
映射由软件执行,所述软件提供与硬件中实现的现有存储控制器的集成。使用软件进行映射有助于在现有计算设备上实现快速、轻松的部署。
在根据第一或第二方面的前述第一种实现方式的所述装置的第二种可能的实现方式中,所述虚拟机监视器用于将其使用的客户物理地址映射到由所述存储控制器控制的DRAM的物理地址。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第三种可能的实现方式中,所述处理器还用于,或所述方法还包括:将DRAM的多个存储体集群中的另一组集群分配给在主机计算设备的主机OS上运行的第二VM,其中第二VM将集群组中的每个成员映射到第二VM上执行的多个应用中的每个应用,其中所述集群组中的每个成员定义所述DRAM存储体,专供在第二VM上执行的每个映射的应用使用。
每个VM可以独立地执行其分配的集群到在所述相应VM上运行的应用的映射,这提高了整体存储性能和/或计算性能。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第四种可能的实现方式中,所述处理器还用于,或者所述方法还包括:将DRAM存储体集群唯一地映射到在主机计算设备的主机OS上运行的多个VM的每个VM上执行的多个应用的每个应用,其中在多个VM的每个VM上执行的每个应用排他地使用映射的集群。
为每个VM的每个应用进行唯一分配集群可防止或减少同一VM的应用与不同VM的应用之间的存储争用。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第五种可能的实现方式中,所述处理器还用于,或者所述方法还包括:根据调度策略将存储体集群映射到所述VM应用。
可以为计算环境选择调度策略以进一步提高计算性能。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第六种可能的实现方式中,所述处理器还用于,或者所述方法还包括:从实际物理地址中的主机OS使用的公共VM的客户物理地址中,选择指示存储体集群的相同比特位置。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第七种可能的实现方式中,所述处理器还用于,或者所述方法还包括:根据主机OS,检测与在公共VM上执行的多个应用的特定应用相关联的虚拟存储页面故障;识别映射到所述特定应用的存储体集群,并分配至少一个额外的物理存储页面至所述映射的存储体集群中的所述特定应用。
在VM端选择的集群可在虚拟机监视器端执行。使用分配给应用的集群在VM端执行集群选择,这允许虚拟机监视器从故障客户物理地址和关联的集群比特中找出所需的集群。
根据第一方面或第二方面的前述第七种方式,在所述装置或所述方法的第八种可能的实现方式中,所述处理器还用于,或者所述方法还包括:当识别到无效的存储体集群映射到所述特定应用时,从分配给所述公共VM的多个默认存储体集群中的一个,分配至少一个额外虚拟存储页面至所述特定应用。
根据第一方面或第二方面的前述第七或第八种方式,在所述装置或所述方法的第九种可能的实现方式中,通过检查指示客户物理地址中的存储体集群的比特,来识别映射到所述特定应用的存储体集群。
虚拟机监视器可以访问所述客户物理地址位,以确定所述客户物理地址和关联集群。
根据第一方面或第二方面的前述第七或第八种方式,在所述装置或所述方法的第十种可能的实现方式中,通过检查下列中的至少一个,来识别映射到所述特定应用的存储体集群:HPFAR寄存器、CR2寄存器和CR3寄存器。
所述虚拟机监视器可以访问所述寄存器的比特,以确定所述客户物理地址和关联集群。
在根据第一方面或根据第二方面所述方法,或根据第一或第二方面的任何前述方式,在所述装置的第十一种可能的实现方式中,所述多个应用中的至少一个应用被映射到DRAM的多个存储体集群,其中所述多个存储体集群仅供所述映射的至少一个应用使用。
需要大量存储器的应用可以映射到两个或更多个集群,而不是映射到单个集群,这样可以向所述应用提供足够的存储器,而不会由于存储器不足而发生故障,从而可以提高计算性能。
除非另有定义,否则本文所用的所有技术和科学术语都具有与本发明普通技术人员公知的含义相同的含义。与本文所描述的方法和材料类似或者相同的方法和材料可以用于本发明实施例的实践或测试,下文描述示例性的方法和/或材料。若存在冲突,则以包括定义在内的专利说明书为准。另外,材料、方法以及示例都只是用于说明,并非必要限定。
附图说明
此处仅作为示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的项目作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
在附图中:
图1是根据本发明的一些实施例,在公共VM上运行两个应用程序的同时实现BPM方法的计算系统中的数据流的示意图,以帮助理解所解决的技术问题;
图2是根据本发明的一些实施例,描述由存储控制器选择存储位的示例的示意图,以帮助理解所解决的技术问题;
图3是根据本发明的一些实施例,描述通过所述BPM方法将DRAM存储体分配给应用的示意图,以帮助理解所解决的技术问题;
图4是根据本发明的一些实施例,通过将所述DRAM的存储体集群映射到在VM上执行的每个应用,来管理DRAM的方法的流程图;
图5是根据本发明的一些实施例的系统的框图,该系统包括实现为计算设备的装置,该计算设备存储与存储控制器通信以管理DRAM的集群映射代码;
图6是根据本发明的一些实施例,描述所述的Qemu/KVM命令行选项的示意图;
图7是描述使用不考虑在VM上执行的应用的其它方法的页面故障处理的流程图,以帮助理解本发明的实现;
图8是根据本发明的一些实施例,描述计算设备的页面故障处理的流程图,其考虑了在VM上运行的应用;
图9是根据本发明的一些实施例,描述在Linux内核引导阶段客户虚拟地址与物理地址之间的示例性映射的示意图;
图10是根据本发明的一些实施例,描述在应用启动阶段客户虚拟地址页面的客户虚拟地址与物理地址之间的示例性映射的示意图。
具体实施方式
本发明的一些实施例涉及动态随机存取存储器(dynamic random accessmemory,简称DRAM),更具体地但不仅限于,涉及用于管理DRAM的方法和系统。
本发明的一些实施例的一方面涉及一种系统、装置和方法,其将所述DRAM的存储体集群映射到在主机计算设备的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtual machine,简称VM)上执行的应用。每个存储体集群由每个映射的应用排他地使用。
运行所述公共VM的虚拟机监视器,通过将每个集群的映射转换为提供给控制所述DRAM的存储控制器的物理地址,来执行所述DRAM的存储体集群的映射。所述虚拟机监视器将所述VM使用的客户物理地址映射到由所述存储控制器控制的所述DRAM的物理地址。
当多个VM在所述主机计算设备的所述主机OS上运行时,所述DRAM的一个或多个存储体集群被映射到在每个VM上执行的每个应用。每个VM上执行的每个应用排他地使用所述映射的集群。
本文描述的装置、系统和/或方法(例如,存储在由一个或多个处理器执行的数据存储设备中的代码指令)避免或减少了DRAM存储体的竞争,特别是在公共虚拟机(virtualmachine,简称VM)上执行的应用之间的竞争。在公共VM上执行的每个应用被映射到专门用于映射的应用的存储体集群,如果与将公共VM视为单个执行应用的存储体级别分区机制(Bank-level Partition Mechanism,简称BPM)方法相比较。诸如BPM的方法,将DRAM存储体分配给公共VM而不考虑在公共VM上执行的单独应用,这可能导致在公共VM上运行的应用之间的竞争。计算性能改进来自主机OS侧和/或客户OS侧。
现在简要讨论其它存储器管理方法,以帮助理解本文所解决的技术问题。为了避免存储体中的争用,当通过其它方法实现时,物理地址在整个可用物理地址范围上均匀分布。在这样的实现方式中,所述存储控制器试图最大化所述DRAM的利用率,但是也有一个副作用,即会导致应用性能不可预测。当多个应用并行访问相同的存储体时,允许应用访问所有存储体,会导致争用。例如,在多处理器系统中多个应用并行执行时,这种情况就可能发生。在这种情况下,所述存储控制器为访问同一存储体的每个应用交换相关的存储体内容。与同一应用重复访问同一存储体的情况相比,改变存储体内容是一项大开销的操作,因为每个应用都会在存储体上加载新的存储内容。相比之下,本文描述的系统、装置和/或方法,通过映射公共VM的应用,使用所述DRAM的不同存储体,来减少或防止争用。
所述BPM方法无法在虚拟环境中实现。所述BPM方法将所述VM视为一个整体,无法识别和考虑在所述VM上运行的单独应用。当客户操作系统(operating system,简称OS)尝试为客户OS上执行的应用使用存储体集群(在BPM方法中称为“着色”)时,所述BPM方法无法操作,因为所述存储控制器仅适用于物理地址,而所述VM使用的是所述存储控制器无法理解的客户物理地址。实际上,所述客户物理地址是单个进程虚拟地址(Virtual Address,简称VA)空间。所述VM被视为单个进程,这实际上意味着一旦所述主机OS启动新VM(即,新的单个进程)并基于所述BPM方法为所述进程选择存储体着色,则所述VM上运行的所有应用都映射为相同的存储体着色,无论客户OS使用何种存储体着色。
在详细解释本发明的至少一个实施例之前,应当理解,本发明不必将其应用限于下面描述中阐述的和/或在附图和/或举例中说明的部件和/或方法的结构和布置的细节。本发明可以有其它实施例或可以采用各种方式实践或执行。
本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可以包括具有计算机可读程序指令的一个(或多个)计算机可读存储介质,所述指令用于使处理器执行本发明的各个方面。
所述计算机可读存储介质可以是有形设备,所述有形设备可以保存和存储指令执行设备使用的指令。例如,所述计算机可读存储介质可以是但不限于电子存储设备、磁性存储设备、光存储设备、电磁存储设备、半导体存储设备或这几者的任意合适组合。
可以从计算机可读存储介质中将此处描述的计算机可读程序指令下载到各个计算/处理设备上,或通过网络下载到外部计算机或外部存储设备上,所述网络如因特网、局域网、广域网和/或无线网。
所述计算机可读程序指令可以完全在用户电脑上执行或部分在用户电脑上执行,或作为独立的软件包,部分在用户电脑上执行部分在远端电脑上执行,或完全在远端电脑或服务器上执行。在一种场景中,远端电脑可以通过任何类型的网络与用户电脑连接,包括局域网(local area network,简称LAN)或广域网(wide area network,简称WAN),或者可以(例如,使用因特网服务提供方提供的因特网)在外部电脑上建立所述连接。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field programmable gate array,简称FPGA)或可编程逻辑阵列(programmable logic array,简称PLA)等的电子电路可以利用计算机可读程序指令的状态信息执行所述计算机可读程序指令以个性化所述电子电路,以便执行本发明的各方面。
此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。此时,流程图或框图中的每个框都可以代表一个模块、分段或部分指令,所述部分指令包括一个或多个用于实现特定逻辑功能的可执行指令。在一些可选的实现方式中,框中指出的功能可以不按照图中的顺序实现。例如,事实上,连续示出的两个方块可以几乎同时执行,或者有时候,方块可以按照相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图中每一个框以及框图和/或流程图中框的组合可以由基于专用硬件的系统执行,所述系统执行指定的功能或动作,或者执行专用硬件和计算机指令的组合。
现在更详细地描述所述BPM方法,以帮助理解本文所述的系统、装置和/或方法(例如,存储在由一个或多个处理器执行的数据存储设备中的代码指令)所解决的技术问题。BPM使用软件(software,简称SW)测试程序来确定存储控制器中使用的物理地址位,并创建自己的基于SW的模型,该模型利用存储位的信息来分配应用,以排他地使用指定的存储位。在基于BPM SW的模型中,创建伙伴分配器中的存储池,使得每个池仅从存储控制器指定的存储体分配存储页面。使用新进程ID创建新进程时,会为其分配某些存储体着色并将其存储到内核进程结构中。当发生页面故障时,所述内核从所述进程ID识别分配的存储体着色,并将所述信息提供给伙伴分配器,该分配器在为所述进程分配物理存储页面时考虑所述分配的存储体颜色位。当两个应用被分配使用不同的存储体着色时,所述两个应用不会影响彼此的性能。
所述BPM为在标准操作系统上执行的两个或多个应用而设计。当所述两个或多个应用在公共VM上运行时,所述BPM方法无法操作(或效率低下)。本文所述的系统、装置和/或方法减少或避免了在公共VM上运行的两个或多个应用之间的DRAM存储器争用,同时保证了DRAM的操作效率(例如,防止或减少所述存储控制器的存储器交换)。
现在参考图1,图1是根据本发明的一些实施例,在公共VM上运行两个应用程序的同时实现BPM方法的计算系统中的数据流的示意图,以帮助理解所解决的技术问题。所述技术问题涉及所述主机操作系统(operating system,简称OS),所述主机操作系统未察觉一个或两个主机应用102A-B实际上是运行一个或多个VM应用的VM,因为当实现BPM时,对于主机OS,每个VM都被处理为单一的应用。
应用102A-B在客户OS 104上运行,客户OS 104在客户应用102A-B上使用存储体着色。客户OS 104在应用页表中分配客户物理页面。在106处,基于为所述客户应用分配的着色来选择所述客户物理页面。类似地,在106处,所述主机OS基于分配给主机系统上运行的应用的定义存储体着色,使用存储体着色来分配物理页面。在108处,客户OS应用102A-B被映射到公共存储体着色。如所讨论的,当BMP实现时,所述主机OS未察觉一个或两个主机应用102A-B实际上是运行一个或多个VM应用的VM,因为对于所述主机OS,每个VM都被处理为单一的应用。在110处,所述物理存储控制器基于物理地址位来映射存储体上的页面,因此,当实现BPM时,所述VM应用的存储体着色实际上由所述主机OS选择而不是由所述客户OS选择。
本文所述的系统、装置和/或方法通过将公共VM上运行的应用映射到不同的存储体来解决上述技术问题。可以使用与在主机OS上运行的映射应用的方法类似的方法来执行映射,从而提供类似的计算性能改进。计算性能改进源于减少或防止存储器争用,和/或减少或防止存储控制器交换,这是计算成本高昂的操作。
现在讨论所述BPM方法的更多细节。所述BPM扩展了Linux伙伴分配器以考虑存储体着色。所述内核使用伙伴系统来管理所述空闲物理页面,这些页面被组织为不同顺序的空闲列表(0~11)。所述BPM方法将原始空闲列表组织修改为层级结构,对于每个空闲页面列表顺序,BPM根据所述5个存储位重新组织空闲页面以形成32个着色空闲列表。每个过程都有自己的着色(即,一组存储体)。发生页面故障时,所述OS内核会搜索着色空闲列表并为所述进程分配页面。所述进程对应用是透明的,因此程序员不一定需要修改程序。BPM的基本操作是从物理地址读取指定的位并使用这些位来选择存储体着色。
现在参考图2,图2是根据本发明的一些实施例,描述由存储控制器选择存储位的示例的示意图,以帮助理解所解决的技术问题。通常,DRAM中的字节可由物理地址寻址,物理地址包括例如32位或64位(取决于CPU架构)。从所述存储控制器的角度来看,一些物理地址位具有特殊含义。例如,仅基于物理地址中的某些位来选择存储体。如图2中的示例所示,存储控制器使用位22-21和14来选择存储体。地址位15用于选择信道。有效地,在图2的情况下,存储控制器可以支持2^3=8个存储体和2^1=2个信道。选择存储体、行和信道的实际位模式取决于特定的硬件配置实现。
现在参考图3,图3是根据本发明的一些实施例,描述通过所述BPM方法将DRAM存储体分配给应用的示意图,以帮助理解所解决的技术问题。示意图302描绘了来自不同应用的存储器页面(每个应用由一个颜色表示:浅灰色、灰色和黑色)使用标准方法(即没有BPM方法)分配给存储体1、存储体2和存储体3。每个存储体由两个不同的应用使用。示意图304描绘了基于BPM方法将每个存储体分配给单个应用。
现在参考图4,图4是根据本发明的一些实施例,通过将所述DRAM的存储体集群映射到在VM上执行的每个应用,来管理DRAM的方法的流程图。同时参考图5,图5是根据本发明的一些实施例的系统500的框图,该系统包括实现为计算设备502的装置,该计算设备存储与存储控制器506通信以管理DRAM 508的集群映射代码504。集群映射代码504将存储体(为清楚起见,示出了四个存储体512A-D)集群(为清楚起见,示出了两个集群510A-B)映射到在公共VM(为清楚起见,示出了两个VM 516A-B)上执行的每个应用(为清楚起见,示出了四个应用514A-D)。当集群映射代码504由计算设备502处理器518执行时,执行图4所述的动作。
计算设备502可以被实现为例如以下多个中的一个:单个计算设备(例如,客户端)、并行布置的一组计算设备、网络服务器、web服务器、存储服务器、本地服务器、远程服务器、客户端、移动设备、固定设备、公用信息机、智能手机、笔记本电脑、平板电脑、可穿戴计算设备、眼镜计算设备、手表计算设备和台式计算机。
计算设备502包括一个或多个处理器518,实现为例如中央处理单元(centralprocessing unit,简称为CPU)、图形处理单元(graphics processing unit,简称为GPU)、现场可编程门阵列(field programmable gate array,简称为FPGA)、数字信号处理器(digital signal processor,简称为DSP)、专用集成电路(application specificintegrated circuit,简称为ASIC)、定制电路、用于与其它单元接口的处理器和/或专用硬件加速器。处理器518可以被实现为单个处理器、多核处理器和/或布置为用于并行处理的处理器集群(其可以包括同构和/或异构处理器架构)。注意,处理器518可以被设计为:在硬件中实现一个或多个特征,这些特征作为集群映射代码504存储(例如,在此描述为存储在代码存储设备520中)。
代码存储设备520存储可由处理器518实现的代码指令。代码存储设备520被实现为例如随机存取存储器(random access memory,简称为RAM)、只读存储器(read-onlymemory,简称为ROM)和/或存储设备,例如,非易失性存储器、磁介质、半导体存储设备、硬盘驱动器、可移动存储器和光学介质(例如,DVD和CD-ROM)。
代码存储设备520存储虚拟机监视器代码522,其运行一个或多个VM 516A-B。每个VM 516A-B可以独立地运行一个或多个应用。例如,如图所示,VM 516A运行应用514A-B,VM516B运行应用514C-D。
虚拟机监视器代码522与集群映射代码504通信,例如,集群映射代码502在虚拟机监视器代码522内实现和/或实现为由虚拟机监视器代码522调用的库和/或功能。
集群映射代码504与存储控制器506通信,存储控制器506控制DRAM 508以映射存储体512A-D的集群510A-B,如本文所述。存储控制器506可以硬件和/或软件的方式来实现。
计算设备502可以与用户界面524通信,所述用户界面524呈现数据和/或包括用于输入数据的机制,例如,以下中的一个或多个:触摸屏、显示器、键盘、鼠标、语音激活软件和麦克风。用户界面524可用于配置所述集群映射代码504的参数,和/或查看所述集群映射代码504的性能。
现在回到图4。参考图4描述的所述方法的动作由集群映射代码504执行,集群映射代码504可通过计算设备502的处理器518执行的虚拟机监视器代码522访问和/或与所述代码522集成。集群映射代码504对于在虚拟机监视器上运行的应用可以是透明的,使得程序员可以在不考虑集群映射代码504的情况下对应用进行编程。
在402处,执行集群映射代码504的处理器518将DRAM 508的存储体(例如,512A-D)的每个集群(例如,510A-B)映射到在主机计算设备502的主机操作系统(operatingsystem,简称OS)上运行的公共虚拟机(virtual machine,简称VM)(例如,516A)上执行的每个应用(例如,514A-B)。每个存储体集群专供每个映射的应用所使用。例如,应用514A被映射到集群510A并且排他地使用存储体512A-B,并且应用514B被映射到集群510B并且排他地使用存储体512C-D。
可选地,一个或多个应用被映射到所述DRAM的两个或更多个存储体集群。所述两个或更多个存储体集群仅由所述映射的应用使用。例如,应用514A可以被映射到集群510A和510B,使得应用514A可以排他地使用集群510A-B的存储体512A-D。需要大量存储器的应用可以映射到两个或更多个集群,而不是映射到单个集群,这样可以向所述应用提供足够的存储器,而不会由于存储器不足而发生故障,从而可以提高计算性能。
处理器518执行运行公共VM 516A的虚拟机监视器(实现为虚拟机监视器代码522)。所述虚拟机监视器通过将DRAM 508的集群的映射转换为提供给控制DRAM 508的存储控制器506的物理地址,来执行DRAM 508的每个集群的映射。
映射由软件执行,所述软件提供与硬件中实现的现有存储控制器的集成。使用软件进行映射有助于在现有计算设备上实现快速、轻松的部署。
虚拟机监视器522将所述虚拟机监视器使用的客户物理地址映射到由存储控制器506控制的DRAM 508的物理地址。所述主机OS侧的绝对物理地址通常与VM中的客户物理地址不同。所述主机OS可以使用第二级页表来将客户物理地址映射到主机物理地址。当寻址方案使用相同的存储体集群位(这里也称为存储体颜色位)时,例如图2中所示,所述主机OS和客户OS可以使用相同的存储体集群位。当所述主机OS从实际物理地址中选择时,所述VM可以从所述客户物理地址中选择相同的存储体集群位位置。存储体集群选择如图2所示,是基于地址位的特定子集,而不是整个地址。可以使用定义的内核命令行参数“存储体-集群-位”将所使用的存储体集群位传送到所述VM内核。
可以由VM内核执行存储体集群到VM的应用的映射。根据定义的调度策略(例如,循环法或应用程序提示机制)来执行所述映射。所述调度策略可以由用户(例如,使用用户界面524)定义和/或预定义(例如,由管理员预定义和/或使用软件的默认设置)。可以为计算环境选择调度策略以进一步提高计算性能。
为了限制VM应用的可用集群,可以为所述VM内核提供定义的内核命令行参数“存储体-集群-位”。所述VM内核可以基于定义的调度策略将集群分配给所述应用。将不同的VM分配给不同的集群,以避免来自不同VM的应用彼此干扰和/或引起存储争用。
从实际物理地址中的主机OS使用的公共VM的客户物理地址中,选择指示存储体集群的相同比特位置。
可选地,所述集群映射由主机和客户OS基于由BPM方法实现的Linux伙伴分配器中的存储体颜色位来表示。
可以使用实现的“存储体-集群-位”内核命令行参数来为VM 516A分配最大数量的可用集群,该参数设置VM可用的最大存储体数量,其表示可以映射到DRAM 508不同存储体上的最大应用数量。
在404,虚拟机管理器代码522可以执行第二(或更多数量的)公共VM 516B,其运行一个或多个应用(例如,514C-D)。
注意,指示主机OS将两个或更多个集群分配给每个执行的VM 516A-B。所述两个或更多个指定的集群为每个VM上两个或更多个应用的执行提供保证,其中,每个应用被分配至少一个专用集群。
可以使用两个示例性控制机制来控制VM的516A集群使用。第一控制机制用于向所述客户内核提供最大数量的集群,以供正在运行的应用使用。第二控制机制用于虚拟机监视器侧,以强制和限制所述VM的集群使用。所述控制机制可以按如下方式实现:
*“存储体-集群-位”客户内核命令行参数:指示所述客户内核,所述伙伴分配器应在VM内为应用使用哪些集群队列。这些集群是所述虚拟机监视器为相应VM强制执行和/或提供支持的集群。当所述VM决定使用除指定的“存储体-集群-位”之外的另一个集群(例如,由于内核缺陷)时,指示虚拟机监视器为故障客户物理地址选择默认集群队列。
*集群:为所述客户OS提供分配的集群,可选地使用定义的“存储体-集群-位”内核命令行参数。在Qemu中,“存储体-集群-位”命令行参数作为–append Qemu选项的扩展提供。Qemu中的所述选项指示为整个VM分配的集群,并通过IOTCL BANK_COLOR调用与KVM虚拟机监视器进行通信。KVM将集群信息存储到KVM结构中,其中还包括VM ID信息。
现在参考图6,图6是根据本发明的一些实施例,描述所述的Qemu/KVM命令行选项的示意图。
所述定义的Qemu选项“存储体-集群”设置可用于在每个VM上运行的所有应用可用的整个存储体的上限。不能向在每个VM上运行的应用分配比VM设置的上限值更多的存储体。
在406,将所述DRAM 508的另一组存储体集群分配给在主机计算设备502的主机OS上运行的第二VM 516B。将不同的VM分配给不同的集群,可以减少或避免在不同VM上运行的应用之间的存储器争用。例如,所述集群组510B-C被分配给第二VM 516B,集群510A被分配给第一VM 516A。每个VM可以独立地执行其分配的集群到在所述相应VM上运行的应用的映射,这提高了整体存储性能和/或计算性能。
第二VM 516B将集群组510B-C的每个成员映射到在所述第二VM 516B上执行的应用。所述集群组中的每个成员定义所述DRAM的存储体,供在第二VM 516B上执行的每个映射的应用专用。例如,集群510B(即,存储体512C-D)被映射到在第二VM 516B上运行的应用514C,并且集群510C(即,存储体512E-F)被映射到在第二VM 516B上运行的应用514D。
所述DRAM的存储体集群被唯一地映射到在主机计算设备的主机OS上运行的每个VM上执行的每个应用。每个VM上执行的每个应用排他地使用所述映射的集群。为每个VM的每个应用进行唯一分配集群可防止或减少同一VM的应用与不同VM的应用之间的存储争用。
当公共主机计算设备执行多个VM时,来自不同VM的应用被设置为使用不同的集群。每个VM设置有非重叠的存储体集群位,例如,使用定义的客户OS内核命令行参数(例如,“存储体-集群-位”)和Qemu“存储体-集群-选项”。
所述虚拟机监视器522包括代码,用于支持将不同的存储体集群510A-C指定给在每个VM 516A-B上运行的不同应用,这一过程可以按照以下示例方式实现:在所述VM创建阶段,所述定义的Qemu“存储体-集群”表示全部VM进程的可用存储体集群(包括在VM上运行的应用)。使用定义的IOCTL BANK_CLUSTER调用将所述可用的存储体集群提供给所述KVM虚拟机监视器。所述虚拟机监视器将所述存储体集群数据存储在线程的KVM结构或VCPU结构中。
在408,处理与在公共VM 516A上执行的特定应用(例如,514A或514B)相关联的虚拟存储页面故障。
基于上述示例性实现方式,在由于客户物理地址导致页面故障的情况下,第二级页面故障处理程序首先读取VM ID,以便将故障VM与关联的KVM结构相关联。根据所述处理器架构,可以从VTTRB寄存器读取VM IS。所获得的VM ID可以用于KVM/VCPU结构,该结构还包括VM ID,用于检查VM的集群位。
现在参考图7,图7是描述使用不考虑在VM上执行的应用的其它方法的页面故障处理的流程图,比如BPM方法,以帮助理解本发明的实现。
在702处,所述主机OS检测到页面故障。当进程尝试分配的存储大于所述主机OS分配给使用存储体着色的进程更多的存储时,例如,来自进程结构(比如“任务-结构”进程),就会发生页面故障。
在704处,检查分配给所述进程的进程ID和存储体着色。
在706,将所述进程ID和存储体着色提供给所述伙伴分配器,用于基于存储体着色从分配的存储体队列分配存储页面。当实现其它方法(例如,BPM方法)时,所述第二级页面故障处理程序在没有特定策略的情况下从伙伴分配器请求页面。所述伙伴分配器简单地从空闲列表返回尺寸合适的第一个可用页面。
现在参考图8,图8是根据本发明的一些实施例,描述计算设备502的页面故障处理的流程图,其考虑了在VM上运行的应用。所述主机OS包括代码指令,用于在检测到第二级页面故障之后,从客户物理地址中选择集群。在VM端选择的集群可在虚拟机监视器端执行。使用分配给应用的集群在VM端执行集群选择,这允许虚拟机监视器从故障客户物理地址和关联的集群比特中找出所需的集群。
在802处,计算设备502的主机OS检测到与在公共VM 516A上执行的特定应用(例如,514A或514B)相关联的虚拟存储页面故障。在VM上运行的应用,如果访问某个客户机物理地址,且该地址没有映射到VM的二级页表中的实际物理地址,则会导致页面故障。
在804处,识别映射到与虚拟存储页面故障相关联的所述特定应用的存储体集群。通过检查客户物理地址中指示存储体集群的位,可识别映射到所述特定应用的存储体集群。
通过检查故障客户物理地址寄存器,例如,HPFAR寄存器,CR2寄存器和/或CR3寄存器,识别映射到特定应用的存储体集群。虚拟机监视器可以访问所述客户物理地址位和/或所述寄存器,以确定所述客户物理地址和关联集群。
在806处,执行评估以确定是否在集群内有足够的存储体分配给运行导致虚拟存储页面故障的特定应用的VM。
替代地或另外地,所述评估确定何时识别无效的映射到特定应用的存储体集群。
在808处,评估确定存在足够的存储体,和/或映射到特定应用的存储体集群是有效的。至少一个额外的物理存储页面从映射的存储体集群分配给特定应用。
或者,在810处,剩余的存储体不足和/或映射到所述特定应用的存储体集群无效。从分配给公共VM的默认存储体集群,向所述特定应用分配至少一个额外虚拟存储页面。例如,所述主机OS将所述应用定向到由主机OS内核为VM选择的默认伙伴分配器队列。
以下是来自Palloc框架的用于基于存储体位选择页面的示例性代码。下面的伪代码实现图8中描绘的流程图:
在上面的Palloc算法中,用户定义了sysctl_palloc_mask-位掩码,用于选择与给定掩码匹配的页面。use_mc_xor-标识用于指示存储控制器是否使用xor方法从物理地址中选择存储体位。
现在参考图9,图9是根据本发明的一些实施例,描述在Linux内核引导阶段客户虚拟地址与物理地址之间的示例性映射的示意图。Linux内核902的客户虚拟地址被放置在伙伴分配器中,该伙伴分配器分配客户OS的缓冲器904。每个缓冲器904映射到客户物理地址906。所述客户物理地址906映射到伙伴分配器,所述伙伴分配器分配主机OS的缓冲器908。每个缓冲器908映射到物理地址910。
现在参考图10,图10是根据本发明的一些实施例,描述在应用启动阶段客户虚拟地址页面的客户虚拟地址与物理地址之间的示例性映射的示意图。在公共VM上运行的应用1002A-B和linux内核1002C的客户物理地址页面的客户物理地址被放置在伙伴分配器的相应队列1004中,所述伙伴分配器在客户OS中分配缓冲器。每个队列1004被映射到相应的客户物理地址1006。客户OS基于分配给客户OS侧的集群来映射不同伙伴分配器队列1004的客户应用1002A-B。所述客户物理地址1006被放置在伙伴分配器的相应缓冲器1008中,所述伙伴分配器分配主机OS的缓冲器1008。每个缓冲器1008被映射到相应的物理地址1010。
在研究下文附图和详细描述之后,本发明的其它系统、方法、特征和优点对于本领域技术人员来说是或变得显而易见的。希望所有这些其它系统、方法、特征和优点包含在本说明书中,在本发明的范围内,并且受所附权利要求的保护。
对本发明各个实施例的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。相比于市场上可找到的技术,选择此处使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其他技术人员理解此处公开的实施例。
应预计到,在从本申请案走向成熟的专利的有效期内,将开发许多相关DRAM、存储控制器和虚拟机,且术语DRAM、存储控制器和虚拟机的范围旨在先验地包括所有此类新技术。
本文所使用的术语“约”是指±10%。术语“包括”以及“有”表示“包括但不限于”。这个术语包括了术语“由……组成”以及“本质上由……组成”。
短语“主要由…组成”意指组成物或方法可以包含额外成分和/或步骤,但前提是所述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。
除非上下文中另有明确说明,此处使用的单数形式一个摂和所述摂包括复数含义。例如,术语“一个复合物”或“至少一个复合物”可以包括多个复合物,包括其混合物。
此处使用的词“示例性的”表示“作为一个例子、示例或说明”。任何“示例性的”实施例并不一定理解为优先于或优越于其它实施例,和/或并不排除其它实施例特点的结合。
此处使用的词语“可选地”表示“在一些实施例中提供且在其它实施例中没有提供”。本发明的任意特定的实施例可以包含多个“可选的”特征,除非这些特征相互矛盾。
在整个本申请案中,本发明的各种实施例可以范围格式呈现。应理解,范围格式的描述仅为了方便和简洁起见,并且不应该被解释为对本发明范围的固定限制。因此,对范围的描述应被认为是已经具体地公开所有可能的子范围以及所述范围内的个别数值。例如,对例如从1到6的范围的描述应被认为是已经具体地公开子范围,例如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等,以及所述范围内的个别数字,例如1、2、3、4、5和6。不管范围的宽度如何,这都适用。
当此处指出一个数字范围时,表示包含了在指出的这个范围内的任意所列举的数字(分数或整数)。短语“在第一个所指示的数和第二个所指示的数范围内”以及“从第一个所指示的数到第二个所指示的数范围内”和在这里互换使用,表示包括第一个和第二个所指示的数以及二者之间所有的分数和整数。
应了解,为简洁起见在单独实施例的上下文中描述的本发明的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的子组合或作为本发明的任何合适的其它实施例提供。在各个实施例的上下文中描述的某些特征未视为那些实施例的基本特征,除非没有这些元素所述实施例无效。

Claims (14)

1.一种用于管理动态随机存取存储器(dynamic random access memory,简称DRAM)(508)的装置(502),其特征在于,所述装置包括:
处理器(518),用于:
将所述DRAM(508)的多个存储体(512A-F)集群(510A-C)中的每个集群映射到在主机计算设备(502)的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtualmachine,简称VM)(516A)上执行的多个应用(514A-B)的每个应用,其中每个存储体集群专门用于每个映射的应用。
2.根据权利要求1所述的装置(502),其特征在于,所述处理器(518)执行运行所述公共VM(516A)的虚拟机监视器(522),所述虚拟机监视器(522)用于:通过将所述DRAM(508)的多个集群(510A-C)的每个集群的所述映射转换为物理地址,提供给控制所述DRAM(508)的存储控制器(506),来执行所述DRAM(508)的多个存储体(512A-F)集群(510A-C)中的每个集群的所述映射。
3.根据权利要求2所述的装置(502),其特征在于,所述虚拟机监视器(522)用于将其使用的客户物理地址映射到由所述存储控制器(506)控制的所述DRAM(508)的物理地址。
4.根据前述权利要求中任一项所述的装置(502),其特征在于,所述处理器(518)还用于:将所述DRAM(508)的所述多个存储体(512A-F)集群(510A-C)中的另一组集群分配给在所述主机计算设备(502)的所述主机OS上运行的第二VM(516B);
其中所述第二VM(516B)将集群组中的每个成员映射到所述第二VM(516B)上执行的多个应用(514C-D)中的每个应用,其中所述集群组中的每个成员定义所述DRAM(508)存储体,专供在所述第二VM(516B)上执行的每个映射的应用使用。
5.根据前述权利要求中任一项所述的装置(502),其特征在于,所述处理器(518)用于:将所述DRAM(508)存储体(512A-F)的集群(510A-C)唯一地映射到在所述主机计算设备(502)的所述主机OS上运行的多个VM(516A-B)的每个VM上执行的多个应用(514A-D)的每个应用,其中在多个VM的每个VM上执行的每个应用排他地使用映射的集群。
6.根据前述权利要求中任一项所述的装置(502),其特征在于,所述处理器(518)用于:根据调度策略将存储体(512A-F)的集群(510A-C)映射到所述VM(516A)的应用(514A-B)。
7.根据前述权利要求中任一项所述的装置(502),其特征在于,所述处理器(518)用于:从实际物理地址中的所述主机OS使用的所述公共VM(516A)的所述客户物理地址中,选择指示所述存储体(512A-F)的集群(510A-C)的相同比特位置。
8.根据前述权利要求中任一项所述的装置(502),其特征在于,所述处理器(518)用于:根据所述主机OS,检测与在所述公共VM(516A)上执行的所述多个应用(514A-B)的特定应用相关联的虚拟存储页面故障;
识别映射到所述特定应用的所述存储体集群,及
从所述映射的存储体集群分配至少一个额外的物理存储页面至所述特定应用。
9.根据权利要求8所述的装置(502),其特征在于,所述处理器(518)用于:
当识别到无效的存储体集群映射到所述特定应用时,从分配给所述公共VM(516A)的多个默认存储体集群中的一个,分配至少一个额外虚拟存储页面至所述特定应用。
10.根据权利要求8或9所述的装置(502),其特征在于,通过检查所述客户物理地址中指示所述存储体集群的位,可识别映射到所述特定应用的所述存储体集群。
11.根据权利要求8或9所述的装置(502),其特征在于,通过检查至少以下一项,可识别映射到所述特定应用的所述存储体集群:HPFAR寄存器、CR2寄存器和CR3寄存器。
12.根据前述权利要求中任一项所述的装置(502),其特征在于,所述多个应用(514A-B)中的至少一个应用被映射到所述DRAM(508)的存储体(512A-F)的多个集群(510A-C)。其中,所述存储体(512A-F)的多个集群(510A-C)仅由所述映射的至少一个应用排他地使用。
13.一种用于管理动态随机存取存储器(dynamic random access memory,简称DRAM)的方法,其特征在于,所述方法包括:
将所述DRAM的多个存储体集群中的每个集群映射到在主机计算设备的主机操作系统(operating system,简称OS)上运行的公共虚拟机(virtual machine,简称VM)上执行的多个应用的每个应用,其中每个存储体集群专门用于每个映射的应用(402)。
14.根据权利要求13所述的方法,其特征在于,所述映射包括将托管所述公共VM的虚拟机监视器使用的客户物理地址映射到由存储控制器控制的所述DRAM的物理地址。
CN201780087794.1A 2017-03-14 2017-03-14 用于管理动态随机存取存储器(dram)的系统和方法 Active CN110419025B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2017/055959 WO2018166583A1 (en) 2017-03-14 2017-03-14 Systems and methods for managing dynamic random access memory (dram)

Publications (2)

Publication Number Publication Date
CN110419025A true CN110419025A (zh) 2019-11-05
CN110419025B CN110419025B (zh) 2023-03-03

Family

ID=58347340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780087794.1A Active CN110419025B (zh) 2017-03-14 2017-03-14 用于管理动态随机存取存储器(dram)的系统和方法

Country Status (4)

Country Link
US (1) US20200004691A1 (zh)
EP (1) EP3593251B1 (zh)
CN (1) CN110419025B (zh)
WO (1) WO2018166583A1 (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520738A (zh) * 2008-02-27 2009-09-02 黄歆媚 基于设备访存管理技术的虚拟机系统及其设备访问方法
US20120246320A1 (en) * 2000-09-22 2012-09-27 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
US20130232486A1 (en) * 2012-03-01 2013-09-05 International Business Machines Corporation Cloud of Virtual Clouds for Increasing Isolation Among Execution Domains
US20140089725A1 (en) * 2012-09-27 2014-03-27 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US20140189195A1 (en) * 2006-04-27 2014-07-03 Vmware, Inc. Providing memory condition information to guest applications
CN104166624A (zh) * 2013-05-15 2014-11-26 上海贝尔股份有限公司 在虚拟环境下基于物理内存的内存优化方法和装置
CN104239238A (zh) * 2013-06-21 2014-12-24 国际商业机器公司 用于管理转换旁视缓冲的方法和装置
US20150379265A1 (en) * 2014-06-30 2015-12-31 Bitdefender IPR Management Ltd. Systems And Methods For Preventing Code Injection In Virtualized Environments
GB201521250D0 (en) * 2015-12-02 2016-01-13 Imagination Tech Ltd GPA virtualisation
US20160253216A1 (en) * 2015-02-26 2016-09-01 Strato Scale Ltd. Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference
US9491112B1 (en) * 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US20160378545A1 (en) * 2015-05-10 2016-12-29 Apl Software Inc. Methods and architecture for enhanced computer performance

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246320A1 (en) * 2000-09-22 2012-09-27 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
US20140189195A1 (en) * 2006-04-27 2014-07-03 Vmware, Inc. Providing memory condition information to guest applications
CN101520738A (zh) * 2008-02-27 2009-09-02 黄歆媚 基于设备访存管理技术的虚拟机系统及其设备访问方法
US20130232486A1 (en) * 2012-03-01 2013-09-05 International Business Machines Corporation Cloud of Virtual Clouds for Increasing Isolation Among Execution Domains
US20140089725A1 (en) * 2012-09-27 2014-03-27 International Business Machines Corporation Physical memory fault mitigation in a computing environment
CN104166624A (zh) * 2013-05-15 2014-11-26 上海贝尔股份有限公司 在虚拟环境下基于物理内存的内存优化方法和装置
CN104239238A (zh) * 2013-06-21 2014-12-24 国际商业机器公司 用于管理转换旁视缓冲的方法和装置
US20150379265A1 (en) * 2014-06-30 2015-12-31 Bitdefender IPR Management Ltd. Systems And Methods For Preventing Code Injection In Virtualized Environments
US9491112B1 (en) * 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US20160253216A1 (en) * 2015-02-26 2016-09-01 Strato Scale Ltd. Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference
US20160378545A1 (en) * 2015-05-10 2016-12-29 Apl Software Inc. Methods and architecture for enhanced computer performance
GB201521250D0 (en) * 2015-12-02 2016-01-13 Imagination Tech Ltd GPA virtualisation

Also Published As

Publication number Publication date
CN110419025B (zh) 2023-03-03
EP3593251A1 (en) 2020-01-15
US20200004691A1 (en) 2020-01-02
WO2018166583A1 (en) 2018-09-20
EP3593251B1 (en) 2021-11-24

Similar Documents

Publication Publication Date Title
US10877793B2 (en) Extending the base address register by modifying the number of read-only bits associated with a device to be presented to a guest operating system
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US10191759B2 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
KR100955111B1 (ko) 그래픽 어드레스 변환 방법 및 시스템
CN115344521A (zh) 可扩展输入/输出(i/o)虚拟化(s-iov)架构中的虚拟设备构成
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US11741019B2 (en) Memory pools in a memory model for a unified computing system
US9081694B2 (en) Systems and methods for asymmetric multiprocessing
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
CN108255598A (zh) 性能保证的虚拟化管理平台资源分配系统及方法
US10055136B2 (en) Maintaining guest input/output tables in swappable memory
US10853259B2 (en) Exitless extended page table switching for nested hypervisors
CN112368688B (zh) 作为用于虚拟化的gpu任务容器的vmid
US20170075706A1 (en) Using emulated input/output devices in virtual machine migration
US9766918B2 (en) Virtual system device identification using GPU to host bridge mapping
US9846592B2 (en) Versatile protected input/output device access and isolated servicing for virtual machines
US20150339145A1 (en) Virtual machine service system and virtual machine service providing method thereof
CN102662857A (zh) 用于对于存储进行虚拟化的设备和方法
US9558364B2 (en) Computing machine, access management method, and access management program
US10127064B2 (en) Read-only VM function chaining for secure hypervisor access
CN110419025B (zh) 用于管理动态随机存取存储器(dram)的系统和方法
CN107430521A (zh) 高效地址转换
US20240028361A1 (en) Virtualized cache allocation in a virtualized computing system
US11314522B2 (en) Fast boot resource allocation for virtual machines
US10180789B2 (en) Software control of state sets

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant