CN106575235B - 虚拟计算环境中的存储器和资源管理 - Google Patents

虚拟计算环境中的存储器和资源管理 Download PDF

Info

Publication number
CN106575235B
CN106575235B CN201480081150.8A CN201480081150A CN106575235B CN 106575235 B CN106575235 B CN 106575235B CN 201480081150 A CN201480081150 A CN 201480081150A CN 106575235 B CN106575235 B CN 106575235B
Authority
CN
China
Prior art keywords
memory page
host
memory
guest
instruction
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.)
Active
Application number
CN201480081150.8A
Other languages
English (en)
Other versions
CN106575235A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN106575235A publication Critical patent/CN106575235A/zh
Application granted granted Critical
Publication of CN106575235B publication Critical patent/CN106575235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

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

Abstract

本文公开了用于虚拟计算环境中的存储器和资源管理的系统和技术。例如,在一个实施例中,用于虚拟计算环境中的存储器管理的设备可包含:存储装置;存储器页面比较逻辑,耦合到存储装置,以确定用于虚拟计算环境中的客户机的存储在存储装置中的第一存储器页面指令等同于用于虚拟计算环境中的主机的存储在存储装置中的第二存储器页面指令,其中客户机由主机托管;以及合并逻辑,耦合到存储器页面比较逻辑,以响应于确定第一存储器页面等同于第二存储器页面而将第一存储器页面映射到第二存储器页面。可公开和/或要求保护其它实施例。

Description

虚拟计算环境中的存储器和资源管理
技术领域
本公开的实施例一般涉及计算装置领域,并且更具体地说,涉及硬件资源存取。
背景技术
一个或多个客户机在主机上执行的虚拟计算环境被普遍使用。为了改进客户机和主机操作的存储器存取时间,客户机和主机经常使用存储器高速缓存,并且通常已经共享了至少一些高速缓存空间。
发明内容
提供了一种用于虚拟计算环境中的存储器管理的设备,其包括:存储装置;耦合到所述存储装置的存储器页面比较逻辑,其用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;以及耦合到所述存储器页面比较逻辑的合并逻辑,其用于响应于确定所述第一存储器页面等同于所述第二存储器页面而将所述第一存储器页面映射到所述第二存储器页面。
附图说明
实施例通过结合附图的如下详细描述将容易理解。为了便于此描述,相似的附图标记标明相似的结构元件。在附图的各图中,实施例作为示例而非限制进行图示。
图1是按照各种实施例的虚拟计算环境的框图。
图2是按照各种实施例可包含在图1的虚拟计算环境的主机中的存储装置的框图。
图3是按照各种实施例具有多个主机和资源管理器以在多个客户端机器之间分配多个主机的虚拟计算环境的框图。
图4是按照各种实施例可包含在图1的虚拟计算环境中的存储器管理逻辑的框图。
图5是按照各种实施例用于分析存储器页面的过程的流程图。
图6是按照各种实施例用于比较客户机和主机存储器页面的过程的流程图。
图7是按照各种实施例用于将客户机存储器页面映射到主机存储器页面的过程的流程图。
图8是按照各种实施例可包含在图3的虚拟计算环境的资源管理器中的资源分配逻辑的框图。
图9是按照各种实施例用于在图3的虚拟计算环境中将客户机指配给主机的过程的流程图。
图10是按照各种实施例可包含在图3的虚拟计算环境的资源管理器中的存储器组织逻辑的框图。
图11是按照各种实施例其中客户机链接器与主机链接器通信的虚拟计算环境的框图。
图12图示了按照各种实施例包含在第一操作系统中的指令集布置和包含在第二操作系统中的指令集布置。
图13图示了按照各种实施例不同于图12布置的包含在图12的第一操作系统中的指令集布置和不同于图12布置的包含在第二操作系统中的指令集布置。
图14是按照各种实施例用于比较不同操作系统指令集的过程的流程图。
图15是按照各种实施例用于布置操作系统指令集的过程的流程图。
图16是可用于实践本文描述的各种实施例的示例计算装置的框图。
具体实施方式
本文公开了用于虚拟计算环境中的存储器和资源管理的各种系统和技术。例如,在一个实施例中,用于虚拟计算环境中的存储器管理的设备可包含:存储装置;存储器页面比较逻辑,耦合到所述存储装置,以确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;以及合并逻辑,耦合到存储器页面比较逻辑,以响应于确定第一存储器页面等同于第二存储器页面而将第一存储器页面映射到第二存储器页面。
在一些实施例中,用于虚拟计算环境中的资源分配的设备可包含:存储装置;存储器页面比较逻辑,确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及指配逻辑,耦合到所述存储器页面比较逻辑,以响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
在一些实施例中,用于虚拟计算环境中的存储器组织的设备可包含:存储装置;指令比较逻辑,耦合到所述存储装置,以确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一操作系统指令集等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二操作系统指令集,其中所述客户机未指配用于在所述主机上执行;以及布置逻辑,耦合到所述指令比较逻辑,以响应于所述第一操作系统指令集等同于所述第二操作系统指令集而布置操作系统指令集,所述操作系统指令集选自由所述第一操作系统指令集和所述第二操作系统指令集构成的组,使得所述操作系统指令集被包含在所述存储装置中的一个或多个存储器页面中,开始于所述一个或多个存储器页面的页面边界,并且结束于所述一个或多个存储器页面的页面边界。
本文公开的实施例的各种实施例可提供虚拟计算环境中的存储器高速缓存的改进管理。在常规虚拟计算环境中,不同客户机(执行不同功能)在操作期间经常换入和换出系统控制。对于客户机使用存储器高速缓存是当客户机被新“换入”(因为对高速缓存的存取比对主存储器的存取快,如所知的)时改进响应时间的常规技术。先前工作已经针对让类似客户机共享高速缓存以便改进高速缓存命中率,并最小化高速缓存的必要尺寸。
然而,先前未认识到,当主机和客户机换入和换出系统控制(例如响应于主机中断)时,高速缓存压力也发生。在常规虚拟计算环境中,客户机和主机各将它自己的指令拷贝存储在高速缓存中,并且从而对于另一个“污染”它。虽然增大高速缓存尺寸可帮助缓解高速缓存压力,但增大高速缓存尺寸还可要求增大管芯尺寸,并且可能不是可行的或者完整的方法。
本文公开的一些实施例将客户机与主机匹配,使得客户机运行在“类似”主机(即,具有公共操作系统指令的主机)上,并且因此需要在高速缓冲中仅具有公共指令的一个拷贝。在客户机与主机之间共享存储器页面可减轻由于客户机退出事件的处置而引起的高速缓存污染。具体地说,本文公开的系统和技术的一些实施例可将在客户机与主机之间共享的存储器页面合并在物理存储器中,使得客户机和主机当存取共享页面时都参考相同物理存储器页面。
此外,由于指令在页面级上读取,因此本文公开的实施例的各种实施例布置指令、存储指令和/或选择主机和客户机配对,使得主机和客户机尽可能多地共享公共整个存储器页面。本文公开的各种实施例可改进高速缓存局部性(例如基于客户机与主机之间的基于内容的共享),并且从而改进性能。本文公开的系统和技术的一些实施例当确定是否并且如何向主机指配客户机(例如在云计算环境中)时,比较机器与潜在客户机之间的存储器页面的共性,以当管理资源时将客户机匹配到主机。将客户机和主机与等同或类似的操作系统存储器页面(例如内核指令的存储器页面)配对,使得客户机和主机可共享任何改进性能。
本文公开的系统和技术的一些实施例可分析由主机和客户机的每个使用的指令集,并且可布置指令集(例如通过链接),使得客户机指令的整个存储器页面等同于主机指令的整个存储器页面(并且因此可容易地共享)。例如,可将客户机操作系统指令和主机操作系统指令开发和/或链接成对于某些功能使用等同指令集,并且指令可被编译成等同二进制代码,这个代码跨存储器页面具有相同分布。如下面所论述的,这可被称为“匹配页面粒度”。
当公共存储器页面对应于“热代码”时,标识托管客户机之间的公共存储器页面可能特别有益。本文所使用的“热代码”可指的是频繁调用的指令,并且可包含中断处置指令(例如中断服务例程)和页面故障处置指令。热代码的其它示例可包含但不限于某些库(例如存储器移动指令)、功率管理指令(例如从具体状态(诸如S3)重新开始)、处理器间通信指令、中央处理单元(CPU)管理指令(例如用于上下文切换、定时器管理、中断控制器配置等)。
在如下详细描述中,参考形成其一部分的附图,其中通篇相似的附图标记标明相似的部分,并且其中作为可实践的图示实施例示出。要理解到,可利用其它实施例,并且可在不脱离本公开范围的情况下进行结构或逻辑改变。
各种操作以最有助于理解所公开主题的方式,依次描述为多个分立动作或操作。然而,描述的次序不应该被视为暗示这些操作一定是次序相关的。具体地说,这些操作可以不按呈现的次序执行。所描述的操作可按与所描述的实施例不同的次序执行。可执行各种附加操作和/或在附加实施例中可省略所描述的操作。
为了本公开的目的,短语“A和/或B”意味着(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”意味着(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。描述可使用“在一个实施例中”或“在实施例中”的短语,它们可各指的是相同或不同实施例中的一个或多个实施例。而且,相对于本公开实施例所使用的术语“包括”、“包含”、“具有”等是同义词。
本文所使用的术语“逻辑”可指的是、作为其一部分或者包含专用集成电路(ASIC)、电子电路、处理器(共享、专用或组)和/或执行一个或多个软件或固件程序的存储器(共享、专用或组)、组合逻辑电路和/或提供所描述功能性的其它适合的硬件组件。本文公开的任何逻辑和计算装置都可包含或者可以使用存储装置以存储用于提供所描述的功能性的任何适合的数据和指令。本文所使用的“存储装置”可包含耦合到耦合的计算装置的公共计算装置或系统的一个或多个存储装置。存储装置可包含彼此本地的存储装置(例如包含在公共机壳中,或经由本地总线或其它通信路径与公共计算装置通信)和彼此远离的存储装置(例如包含在单独机壳中,或者经由长距离通信路径(诸如基于因特网的路径)通信)。
图1是按照各种实施例的虚拟计算环境100的框图。虚拟计算环境100可包含由主机102托管的客户机104。在一些实施例中,主机102可包含虚拟机管理器(VMM)110。VMM 110可充当客户机104与主机102的硬件资源之间的中介,正如通常所知的。VMM 110可管理客户机104的退出和重新开始,如下面更详细论述的。尽管在图1中仅示出单个客户机104,但这只是为了易于图示,并且主机102可托管在本文参考客户机104所论述的配置的两个或更多客户机。
虚拟计算环境100可基于任何适合的虚拟化架构。例如,在一些实施例中,虚拟计算环境可以是基于内核的虚拟机(KVM)环境。具有较高虚拟化开销的架构特别有益于本文公开的存储器和资源管理技术。例如,VMM 110拦截客户机104执行的实施例可引起额外的虚拟化开销(例如以附加客户机高速缓存污染的形式)。当客户机104的执行引起客户机104的频繁退出(污染高速缓存并且从而降低高速缓存命中率)时,这个开销可能特别重要。具有较高维度的客户机-物理存储页面表的实施例可引起额外虚拟化开销(例如,相对于二维页面表的三维页面表)。具有高速缓存尺寸限制的实施例也可引起附加虚拟化开销(并且可特别有益于降低高速缓存压力的改进存储器管理技术)。
VMM 110可以是类型2 VMM,其中VMM 110运行在常规操作系统环境或类型1 VMM内,其中VMM 110直接运行在主机硬件上。在后者的实施例中,主机操作系统可在单独有特权的虚拟机中运行在类型1 VMM顶上。此类实施例的示例是Xen管理程序。
主机102可包含存储装置106。存储装置106可存储用于客户机104的指令和用于主机102的指令。用于主机102的指令可包含用于VMM 110的指令。正如通常所知的,用于客户机104的指令和用于主机102的指令可被组织成存储器页面。下面参考图2论述存储装置106的各种实施例。
虚拟计算环境100还可包含存储器管理逻辑108。存储器管理逻辑108可耦合到存储装置106。在一些实施例(例如下面参考图4所论述的),存储器管理逻辑108可配置成确定用于客户机104的第一存储器页面指令(存储在存储装置106中)等同于用于主机102的第二存储器页面指令(存储在存储装置106中)。存储器管理逻辑108还可配置成响应于此类确定而将第一存储器页面映射到第二存储器页面(例如在页面表中)。下面参考图4-7论述存储器管理逻辑108和存储器管理技术的各种实施例。
图2是按照各种实施例的图1的虚拟计算环境100的主机102的存储装置106的框图。存储装置106可包含客户机存储器202,其可存储用于客户机104的指令。此类指令可包含操作系统(OS)指令210和其它指令212(例如应用指令)。操作系统指令210可包含用于执行客户机104的操作系统的指令(例如内核指令)。如本文所使用的“内核指令”可指的是涉及由运行在平台上的软件使用平台的硬件和其它资源的指令。内核指令的示例可包含分配处理器时间、存取存储器和执行输入/输出操作。内核可被包含在操作系统中,并且从而内核指令可以是操作系统指令。在一些实施例中,操作系统指令210可包含用于管理到客户机104的操作系统的中断的中断服务例程指令。客户机存储器202可包含若干物理存储装置的任何装置,并且存储在客户机存储器202中的指令可分布在若干存储器位置的任何位置上。
存储装置106还可包含主机存储器204,其可存储用于主机102的指令(例如用于VMM 110的指令)。此类指令可包含操作系统指令214(例如内核指令)和其它指令216。操作系统指令214可包含用于执行主机102的操作系统的指令。在一些实施例中,操作系统指令214可包含用于管理到主机102的操作系统的中断的中断服务例程(ISR)指令。主机存储器204可包含若干物理存储装置的任何装置,并且存储在主机存储器204中的指令可分布在若干存储器位置的任何位置上。
存储装置106还可包含存储器映射208。存储器映射208可以是存储在存储装置106中的数据结构,其将客户机存储器页面(例如对应于客户机虚拟机的虚拟存储器页面)映射到物理存储器页面(例如随机存取存储器(RAM)中的存储器页面)。在一些实施例中,存储器映射208可包含一个或多个页面表,其可包含将具体客户机存储器地址映射到物理存储器地址的页面表条目或首先从客户机虚拟地址映射到客户机存储器地址并且然后从客户机存储器地址映射到物理存储器地址的链锁映射方案。在一些实施例中,存储器映射208可包含一级或多级翻译后援缓冲器(TLB),其可以是用于快速存取客户机到物理存储器映射的当前使用的页面表条目的高速缓存。
存储装置106还可包含高速缓存206。高速缓存206可充当用于包含在客户机存储器202中的指令(例如操作系统指令210)和存储在主机存储器204中的指令(例如操作系统指令214)的中间存储位置。如本领域已知的,高速缓存206可提供比从“平均”存储器(例如客户机存储器202和主机存储器204)检索更快速地检索存储在其中的指令。在一些实施例中,单个高速缓存206可存储用于客户机104和主机102的指令。例如,单个高速缓存206可存储用于客户机104和VMM 110的指令。在一些实施例中,单个高速缓存206可存储客户机存储器202的其中一些操作系统指令210和主机存储器204的其中一些操作系统指令214。在一些实施例中,高速缓存206包含多个单独高速缓存。这多个单独高速缓存可包含专用于客户机104的一个或多个高速缓存、专用于主机102的一个或多个高速缓存和/或由客户机104和主机102共享的一个或多个高速缓存。高速缓存206可包含专用于不同类型数据的高速缓存,诸如指令高速缓存和数据高速缓存。本文公开的各种实施例聚焦于降低指令高速缓存中的高速缓存压力。
本文公开的各种实施例可用在虚拟计算环境中,其中响应于来自一个或多个客户端机器的请求而向主机客户机供应一个或多个主机。在一些此类环境中,主机可提供资源池,从中计算资源可被分配给客户端机器以执行请求的计算功能。此类环境可用于提供硬件作为服务,并且可被实现为云计算环境。
现在论述示例情形以图示本文论述的存储器和资源管理技术的各种实施例。如上面参考图1所指出的,VMM 110可管理客户机104的退出和重新开始。具体地说,客户机104的执行可由退出中断,例如当主机102执行敏感指令时。在退出时,控制可从客户机104传到VMM 110。例如,当在执行客户机104的ISR指令期间在主机102发生物理中断时,控制(例如主机硬件的中央处理单元的控制)可传到VMM 110,其然后可将控制交给主机102以按照主机ISR指令处理物理中断。在处理物理中断之后,控制可回到VMM 110,并且随即回到客户机104,由此重新开始客户机104。在此示例中,客户机ISR指令和主机ISR指令可位于存储装置320中的不同物理存储器页面中(例如分别在客户机存储器202和主机存储器204中)。因此,客户机ISR指令的拷贝和主机ISR指令的拷贝可被包含在高速缓存206中,如果客户机和主机ISR指令获取都发生的话。高速缓存必须足够大以容纳两个指令集,并且包含两个指令集可引入高速缓存压力(除了高速缓存获取成本之外)。
本文公开的各种实施例可迁移高速缓存压力,并且从而以各种方式降低上面情形的开销。例如,在一些实施例中,对于客户机和主机ISR指令,可使用相同物理存储器页面。在此类实施例中,处理硬件仅需要在高速缓存中保有ISR的一个拷贝,并且可通过避免附加高速缓存载荷并最小化高速缓存压力来改进性能。在另一示例中,主机和客户机操作系统可配置成使得具有尽可能多的公共存储器页面用于热代码(例如ISR指令),以便促进上面指出的存储器页面共享。在另一示例中,当主机和客户机操作系统不等同时,缓解高速缓存污染可通过修改用于客户机和主机中的热代码的存储器页面尽可能等同(例如具有页面对准和等同内容),以便促进至少一些存储器页面共享。在一些此类实施例中,客户机和主机链接器可协作以定位等同指令,并定位具有等同页面边界的等同指令,以促进存储器页面共享。下面更详细论述这些和其它实施例。
图3是按照各种实施例具有多个主机和资源管理器304以在多个客户端机器之间分配多个主机的虚拟计算环境300的框图。具体地说,虚拟计算环境300可包含主机318和302以及客户端机器310和314。尽管图3中示出了两个主机和两个客户端机器,但这只是为了便于图示,并且任何期望数量的主机(例如一个或多个)和任何期望数量的客户端机器(例如一个或多个)可包含在虚拟计算环境300中。
主机318和302可耦合到资源管理器304。资源管理器304也可耦合到客户端机器310和314。资源管理器304可包含配置成执行虚拟计算环境300内的资源管理功能的一个或多个计算装置。具体地说,资源管理器304可配置成从客户端机器接收供应请求,并且尝试通过相应地分配和配置主机资源来满足这些供应请求。来自客户端机器的供应请求(例如来自客户端机器310的供应请求312或来自客户端机器314的供应请求316)可包含要例示的客户机的规范(例如主机318或主机302)。规范例如可包含客户机的操作系统。例如,供应请求312可规定客户端机器310希望例示运行Linux操作系统的客户机。客户端机器310可向资源管理器304提供供应请求312,并且资源管理器304可确定硬件资源(在主机318和主机302之间)可用于托管此类客户机,并且如果是,则其中一个主机应该被分配用于托管客户机,并且由此满足供应请求312。资源管理器304也可配置成执行存储器组织功能以改进客户机当由主机托管时的性能,如下面所论述的。
虚拟计算环境300可包含存储装置320。存储装置320可包含一个或多个存储装置,所述一个或多个存储装置可被包含在虚拟计算环境300的任一组件中。例如,存储装置320可包含被包含在主机318和客户机302的每个中的存储装置(例如,上面参考主机102的存储装置106所论述的)。在一些实施例中,存储装置320可包含与主机318和302分开的存储装置(例如远离主机318和302的存储装置)。存储装置320可包含可分配给主机318和320的一个或多个进行托管的客户机的映像。例如,存储装置302可包含具有不同操作系统、不同软件包等的客户机的映像。响应于对于匹配这些映像之一的客户机的供应请求,资源管理器304可从存储装置320检索适当映像,并将其提供给主机之一以例示具有那个映像的客户机。
主机318和302可采取本文论述的主机102的任何实施例的形式。具体地说,主机318和302可包含存储装置(例如上面参考存储装置320所论述的)。存储装置320可存储用于主机318和302的指令(例如上面参考主机102和存储装置106所论述的)。当托管客户机时,主机318和302可与客户机交互,如参考主机102和客户机104所论述的,并且存储装置320可存储用于由主机318和302托管的客户机的指令。具体地说,在一些实施例中,用于主机318和302的指令可被存储在主机318和302本地的存储装置中。在托管客户机之前,用于那个客户机的指令可被包含在主机318和/或302远程存储或本地存储的客户机的映像中。在一些实施例中,存储器管理逻辑108(图1)可耦合到包含在存储装置320中的其中一些或所有存储装置320(例如主机318和302本地的存储装置),而在其它实施例中,存储器管理逻辑108可以不耦合到包含在存储装置320中的任一存储装置。
在一些实施例中,资源管理器304可包含资源分配逻辑306。资源分配逻辑306可耦合到存储装置320,并且可配置成在虚拟计算环境300的主机之间分配客户机以改进存储器存取性能。例如,当客户机未被指配给主机时,或者当客户机被指配给主机302时,资源分配逻辑306可配置成确定用于客户机的存储在存储装置320中的至少第一存储器页面指令等同于用于主机318的存储在存储装置320中的至少第二存储器页面指令。响应于这个确定,资源分配逻辑306可配置成指配客户机用于在主机318上执行(例如通过初始向主机318指配客户机或者将客户机从主机302重新指配给主机318)。在一些实施例中,比较的存储器页面指令可以是操作系统指令(例如内核指令)。下面参考图8-9论述资源分配逻辑306和资源分配技术的各种实施例。
在一些实施例中,资源管理器304可包含存储器组织逻辑308。存储器组织逻辑308可耦合到存储装置320,并且可配置成布置主机和/或客户机的操作系统指令以改进存储器存取性能。例如,当客户机未被指配给主机318时,存储器组织逻辑308可确定用于客户机的存储在存储装置320中的第一操作系统指令集等同于用于主机318的存储在存储装置320中的第二操作系统指令集。响应于此确定,存储器组织逻辑308可布置存储装置320内的第一和/或第二操作系统指令集,使得布置的那组操作系统指令被包含在存储装置320中的一个或多个存储器页面中,开始于一个或多个存储器页面的页面边界,并且结束于一个或多个存储器页面的页面边界。换言之,存储器组织逻辑308可布置“匹配”的操作系统指令集,使得它们占用整个存储器页面,并且使得对应页面具有等同内容。下面参考图10-15论述存储器组织逻辑308和存储器组织技术的各种实施例。
尽管图3的资源管理器304被图示为包含资源分配逻辑306和存储器组织逻辑308,但资源管理器304可仅包含资源分配逻辑306和存储器组织逻辑308之一,但不是二者。
图4是按照各种实施例可包含在图1的虚拟计算环境中的存储器管理逻辑108的框图。如上面所指出的,存储器管理逻辑108可与主机102的存储装置106耦合。
存储器管理逻辑108可包含存储器页面比较逻辑402。存储器页面比较逻辑402可耦合到存储装置106,并且可配置成确定用于客户机104的存储在存储装置106中的第一存储器页面指令等同于用于主机102的存储在存储装置106中的第二存储器页面指令。在一些实施例中,由存储器页面比较逻辑402分析的存储器页面指令可以是操作系统指令(例如,图2的客户机存储器202中的操作系统指令210和主机存储器204中的操作系统指令214)。例如,存储器页面指令可包含ISR指令。尽管“第一存储器页面”和“第二存储器页面”在本文中可以单数形式提及,但存储器页面比较逻辑402可以确定,用于客户机的指令的多个存储器页面等同于用于主机的指令的多个对应存储器页面。
在一些实施例中,存储器页面比较逻辑402可配置成存取指令的第一和第二存储器页面,并且彼此逐字符或者逐位比较包含在指令的第一和第二存储器页面中的所有数据以确定两个存储器页面是否等同。在其它实施例中,存储器页面比较逻辑402可配置成通过比较两个存储器页面的散列并确定比较的散列是相等的来确定第一存储器页面和第二存储器页面是相等的。本文所使用的“散列”可指的是从具有如下性质的数据集中导出的值:两个不同数据集的散列有可能本身不同。在一些实施例中,存储器页面比较逻辑402可存取第一和第二存储器页面,计算第一和第二存储器页面的每个的散列,并且然后比较散列;如果散列等同,则存储器页面比较逻辑402可以确定第一和第二存储器页面等同。存储器页面比较逻辑402可配置成将计算的散列以任何适合的数据结构存储在存储器(例如存储装置106)中,并使用任何适合的比较技术比较计算的散列。例如,用于存储散列的数据结构可以是具有冲突链、链接表、二进制树或红黑树的散列表。
在一些实施例中,存储器页面比较逻辑402可配置成用有关客户机104和主机102的附加信息的分析补充或替换其逐页面比较。例如,在存储装置106存储客户机104的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)和主机102的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)的实施例中,存储器页面比较逻辑402可配置成在执行逐页比较之前比较这些操作系统标识符。如果操作系统标识符等同,则存储器页面比较逻辑402可得出结论:等同的客户机/主机存储器页面的似然非常高。如果操作系统标识符不等同,但是类似(例如具有相同名称但不同版本号),则存储器页面比较逻辑402可存取存储在两个操作系统之间共享的指令标识符的存储装置106中的列表或其它数据结构(例如,之前由存储器页面比较逻辑402和另一机制所确定的)。存储器页面比较逻辑402可使用此列表或其它数据结构来聚焦其逐页比较,以免浪费时间比较不可能匹配的存储器页面。例如,如果操作系统标识符具有重大差异,则存储器页面比较逻辑402可聚焦在与硬件资源(例如中断控制器、定时器、中断服务例程等)相关的指令,因为操作相同硬件资源的指令不太可能改变。另一方面,如果操作系统标识符匹配,则存储器页面比较逻辑402也可检查实现“软件”特征(例如存储器分配、数据结构、系统调用等)的指令。
存储器页面比较逻辑402可配置成按照任何适合的调度或触发器条件集执行其确定。例如,在一些实施例中,存储器页面比较逻辑402可配置成响应于客户机104在主机102上的加载(例如重新开始、引导或重新引导)而进行其确定。在一些实施例中,存储器页面比较逻辑402可配置成响应于客户机存储器页面内容的修改而进行其确定。在一些实施例中,存储器页面比较逻辑402可配置成作为主机102和客户机104的存储器页面的周期扫描的一部分进行其确定。例如,存储器页面比较逻辑402可定期计算客户机104的存储器页面的散列,定期计算主机102的存储器页面的散列,并且定期比较散列(其中这些操作的周期性相同或者不同)。
存储器管理逻辑108还可包含合并逻辑404。合并逻辑404可耦合到存储器页面比较逻辑402,并且可配置成响应于存储器页面比较逻辑402确定用于客户机104的指令的第一存储器页面等同于用于主机102的指令的第二存储器页面而将第一存储器页面映射到第二存储器页面。在一些实施例中,将第一存储器页面映射到第二存储器页面可包含在页面表中将第一存储器页面映射到第二存储器页面。在一些实施例中,将第一存储器页面映射到第二存储器页面可包含将第一存储器页面标记为写时拷贝。将第一存储器页面标记为写时拷贝可包含将第一存储器页面标记为在页面表(例如主机页面表和扩展页面表(EPT))中只读。合并逻辑404可配置成例如响应于在主机102上加载客户机104、响应于客户机存储器页面内容的修改或者作为主机102和客户机104的存储器页面的周期扫描的一部分而执行其操作。
如果对“共享”物理存储器页面的写操作发生(例如从客户机104或主机102),则合并逻辑404可配置成通过将共享存储器页面拷贝到第二物理页面并将客户机存储器页面重新映射到第二物理页面来结束共享。
图5-7是按照各种实施例用于虚拟计算环境中的存储器管理的过程的流程图。为了便于图示,图5-7的过程可如存储器管理逻辑108相对于虚拟计算环境100中的主机102和客户机104所执行的描述,但任何适合的硬件都可配置成执行这些过程。
图5是按照各种实施例用于分析存储器页面的过程500的流程图。过程500可在存储器管理逻辑108(例如存储器页面比较逻辑402)配置成在确定客户机和主机存储器页面是否等同时比较客户机和主机存储器页面的散列的实施例中执行。过程500的操作可如存储器页面比较逻辑402所执行的论述,但如上面所指出的,任何适合的硬件都可配置成执行过程500。
过程500可开始于502,在此存储器页面比较逻辑402可选择存储器页面。在502选择的存储器页面可以是用于客户机104的指令的存储器页面或者用于主机102的指令的存储器页面。在502选择存储器页面可基于调度和/或在已知包含要在客户机104与主机102之间比较的指令(例如操作系统指令)的存储器页面的预定范围或集中按顺序进行。
在504,存储器页面比较逻辑402可计算在502选择的存储器页面散列。在一些实施例中,存储器页面比较逻辑402在504可仅计算散列,如果那个存储器页面的现有存储的散列比预定窗口老的话(并且从而倘若已经对存储器页面内容进行了改变则应该被“刷新”),或者如果存储器页面由于最后一个散列已知已经经历了内容上的改变的话。在一些实施例中,可能不存在选择的存储器页面的存储的散列。在一些实施例中,存储器页面比较逻辑402可计算选择的存储器页面的散列,不管是否存在现有存储的散列或者现有存储的散列多么流行。
在506,存储器页面比较逻辑402可将在504计算的散列存储在存储器中(例如存储装置106中)。如上面所指出的,存储器页面散列可被存储在任何适合的存储结构中(例如以便在客户机的指令的存储器页面的散列与主机的指令的存储器页面的散列之间进行比较)。
在508,存储器页面比较逻辑402可确定是否所有期望的存储器页面都已经被查看用于散列(或简单地散列)。此确定可包含确定是否已经到达了存储器页面的预定范围或集的结尾,并且已经查看了那个确定的范围或集中的所有存储器页面。如果存储器页面比较逻辑402在508确定仍有存储器页面要查看,则存储器页面比较逻辑402可返回到502,并选择附加存储器页面进行查看。如果存储器页面比较逻辑402在508确定已经查看了所有期望存储器页面,则过程500然后可结束。如上面所指出的,可按照任何期望调度对于各种存储器页面集重复过程500。
图6是按照各种实施例用于比较客户机和主机存储器页面的过程600的流程图。过程600可以在存储器管理逻辑108(例如存储器页面比较逻辑402)配置成在确定客户机和主机存储器页面是否等同时比较客户机和主机存储器页面的散列的实施例中执行(例如上面参考图5所论述的),但当存储器管理逻辑108配置成在非散列基础上比较客户机和主机存储器页面时可遵循类似过程(例如,通过用类似的适当操作替代下面参考604和606论述的操作)。过程600的操作可如存储器页面比较逻辑402所执行的论述,但如上面所指出的,任何适合的硬件都可配置成执行过程600。
过程600可开始于602,在此存储器页面比较逻辑402可选择客户机存储器页面和主机存储器页面。在602选择的存储器页面可基于调度和/或在已知包含要在客户机104与主机102之间比较的指令(例如操作系统指令)的存储器页面的预定范围或集中按顺序进行。可使用选择客户机/主机存储器页面对进行比较的任何适合的技术。在一些实施例中,存储器页面比较逻辑402可使用关于客户机和主机的操作系统的信息辅助602的选择。例如,存储器页面比较逻辑402可以比较客户机和主机的操作系统版本以确定操作系统是否等同或相关(并且从而有可能具有具体匹配的存储器页面),如上面所论述的。
在604,存储器页面比较逻辑402可存取在602选择的存储器页面散列。这些散列可能已经如上面参考图5所论述的生成,并且存储在存储器(例如存储装置106)中。在一些实施例中,602和604的操作可被组合,并且存储器页面比较逻辑402可通过选择并存取它们的对应存储的散列来选择客户机存储器页面和主机存储器页面。在一些实施例中,存储器页面比较逻辑402在604可仅存取散列,如果一个或两个现有存储的散列比预定窗口老的话(并且从而倘若已经对一个或两个存储器页面的内容进行了改变则应该“刷新”比较),或者如果一个或两个存储器页面由于最后一个比较已知已经经历了内容上的改变的话。在一些实施例中,存储器页面比较逻辑402可存取选择的存储器页面的散列,不管现有存储的散列多么流行。
在606,存储器页面比较逻辑402可以确定客户机存储器页面散列和主机存储器页面散列(在604存取的)是否等同。在一些实施例中,此确定可包含散列的逐字符或者逐位的比较。可使用任何适合的比较技术。如果存储器页面比较逻辑402在606确定散列不等同,则存储器页面比较逻辑402可前进到608,并将“不匹配”标识符存储在与客户机存储器页面和主机存储器页面关联的存储器中(例如存储装置106中)。这个“不匹配”标识符可采取任何适合的形式(例如二进制指示符“0”),并且可被存储在任何适合的数据结构(例如,客户机的散列的存储器页面对应于行而主机的散列的存储器页面对应于列的表)中,使得客户机存储器页面散列和主机存储器页面散列不等同的结果可被容易地确定。
如果存储器页面比较逻辑402在606确定散列等同,则存储器页面比较逻辑402可前进到610,并可将“匹配”标识符存储在与客户机存储器页面和主机存储器页面关联的存储器中(例如存储装置106中)。这个“匹配”标识符可采取任何适合的形式(例如二进制指示符“1”),并且可被存储在任何适合的数据结构(例如,客户机的散列的存储器页面对应于行而主机的散列的存储器页面对应于列的表)中,使得客户机存储器页面散列和主机存储器页面散列等同的结果可被容易地确定。
在612,存储器页面比较逻辑402可确定是否已经对于等同散列查看了所有期望存储器页面(例如所有期望对存储器页面)。此确定可包含确定是否已经到达了存储器页面的预定范围或集的结尾,并且已经查看了那个确定的范围或集中的所有存储器页面。如果存储器页面比较逻辑402在612确定仍有存储器页面要查看,则存储器页面比较逻辑402可返回到602,并选择附加存储器页面进行查看。如果存储器页面比较逻辑402在612确定已经查看了所有期望存储器页面,则过程600然后可结束。如上面所指出的,可按照任何期望调度对于各种存储器页面集重复过程600。执行过程600的调度可涉及或者可独立于执行过程500的调度。
图7是按照各种实施例用于将客户机存储器页面映射到主机存储器页面的过程700的流程图。过程700可在存储器管理逻辑108(例如合并逻辑404)配置成比较客户机和主机存储器页面的散列(例如上面参考图6和图7所论述的)或者配置成以任何其它方式比较客户机和主机存储器页面的实施例中执行。过程700的操作可如合并逻辑404所执行的论述,但如上面所指出的,任何适合的硬件都可配置成执行过程700。
过程700可开始于702,在此合并逻辑404可在客户机存储器页面和主机存储器页面之间选择存储的“匹配”标识符。如上面参考图6的608和610所论述的,指示是否客户机存储器页面被确定为等同于主机存储器页面的数据可以任何适合的数据结构(例如包含“匹配”和“不匹配”标识符的表)存储在存储器中(例如存储装置106中)。从而,在702,合并逻辑404可存取这个数据结构以选择“匹配”标识符(如果存在一个的话)。合并逻辑404可使用任何适合的技术或者遵循任何适合的模式来查看并选择存储的“匹配”标识符(例如逐元素查看)。
在704,合并逻辑404可标识与在702选择的“匹配”标识符关联的存储器页面。在一些实施例中,用于存储“匹配”和“不匹配”标识符(例如上面参考图6的608和610所论述的)的数据结构可包含到与“匹配”和“不匹配”标识符关联的客户机和主机存储器页面的链接或指针,使得关联的客户机和主机存储器页面可被容易地标识。在其它实施例中,可使用查找表或其它数据结构确定哪些客户机和主机存储器页面与具体“匹配”和“不匹配”标识符关联。在一些实施例中,合并逻辑404可在704通过标识客户机和主机存储器页面的每个的物理存储器地址来标识客户机和主机存储器页面。
在706,合并逻辑404可将客户机存储器页面(在704标识的并与在702选择的“匹配”标识符关联的)映射到主机存储器页面(在704标识的并与在702选择的“匹配”标识符关联的)。在一些实施例中,合并逻辑404可在706在页面表中将客户机存储器页面映射到主机存储器页面。在一些实施例中,合并逻辑404在将客户机存储器页面映射到主机存储器页面时,可将客户机存储器页面标记为只读。
在708,合并逻辑404可以确定是否已经查看了所有期望匹配(例如,与“匹配”标识符关联的所有期望对存储器页面)。此确定可包含确定是否已经到达了包含“匹配”标识符的数据结构的结尾,并且已经查看了那个数据结构中的所有匹配。如果合并逻辑404在708确定仍有匹配要查看,则合并逻辑404可返回到702,并选择另一“匹配”标识符进行查看。如果合并逻辑404在708确定已经查看了所有期望匹配,则过程700然后可结束。如上面所指出的,可按照任何期望调度对于各种匹配重复过程700。执行过程700的调度可涉及或者可独立于执行过程500和600的调度。
如上面所论述的,在一些实施例中,虚拟计算环境300可包含配置成执行资源管理功能的资源管理器304。资源管理器304可包含资源分配逻辑306和/或存储器组织逻辑308。资源分配逻辑306可配置成将客户机指配给主机以改进存储器存取性能。存储器组织逻辑308可配置成组织用于客户机和主机的指令集以改进存储器存取性能。
现在参考图8-9论述资源分配逻辑306和资源分配技术的各种实施例。起初,图8是按照各种实施例可包含在图3的虚拟计算环境300的资源管理器304中的资源分配逻辑306的框图。如上面所指出的,资源分配逻辑306可与存储装置320(其可包含主机318和302中的存储装置以及与主机318和302分开的存储装置)耦合。
资源分配逻辑306可包含存储器页面比较逻辑802。存储器页面比较逻辑802可耦合到存储装置320,并且基本上可采取上面参考存储器页面比较逻辑402(图4)论述的任何实施例的形式,但可配置成分析并比较用于客户机和候选主机的存储器页面指令。具体地说,在客户机已经被指配给虚拟计算环境300中的任何主机之前和/或当客户机已经被指配给虚拟计算环境300中的另一主机(例如主机302)时,存储器页面比较逻辑802可配置成比较用于客户机的存储器页面指令和用于主机318的存储器页面指令,。如本文所论述的,由存储器页面比较逻辑802执行的操作的目的可是,确定用于客户机的任何存储器页面指令是否等同于用于主机的任何存储器页面指令以确定客户机与主机之间指配的适合性。在一些实施例中,存储器管理逻辑108可相对于客户机和多于一个潜在主机执行其操作,以确定哪些潜在主机可最适合于托管客户机(例如由于等同存储器页面的最大数量、等同存储器页面的类型或者与存储器页面的等同性相关的其它准则)。这些操作可在客户机被指配给任何主机之前或者在客户机已经被指配给主机之后执行。在后一情况下,如果另一主机被标识为更适合于托管客户机,则客户机可被现场迁移到另一主机。
如上面参考存储器页面比较逻辑402所论述的,存储器页面比较逻辑802可配置成确定存储在存储装置320中的用于客户机的指令的第一存储器页面是否等同于存储在存储装置320中的用于主机(例如主机318或主机302)的指令的第二存储器页面。在一些实施例中,存储装置320可包含主机318和302本地的存储装置以及主机318和302远程的存储装置;在一些此类实施例中,客户机的存储器页面可被存储为“远程”存储装置中的映像,而主机的存储器页面可被存储在它们的相应“本地”存储装置中。在一些实施例中,主机的存储器页面的拷贝可被本地存储到客户机的存储器页面,以便由存储器页面比较逻辑802容易地比较。在一些实施例中,由存储器页面比较逻辑802分析的存储器页面指令可以是操作系统指令。例如,存储器页面指令可包含ISR指令。
如上面参考存储器页面比较逻辑402所论述的,在一些实施例中,存储器页面比较逻辑802可配置成用有关客户机和主机的附加信息的分析补充或替换其逐页面比较。例如,在存储装置320存储客户机的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)和主机302的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)的实施例中,存储器页面比较逻辑802可配置成在执行逐页比较之前比较这些操作系统标识符。如果操作系统标识符是等同的或相关的,如上面所论述的,则存储器页面比较逻辑402可得出结论:存在(或者可能存在)等同的并且相应地修改其比较的客户机和主机存储器页面。
在一些实施例中,存储器页面比较逻辑802可配置成存取指令的第一和第二存储器页面,并且彼此逐字符或者逐位比较包含在指令的第一和第二存储器页面中的所有数据以确定两个存储器页面是否等同。在其它实施例中,存储器页面比较逻辑802可配置成通过比较两个存储器页面的散列并确定比较的散列是相等的来确定第一存储器页面和第二存储器页面是相等的。具体地说,存储器页面比较逻辑802可配置成分别执行图5和图6的过程500和600,以便计算和比较存储器页面的散列(或以别的方式比较存储器页面)。尽管“第一存储器页面”和“第二存储器页面”在本文中可以单数形式提及,但存储器页面比较逻辑802可以确定,用于客户机的指令的多个存储器页面等同于用于主机的指令的多个对应存储器页面。
如上面参考存储器页面比较逻辑402所指出的,存储器页面比较逻辑402可配置成按照任何适合的调度或触发器条件集执行其确定。例如,在一些实施例中,存储器页面比较逻辑802可配置成响应于接收到对于客户机的供应请求(例如供应请求312或316)而进行其确定。在一些实施例中,存储器页面比较逻辑802可配置成作为主机318和302以及对于主机318和302请求的或者在主机318和302上托管的客户机的存储器页面的周期扫描的一部分进行其确定。
资源分配逻辑306还可包含指配逻辑804。指配逻辑804可耦合到存储器页面比较逻辑802,并且可配置成响应于存储器页面比较逻辑802确定第一存储器页面等同于第二存储器页面而指配客户机用于在主机上执行。在一些实施例中,存储器页面比较逻辑802对第一存储器页面等同于第二存储器页面的确定可包含在指配逻辑804对于是否满足指配准则集的分析中。具体地说,在一些实施例中,指配逻辑804可配置成从存储器页面比较逻辑802接收关于等同存储器页面的信息,并将该信息与指配准则集相比较。如果主机/客户机对满足指配准则,则主机可被指配给客户机。
指配准则可被存储在存储器(例如存储装置320)中,并且可由指配逻辑804在确定是否指配客户机用于在主机上托管时可存取。任何适合的准则都可包含在指配准则中。例如,在不同主机执行不同操作系统的虚拟计算环境300的实施例中,指配准则可规定,客户机要被分配给具有与客户机一样的主机操作系统指令存储器页面的主机。在一些实施例中,指配准则可规定,客户机要被分配给具有与客户机一样的大多数“热代码”存储器页面的主机。在一些实施例中,指配准则可包含要求另外“最优”主机(例如在与等同存储器页面相关的指配条件方面)也具有适合于托管客户机的其它特性的迁移条件(例如,可用的存储器和处理能力)。在主机已经在“次优”主机上执行的实施例中,指配逻辑804可通过现场迁移客户机来向另一“最优”主机指配客户机。指配逻辑804也可使用动态简档准则(诸如高速缓存命中率),以确定客户机到主机的当前指配有可能是次优的。
在一些实施例中,资源分配逻辑306可配置成尝试对于客户机和主机使用相同二进制。在一些实施例中,使用相同二进制的尝试可聚焦在至少对于主机和客户机的内核指令使用相同二进制。例如,资源分配逻辑306可配置成尝试将具有相同内核版本的客户机与主机匹配。
图9是按照各种实施例用于在图3的虚拟计算环境300中将客户机指配给主机的过程900的流程图。为了便于图示,图9的过程可如资源分配逻辑306(例如存储器页面比较逻辑802)和指配逻辑804相对于虚拟计算环境300中的主机318和客户机104所执行的描述,但任何适合的硬件都可配置成执行过程900。
在902,资源分配逻辑306(例如存储器页面比较逻辑802)可选择客户机。在902选择的客户机可被指配给不同于主机318的主机(例如主机302),或者可能已经是供应请求的主题,并且可能未指配。
在904,资源分配逻辑306(例如存储器页面比较逻辑802)可选择候选主机(在此论述中是主机318)。候选主机可以是当前未托管在902选择的客户机但可向其指配在902选择的客户机的主机。
在906,资源分配逻辑306(例如存储器页面比较逻辑802)可存取之前确定的存储器页面匹配集。存储器页面匹配可指示客户机的哪些存储器页面和主机318的哪些存储器页面被确定为等同。在一些实施例中,资源分配逻辑306可按照本文公开的任何技术(上面参考图5-6论述的过程)生成这个存储器页面匹配集。在一些实施例中,存储器页面匹配集可由其它逻辑生成。在906存取匹配可采取上面参考图7的702和704论述的任何实施例的形式。
在908,资源分配逻辑306(例如指配逻辑804)可以确定在906存取的存储器页面匹配是否满足指配准则。如上面所论述的,指配准则可包含用于确定客户机是否被适当地指配用于在主机318上执行的任何适合的一个或多个规则。
如果资源分配逻辑306在908确定,存储器页面匹配不满足指配准则,则资源分配逻辑306(例如指配逻辑804)可前进到910,并且报告指配准则未满足。此报告可被提供给虚拟计算环境300的系统管理员或者虚拟计算环境300的内部逻辑(资源管理器304的内部逻辑)。例如,在一些实施例中,报告可被提供给存储器页面比较逻辑802,其可配置成通过在相对于这个新候选发起过程900时选择另一候选主机进行响应。在一些实施例中,响应于这个报告,系统管理员可人工选择客户机可被指配给的主机。在一些实施例中,响应于这个报告,资源管理器304的其它逻辑可应用其它准则将客户机分配给适合的主机。在一些实施例中,支持可被提供给客户端机器(例如客户端机器310或314),其提供对于客户机的供应请求(例如供应请求312或316)。
如果资源分配逻辑306在908确定,存储器页面匹配确实满足指配准则,则资源分配逻辑306(例如指配逻辑804)可前进到912,并将客户机指配给主机318。在客户机之前被指配给另一主机的实施例中,912的指配可以是客户机的初始指配。在客户机之前被指配给另一主机的实施例中,912的指配可包含客户机到主机318的现场迁移。过程900然后可结束。
如上面所指出的,资源管理器304可包含存储器组织逻辑308。现在下面参考图10-15论述存储器组织逻辑308和存储器组织技术的各种实施例。起初,图10是按照各种实施例可包含在图3的虚拟计算环境300的资源管理器304中的存储器组织逻辑308的框图。如上面所指出的,存储器组织逻辑308可与存储装置320(其可包含主机318和302中的存储装置以及与主机318和302分开的存储装置)耦合。
存储器组织逻辑308可包含指令比较逻辑1002。指令比较逻辑1002可耦合到存储装置320,并且可配置成确定用于虚拟计算环境300中的客户机的存储在存储装置320中的第一操作系统指令集等同于用于虚拟计算环境中的主机(例如主机318或302)的存储在存储装置320中的第二操作系统指令集。在一些实施例中,指令比较逻辑1002可采取与上面参考存储器页面比较逻辑402(图4)或存储器页面比较逻辑802(图8)论述的任何实施例类似的形式,但可配置成分析并比较客户机和候选主机的各个指令和/或各组指令,而不是整个存储器页面。具体地说,在客户机已经被指配给虚拟计算环境300中的任何主机之前和/或当客户机已经被指配给虚拟计算环境300中的另一主机时,指令比较逻辑1002可配置成比较用于客户机的指令和用于候选主机的存储器页面指令。如本文所论述的,由指令比较逻辑1002执行的操作的目的可是,确定用于客户机的任何操作系统指令是否等同于用于主机的任何操作系统指令以确定如何最佳地布置客户机和/或主机的操作系统指令以实现客户机与主机之间的改进的存储器页面对准。在一些实施例中,存储器组织逻辑308可相对于客户机和多于一个潜在的主机执行其操作。
如上面所指出的,在一些实施例中,存储装置320可包含主机318和302本地的存储装置以及主机318和302远程的存储装置;在一些此类实施例中,客户机的指令可被存储为“远程”存储装置中的映像,而主机的指令可被存储在它们的相应“本地”存储装置中。在一些实施例中,主机的指令的拷贝可被本地存储到客户机的存储器页面,以便由指令比较逻辑1002容易地比较。在一些实施例中,如上面所指出的,由指令比较逻辑1002分析的指令可以是操作系统指令。例如,指令可包含ISR指令。
如上面参考存储器页面比较逻辑402和存储器页面比较逻辑802所论述的,在一些实施例中,指令比较逻辑1002可配置成用有关客户机和主机的附加信息的分析来补充或替换其逐指令或逐指令集的比较。例如,在存储装置320存储客户机的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)和主机302的操作系统的标识符(例如包含名称、版本号以及任何其它适合的标识信息)的实施例中,指令比较逻辑1002可配置成在执行指令比较之前比较这些操作系统标识符。如果操作系统标识符是等同的或相关的,如上面所论述的,则指令比较逻辑1002可得出结论:存在(或者可能存在)等同的并且相应地修改其比较的客户机和主机指令。
在一些实施例中,指令比较逻辑1002可配置成存取第一和第二指令集,并且彼此逐字符或者逐位比较包含在第一和第二指令集中的所有数据以确定两个指令集是否等同。在其它实施例中,指令比较逻辑1002可配置成通过比较两个指令集的散列并确定比较的散列是等同的来确定第一和第二指令集是等同的。具体地说,指令比较逻辑1002可配置成分别执行与图5和图6的过程500和600类似的过程,以计算和比较指令集的散列(或以别的方式比较指令集)。尽管“第一指令集”和“第二指令集”在本文可以单数提及,但指令比较逻辑1002可以确定用于客户机的多个指令集等同于用于主机的多个对应指令集(例如,如下面在图12和13的示例中所论述的)。
如上面参考存储器页面比较逻辑402和存储器页面比较逻辑802所指出的,指令比较逻辑402可配置成按照任何适合的调度或触发器条件集执行其确定。例如,在一些实施例中,指令比较逻辑1002可配置成响应于接收到对于客户机的供应请求(例如供应请求312或316)而进行其确定。在一些实施例中,存储器页面比较逻辑802可配置成作为主机318和302以及对于主机318和302请求的或者在主机318和302上托管的客户机的存储器页面的周期扫描的一部分进行其确定。在一些实施例中,指令比较逻辑1002可配置成:当具有之前未分析的操作系统的主机被引入虚拟计算环境300中时和/或当具有之前未分析的操作系统的客户机被引入虚拟计算环境300中时,执行其确定。
存储器组织逻辑308还可包含布置逻辑1004。布置逻辑1004可耦合到指令比较逻辑1002,并且可配置成响应于指令比较逻辑1002确定第一操作系统指令集等同于第二操作系统指令集而布置第一操作系统指令集和/或第二操作系统指令集,使得跨第一操作系统指令和/或第二操作系统指令集的存储器页面的分布更好地匹配。具体地说,在一些实施例中,在布置逻辑1004重新布置时,第一操作系统指令集和/或第二操作系统指令集可包含在存储装置320中的一个或多个存储器页面中,可开始于一个或多个存储器页面的页面边界,并且结束于一个或多个存储器页面的页面边界。布置第一指令集和/或第二指令集使得第一指令集和第二指令集占据整个存储器页面并且等同地分布在那些存储器页面内可允许在客户机与主机之间共享存储器页面,其中具有上面参考图1论述的伴随的存储器存取性能改进。重新布置指令以改进存储器页面之间的“匹配”使得客户机的整个存储器页面等同于主机的整个存储器页面在本文可被称为实现了匹配页面粒度。
在一些实施例中,指令布置逻辑1004可被包含在用于客户机的链接器中和/或用于主机的链接器中。本文所使用的“链接器”可指的是将指令组合到地址空间中的可执行程序中的逻辑集。在一些实施例中,链接器可组合由编译器生成的对象文件(以及来自库的对象)并在地址空间中布置对象。图11是按照各种实施例可包含在虚拟计算环境300中的虚拟计算环境1100的框图,其中客户机链接器1102与主机链接器1104通信。在一些实施例中,布置逻辑1004可被包含在客户机链接器1102中,并且布置逻辑1004可配置成对于期望存储器页面粒度布置用于客户机的指令。在一些此类实施例中,指令比较逻辑1002可配置成与主机链接器1104通信,以确定第一操作系统指令集等同于第二操作系统指令集。
在一些实施例中,布置逻辑1004可被包含在客户机链接器1102中,并且布置逻辑1004可配置成对于期望存储器页面粒度布置用于主机的指令。在一些此类实施例中,指令比较逻辑1002可配置成与客户机链接器1102通信,以确定第一操作系统指令集等同于第二操作系统指令集。在一些实施例中,客户机链接器1102和主机链接器1104可用布置逻辑1004配置,使得用于客户机的指令和用于主机的指令都可布置成使得进一步改进客户机与主机之间的匹配页面粒度。
在一些实施例中,存储器组织逻辑308可利用如下观察:典型的操作系统(像Linux)具有用于关键内核组件的相当稳定的代码基(诸如ISR代码和页面故障处置代码)。因此,那些操作系统的随后版本可利用这些相同关键内核组件,并且从而可服从于存储器组织技术,其中以匹配页面粒度选择和布置等同指令。在一些实施例中,开发人员可故意开发客户机操作系统内核和主机操作系统内核以使用等同源代码,并以匹配页面粒度编译等同二进制代码(例如至少对于热代码)。
图12和13图示了在存储器组织逻辑308的存储器组织操作之前(图12)和之后(图13)的两个不同操作系统的指令的各种布置。具体地说,图12图示了按照各种实施例包含在第一操作系统1212中的指令集布置1226和包含在第二操作系统1224中的指令集布置1228。第一操作系统1212例如可以是客户机的操作系统,并且第二操作系统1224例如可以是候选主机的操作系统。
布置1226可包含指令集A 1202、指令集B 1204、指令集C 1206、指令集D 1208和指令集E 1210。指令集1202-1210可被分布在示意显示的布置中的存储装置(例如存储装置320)中。布置1228可包含指令集D 1214、指令集F 1216、指令集G 1218、指令集A 1220和指令集H 1222。指令集1214-1222可被分布在示意显示的布置中的存储装置(例如存储装置320)中。当存储器组织逻辑308分析布置1226和1228时,指令比较逻辑1002可以确定,第一操作系统1212的指令集A 1202等同于第二操作系统1224的指令集A 1220,并且第一操作系统1212的指令集D 1208等同于第二操作系统1224的指令集D 1214。
在指令比较逻辑1002确定第一操作系统1212的某些指令集匹配第二操作系统1224的某些指令集时,布置逻辑1004(具有与第一操作系统1212关联的链接器中的和与第二操作系统1224关联的链接器中的副本)可重新布置第一操作系统1212和第二操作系统1224的指令集以改进匹配页面粒度。具体地说,图13图示了按照各种实施例不同于图12布置的包含在图12的第一操作系统1212中的指令集布置1326和不同于图12布置1228的包含在第二操作系统1224中的指令集布置1328。图13的布置1326和1328可表示在指令布置逻辑1004的操作之后的新布置。如在图13所显示的,在第一操作系统1212与第二操作系统1224之间等同的指令集(即指令集A 1202和1220以及指令集D 1208和1214)可被布置在物理存储器内,使得等同指令被等同地分布在存储器页面之间(例如相对于存储器页面边界)。具体地说,等同指令集可被布置成使得在第一操作系统1212与第二操作系统1224之间具有匹配页面粒度(如虚线框1226所指示的)。
在一些实施例中,客户机链接器和主机链接器可以通信,以协作地定位等同指令,并定位页面粒度中的等同指令(例如开始于页面边界并且结束于页面边界)。这些等同指令可形成自然区段,并且可与位于任意位置的其它对应指令链接。
图14-15是按照各种实施例用于虚拟计算环境中的存储器组织的过程的流程图。为了便于图示,图14-15的过程可如虚拟计算环境300中的存储器组织逻辑308所执行的描述,但任何适合的硬件都可配置成执行这些过程。
图14是按照各种实施例用于计算不同操作系统的指令集的过程1400的流程图。在各种实施例中,参考过程1400论述的第一和第二操作系统可对应于客户机的操作系统和候选主机的操作系统。过程1400的操作可如指令比较逻辑1002执行所执行的论述,但如上面所指出的,任何适合的硬件都可配置成执行过程1400。
过程1400可开始于1402,在此指令比较逻辑1002可选择用于第一操作系统的第一指令集。在1402选择的第一指令集可基于调度和/或在要在第一操作系统与第二操作系统之间进行比较的指令的预定范围或集中按顺序选择(下面参考1404论述)。在一些实施例中,第一指令集可以是由提供过程1400的比较的逻辑边界的注释或其它代码分离符划定的指令集。可使用选择指令集的任何适合的技术。在一些实施例中,指令比较逻辑1002可使用关于第一操作系统和第二操作系统的信息辅助1402的选择。例如,指令比较逻辑1002可以比较第一和第二操作系统的版本以确定操作系统是否等同或相关(并且从而有可能具有具体等同的指令),如上面所论述的。
在1404,指令比较逻辑1002可选择用于第二操作系统的第二指令集。在1404选择的第二指令集可基于调度和/或在要在第一操作系统(1402)与第二操作系统之间进行比较的指令的预定范围或集中按顺序选择。在一些实施例中,第二指令集可以是由提供过程1400的比较的逻辑边界的注释或其它代码分离符划定的指令集,但可以使用选择指令集的任何适合的技术。在一些实施例中,指令比较逻辑1002可使用关于第一操作系统和第二操作系统的信息辅助1402的选择,如上面参考1402所论述的。
在1406,指令比较逻辑1002可确定第一指令集(在1402选择的)和第二指令集(在1404选择的)是否等同。在一些实施例中,此确定可包含指令集的逐字符或逐位比较,或者可包含指令集的散列的比较,如上面参考存储器页面所论述的。可使用任何适合的比较技术。如果指令比较逻辑1002在1406确定指令集不等同,则指令比较逻辑1002可前进到1408,并将“不匹配”标识符存储在与第一指令集和第二指令集关联的存储器中(例如存储装置320中)。这个“不匹配”标识符可采取任何适合的形式(例如二进制指示符“0”),并且可被存储在任何适合的数据结构(例如,第一操作系统的指令集对应于行而第二操作系统的指令集对应于列的表)中,使得第一指令集和第二指令集的结果不等同的结果可被容易地确定。在一些实施例中,没有数据可被存储为确定第一和第二指令集不等同的结果,并且从而,1406的操作可以不执行。
如果指令比较逻辑1002在1406确定第一和第二指令集等同,则指令比较逻辑1002可前进到1410,并可将“匹配”标识符存储在与第一指令集和第二指令集关联的存储器中(例如存储装置320中)。这个“匹配”标识符可采取任何适合的形式(例如二进制指示符“1”),并且可被存储在任何适合的数据结构(例如,第一操作系统的指令集对应于行而第二操作系统的指令集对应于列的表)中,使得第一指令集和第二指令集等同的结果可被容易地确定。在一些实施例中,匹配标识符可在1408通过将等同指令集的存储器位置记录在存储装置320中的数据结构中进行存储(例如以便随后由布置逻辑1004存取)。
在1412,指令比较逻辑1002可确定是否已经对于等同性查看了所有期望指令集(例如所有期望对指令集)。此确定可包含确定是否已经到达了指令集的预定范围或集的结尾,并且已经查看了那个确定的范围或集中的所有指令集。如果指令比较逻辑1002在1412确定仍有指令集要查看,则指令比较逻辑1002可返回到1402,并选择附加指令集进行查看。如果指令比较逻辑1002在1412确定已经查看了所有期望指令集,则过程1400然后可结束。如上面所指出的,可按照任何期望调度对于各种指令集重复过程1400。
图15是按照各种实施例用于布置操作系统指令集的过程1500的流程图。在各种实施例中,参考过程1500论述的第一和第二操作系统(以及对应的第一和第二指令集)可对应于客户机的操作系统和候选主机的操作系统。过程1500的操作可如布置逻辑1004所执行的论述,但如上面所指出的,任何适合的硬件都可配置成执行过程1500。
过程1500可开始于1502,在此布置逻辑1004可在来自第一操作系统的第一指令集与来自第二操作系统的第二指令集之间选择存储的“匹配”标识符。如上面参考图14的1408和1410所论述的,指示第一和第二指令集是否被确定为等同的数据可以任何适合的数据结构(例如包含“匹配”和“不匹配”标识符的表)存储在存储器中(例如存储装置320中)。从而,在1502,布置逻辑1004可存取这个数据结构以选择“匹配”标识符(如果存在一个的话)。布置逻辑1004可使用任何适合的技术或者遵循任何适合的模式来查看并选择存储的“匹配”标识符(例如逐元素查看)。
在1504,布置逻辑1004可标识与在1502选择的“匹配”标识符关联的指令集。在一些实施例中,用于存储“匹配”和“不匹配”标识符(例如上面参考图14的1408和1410所论述)的数据结构可包含到与“匹配”和“不匹配”标识符关联的第一和第二指令集的链接或指针,使得关联的第一和第二指令集可被容易地标识。在其它实施例中,可使用查找表或其它数据结构确定哪个第一和第二指令集与具体“匹配”和“不匹配”标识符关联。在一些实施例中,布置逻辑1004可在1504通过标识第一和第二指令集的每个的物理存储器地址来标识第一和第二指令集。
在1506,布置逻辑1004可将第一指令集和/或第二指令集布置成具有匹配的页面粒度。如上面所论述的,布置逻辑1004可被包含在第一指令集的链接器中或第二指令集的链接器中;在此类实施例中,布置逻辑1004可布置关联的指令集,并且可与包含在副本链接器中的逻辑(例如,对于布置逻辑1004所描述的配置的布置逻辑)协调以将其它指令集布置成实现匹配的页面粒度。
在1508,布置逻辑1004可以确定是否已经查看了所有期望匹配(例如,与“匹配”标识符关联的所有期望对指令集)。此确定可包含确定是否已经到达了包含“匹配”标识符的数据结构的结尾,并且已经查看了那个数据结构中的所有匹配。如果布置逻辑1004在1508确定仍有匹配要查看,则布置逻辑1004可返回到1502,并选择另一“匹配”标识符进行查看。如果布置逻辑1004在1508确定已经查看了所有期望匹配,则过程1500然后可结束。如上面所指出的,可按照任何期望调度对于各种匹配重复过程1500。执行过程1500的调度可涉及或者可独立于执行过程1400的调度。
如上面所指出的,在虚拟计算环境中的不同客户机之间基于内容的页面共享机制之前已经用于减少了存储器使用,但在客户机与主机之间共享高速缓存的挑战之前未被识别或解决。相反,常规方法已将客户机和主机高速缓存共享视为相对次要的,因为共享高速缓存的脚印(例如VMM的脚印)可能相对小,并且从而没有技术已经有效地减轻了由客户机退出处置引起的高速缓存污染。本文公开的系统和技术可提供除由其它存储器管理技术可实现的那些(诸如高速缓存线对准,一起标识读大多数数据以及高速缓存预取)之外的性能改进,特别是当可用的高速缓存尺寸小时。
图16是可适合于实践各种公开的实施例的示例计算装置1600的框图。例如,计算装置1600可充当主机102、资源管理器304、主机318、主机302、客户端机器310和/或客户端机器314。在一些实施例中,计算装置1600的组件可跨多个物理装置外壳或位置分布,而在其它实施例中,计算装置1600的组件可被包含在单个外壳或位置中。
计算装置1600可包含若干组件,包含一个或多个处理器1604和至少一个通信芯片1606。在各种实施例中,处理器1604可包含处理器核。在各种实施例中,至少一个通信芯片1606还可物理耦合以及电耦合到处理器1604。在另外实现中,通信芯片1606可以是处理器1604的一部分。在各种实施例中,计算装置1600可包含印刷电路板(PCB)1602。对于这些实施例,处理器1604和通信芯片1606可置于其上。在替换实施例中,可不采用PCB 1602来耦合各种组件。
取决于其应用(例如存储器和资源管理应用),计算装置1600可包含可以物理耦合和电耦合或者可以不物理耦合和电耦合到PCB 1602的其它组件。这些其它组件包含但不限于随机存取存储器(RAM)1608、易失性存储器(诸如动态RAM(DRAM))、非易失性存储器(例如只读存储器1610,也称为“ROM”、一个或多个硬盘驱动器、一个或多个固态驱动器、一个或多个密致盘驱动器和/或一个或多个数字多功能盘驱动器)、闪存1612、输入/输出(I/O)控制器1614、数字信号处理器(未示出)、密码处理器(未示出)、图形处理器1616、一个或多个天线1618、触摸屏显示器1620、触摸屏控制器1622、其它显示器(诸如液晶显示器、阴极射线管显示器和电子墨水显示器,未示出)、电池1624、音频编解码器(未示出)、视频编解码器(未示出)、全球定位系统(GPS)装置1628、指南针1630、加速计(未示出)、陀螺仪(未示出)、扬声器1632、相机1634和大容量存储装置(诸如硬盘驱动器、固态驱动器、密致盘(CD)、数字多功能盘(DVD)(未示出)、任何其它期望的传感器(未示出)等等。在各种实施例中,处理器1604可与其它组件集成在同一管芯上,以形成片上系统(SoC)。本文论述的任何存储装置(例如存储装置106和存储装置320)都可包含参考图16论述的或者在图16中图示的任一个或多个存储装置。
在各种实施例中,易失性存储器(例如RAM 1608)、非易失性存储器(例如ROM1610)、闪存1612以及大容量存储装置可包含响应于一个或多个处理器1604的执行使计算装置1600实践本文描述的过程的所有方面或选择的方面的指令。例如,存储器组件(诸如易失性存储器(例如RAM 1608)、非易失性存储器(例如ROM 1610)、闪存1612以及大容量存储装置)的一个或多个可以是机器可读介质,其包含响应于一个或多个处理器1604的执行使计算装置1600实践本文描述的过程的所有方面或选择的方面的指令的暂时和/或永久(例如非暂时性)拷贝。计算装置1600可存取的存储器可包含在物理上是计算装置1600安装在其上的装置的一部分的一个或多个存储装置和/或由计算装置1600可存取但不一定是其一部分的一个或多个存储装置。例如,存储装置可由计算装置1600在网络上经由通信芯片1606存取。
通信芯片1606可实现有线和/或无线通信,以便向计算装置1600和从计算装置600传送数据。术语“无线”及其派生词可用于描述可通过使用通过非固态介质的调制的电磁辐射传递数据的电路、装置、系统、方法、技术、通信信道等。该术语并不暗指所关联的装置不包含任何导线,尽管在一些实施例中它们可能不包含导线。本文描述的其中许多实施例可与WiFi和3GPP/LTE通信系统一起使用,如上所述。然而,通信芯片1606可实现若干无线标准或协议中的任一个,包含但不限于IEEE 702.20、通用分组无线电服务(GPRS)、演进数据优化(Ev-DO)、演进的高速分组接入(HSPA+)、演进的高速下行链路分组接入(HSDPA+)、演进的高速上行链路分组接入(HSUPA+)、全球移动通信系统(GSM)、GSM演进的增强数据速率(EDGE)、码分多址(CDMA)、时分多址(TDMA)、数字增强的无绳电信(DECT)、蓝牙、它们的派生以及被指定为3G、4G、5G以及之外的任何其它无线协议。计算装置1600可包含多个通信芯片1606。例如,第一通信芯片1606可专用于较短程无线通信(诸如Wi-Fi和蓝牙),而第二通信芯片1606可专用于较长程无线通信(诸如GPS、EDGE、GPRS、 CDMA、WiMAX、LTE、Ev-DO及其它)。
在各种实现中,计算装置1600可以是膝上型计算机、上网本、笔记本、超级本、智能电话、计算平板、个人数字助理、超级移动PC、移动电话、桌上型计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制单元(例如游戏控制台)、数码相机、便携式音乐播放器或数字视频记录器。在另外实现中,计算装置1600可以是处理数据的任何其它电子装置。
如下段落描述了各种实施例的示例。
示例1是用于虚拟计算环境中的存储器管理的设备,包括:存储装置; 存储器页面比较逻辑,耦合到所述存储装置,以确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;以及 合并逻辑,耦合到存储器页面比较逻辑,以响应于确定第一存储器页面等同于第二存储器页面而将第一存储器页面映射到第二存储器页面。
示例2可包含示例1的主题,并且可进一步规定:第一存储器页面和所述第二存储器页面包括中断服务例程指令。
示例3可包含示例1-2中任一示例的主题,并且可进一步规定:确定所述第一存储器页面等同于所述第二存储器页面包括确定所述第一存储器页面的散列等同于所述第二存储器页面的散列。
示例4可包含示例1-3中任一示例的主题,并且可进一步规定:合并逻辑进一步将所述第一存储器页面标记为只读。
示例5可包含示例1-4中任一示例的主题,并且可进一步规定:将第一存储器页面映射到第二存储器页面包括在页面表中将所述第一存储器页面映射到第二存储器页面。
示例6可包含示例1-5中任一示例的主题,并且可进一步规定:所述存储器页面比较逻辑响应于所述客户机的加载而确定所述第一存储器页面等同于所述第二存储器页面。
示例7可包含示例1-6中任一示例的主题,并且可进一步规定:存储器页面比较逻辑作为所述第一存储器页面和所述第二存储器页面的周期扫描的一部分确定所述第一存储器页面等同于所述第二存储器页面。
示例8是用于虚拟计算环境中资源分配的设备,包括:存储装置;存储器页面比较逻辑,确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及指配逻辑,耦合到所述存储器页面比较逻辑,以响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
示例9可包含示例8的主题,并且可进一步规定:确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令包括确定用于所述客户机的存储在所述存储装置中的多个存储器页面指令等同于用于所述主机的存储在所述存储装置中的对应多个存储器页面指令。
示例10可包含示例8-9中任一示例的主题,并且可进一步规定:所述第一存储器页面指令和所述第二存储器页面指令是内核指令。
示例11可包含示例8-10中任一示例的主题,并且可进一步规定:指配所述客户机用于在所述主机上执行包含将所述客户机现场迁移到所述主机。
示例12可包含示例8-11中任一示例的主题,并且可进一步规定:确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令包含比较所述客户机的操作系统版本与所述主机的操作系统版本。
示例13是用于虚拟计算环境中存储器组织的设备,包括:存储装置; 指令比较逻辑,耦合到所述存储装置,以确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一操作系统指令集等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二操作系统指令集,其中所述客户机未指配用于在所述主机上执行;以及布置逻辑,耦合到所述指令比较逻辑,以响应于所述第一操作系统指令集等同于所述第二操作系统指令集而布置操作系统指令集,所述操作系统指令集选自由所述第一操作系统指令集和所述第二操作系统指令集构成的组,使得所述操作系统指令集被包含在所述存储装置中的一个或多个存储器页面中,开始于所述一个或多个存储器页面的页面边界,并且结束于所述一个或多个存储器页面的页面边界。
示例14可包含示例13的主题,并且可进一步包含:存储器页面比较逻辑,确定用于所述客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及指配逻辑,耦合到所述存储器页面比较逻辑,以响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
示例15可包含示例13-14中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第一操作系统指令集,并且所述布置逻辑被包含在所述客户机的链接器中。
示例16可包含示例15的主题,并且可进一步规定:所述指令比较逻辑与所述主机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
示例17可包含示例13-16中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第二操作系统指令集,并且所述布置逻辑被包含在所述主机的链接器中。
示例18可包含示例17的主题,并且可进一步规定:所述指令比较逻辑与所述客户机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
示例19是用于虚拟计算环境中的存储器管理的方法,包括:确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;响应于确定所述第一存储器页面等同于所述第二存储器页面而将所述第一存储器页面映射到所述第二存储器页面。
示例20可包含示例19的主题,并且可进一步规定:第一存储器页面和所述第二存储器页面包括中断服务例程指令。
示例21可包含示例19-20中任一示例的主题,并且可进一步规定:确定所述第一存储器页面等同于所述第二存储器页面包括确定所述第一存储器页面的散列等同于所述第二存储器页面的散列。
示例22可包含示例19-21中任一示例的主题,并且可进一步包含:将第一存储器页面标记为只读。
示例23可包含示例19-22中任一示例的主题,并且可进一步规定:将所述第一存储器页面映射到所述第二存储器页面包括在页面表中将所述第一存储器页面映射到第二存储器页面。
示例24可包含示例19-23中任一示例的主题,并且可进一步规定:确定第一存储器页面等同于第二存储器页面响应于客户机的加载而执行。
示例25可包含示例19-24中任一示例的主题,并且可进一步规定:确定第一存储器页面等同于第二存储器页面作为第一存储器页面和第二存储器页面的周期扫描的一部分执行。
示例26是用于虚拟计算环境中资源分配的方法,包括:确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
示例27可包含示例26的主题,并且可进一步规定:确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令包括确定用于所述客户机的存储在所述存储装置中的多个存储器页面指令等同于用于所述主机的存储在所述存储装置中的对应多个存储器页面指令。
示例28可包含示例26-27中任一示例的主题,并且可进一步规定:所述第一存储器页面指令和所述第二存储器页面指令是内核指令。
示例29可包含示例26-28中任一示例的主题,并且可进一步规定:指配所述客户机用于在所述主机上执行包括将所述客户机现场迁移到所述主机。
示例30可包含示例26-29中任一示例的主题,并且可进一步规定:确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令包括比较所述客户机的操作系统版本与所述主机的操作系统版本。
示例31是用于虚拟计算环境中存储器组织的方法,包括:确定用于虚拟计算环境中的客户机的存储在存储装置中的第一操作系统指令集等同于用于虚拟计算环境中的主机的存储在存储装置中的第二操作系统指令集的部件,其中所述客户机不指配用于在主机上执行;以及响应于所述第一操作系统指令集等同于所述第二操作系统指令集而布置操作系统指令集,所述操作系统指令集选自由所述第一操作系统指令集和所述第二操作系统指令集构成的组,使得所述操作系统指令集被包含在所述存储装置中的一个或多个存储器页面中,开始于所述一个或多个存储器页面的页面边界,并且结束于所述一个或多个存储器页面的页面边界。
示例32可包含示例31的主题,并且可进一步包含:确定用于所述客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
示例33可包含示例31-32中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第一操作系统指令集,并且布置所述操作系统指令集由所述客户机的链接器执行。
示例34可包含示例33的主题,并且可进一步包含:与所述主机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
示例35可包含示例31-34中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第二操作系统指令集,并且布置所述操作系统指令集由所述主机的链接器执行。
示例36可包含示例35的主题,并且可进一步包含:与所述客户机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
示例37是一个或多个计算机可读介质,其上具有指令,所述指令响应于由计算装置的一个或多个处理装置执行而使所述计算装置执行如权利要求19-36中任一项所述的方法。
示例38是用于虚拟计算环境中的存储器管理的设备,包括:用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令的部件,其中所述客户机由所述主机托管;用于响应于确定所述第一存储器页面等同于所述第二存储器页面而将所述第一存储器页面映射到所述第二存储器页面的部件。
示例39可包含示例38的主题,并且可进一步规定:第一存储器页面和所述第二存储器页面包括中断服务例程指令。
示例40可包含示例38-38中任一示例的主题,并且可进一步规定:用于确定所述第一存储器页面等同于所述第二存储器页面的部件包括用于确定所述第一存储器页面的散列等同于所述第二存储器页面的散列的部件。
示例41可包含示例38-40中任一示例的主题,并且可进一步包含:用于将第一存储器页面标记为只读的部件。
示例42可包含示例38-41中任一示例的主题,并且可进一步规定:用于将所述第一存储器页面映射到所述第二存储器页面的部件包括用于在页面表中将所述第一存储器页面映射到第二存储器页面的部件。
示例43可包含示例38-42中任一示例的主题,并且可进一步规定:用于确定第一存储器页面等同于第二存储器页面的部件响应于客户机的加载而执行确定。
示例44可包含示例38-43中任一示例的主题,并且可进一步规定:用于确定第一存储器页面等同于第二存储器页面的部件作为第一存储器页面和第二存储器页面的周期扫描的一部分执行确定。
示例45是用于虚拟计算环境中资源分配的设备,包括:用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的至少第二存储器页面指令的部件,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及用于响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行的部件。
示例46可包含示例45的主题,并且可进一步规定:用于确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令的部件包括用于确定用于所述客户机的存储在所述存储装置中的多个存储器页面指令等同于用于所述主机的存储在所述存储装置中的对应多个存储器页面指令的部件。
示例47可包含示例45-46中任一示例的主题,并且可进一步规定:所述第一存储器页面指令和所述第二存储器页面指令是内核指令。
示例48可包含示例45-47中任一示例的主题,并且可进一步规定:用于指配客户机用于在主机上执行的部件包括用于将所述客户机现场迁移到主机的部件。
示例49可包含示例45-48中任一示例的主题,并且可进一步规定:用于确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令的部件包括用于比较所述客户机的操作系统版本与所述主机的操作系统版本的部件。
示例50是用于虚拟计算环境中存储器组织的设备,包括:用于确定用于虚拟计算环境中的客户机的存储在存储装置中的第一操作系统指令集等同于用于虚拟计算环境中的主机的存储在存储装置中的第二操作系统指令集的部件,其中所述客户机不指配用于在主机上执行;以及用于响应于所述第一操作系统指令集等同于所述第二操作系统指令集而布置操作系统指令集的部件,所述操作系统指令集选自由所述第一操作系统指令集和所述第二操作系统指令集构成的组,使得所述操作系统指令集被包含在所述存储装置中的一个或多个存储器页面中,开始于所述一个或多个存储器页面的页面边界,并且结束于所述一个或多个存储器页面的页面边界。
示例51可包含示例50的主题,并且可进一步包含:用于确定用于所述客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述主机的存储在所述存储装置中的至少第二存储器页面指令的部件,其中所述客户机未指配给主机或指配给与所述主机不同的主机;以及用于响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行的部件。
示例52可包含示例50-51中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第一操作系统指令集,并且用于布置所述操作系统指令集的部件是所述客户机的链接器。
示例53可包含示例52的主题,并且可进一步包含:用于与所述主机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集的部件。
示例54可包含示例50-53中任一示例的主题,并且可进一步规定:所述操作系统指令集包含所述第二操作系统指令集,并且用于布置所述操作系统指令集的部件是所述主机的链接器。
示例55可包含示例54的主题,并且可进一步包含:用于与所述客户机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集的部件。

Claims (31)

1.一种用于虚拟计算环境中的存储器管理的设备,包括:
存储装置;
耦合到所述存储装置的存储器页面比较逻辑,用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;以及
耦合到所述存储器页面比较逻辑的合并逻辑,用于响应于确定所述第一存储器页面等同于所述第二存储器页面而将所述第一存储器页面映射到所述第二存储器页面以促使所述第一存储器页面指令的写时拷贝在所述客户机和所述主机之间共享。
2.如权利要求1所述的设备,其中所述第一存储器页面和所述第二存储器页面包括中断服务例程指令。
3.如权利要求1所述的设备,其中确定所述第一存储器页面等同于所述第二存储器页面包括确定所述第一存储器页面的散列等同于所述第二存储器页面的散列。
4.如权利要求1所述的设备,其中所述合并逻辑进一步将所述第一存储器页面标记为只读。
5.如权利要求1所述的设备,其中将所述第一存储器页面映射到所述第二存储器页面包括在页面表中将所述第一存储器页面映射到第二存储器页面。
6.如权利要求1所述的设备,其中所述存储器页面比较逻辑将响应于所述客户机的加载而确定所述第一存储器页面等同于所述第二存储器页面。
7.如权利要求1-6中的任一项所述的设备,其中所述存储器页面比较逻辑将作为所述第一存储器页面和所述第二存储器页面的周期扫描的一部分而确定所述第一存储器页面等同于所述第二存储器页面。
8.如权利要求1所述的设备,其中所述第一存储器页面指令和所述第二存储器页面指令是内核指令。
9.如权利要求1-6中的任一项所述的设备,其中确定用于所述客户机的至少所述第一存储器页面指令等同于用于所述主机的至少所述第二存储器页面指令包括:比较所述客户机的操作系统版本与所述主机的操作系统版本。
10.一种用于虚拟计算环境中存储器组织的设备,包括:
存储装置;
指令比较逻辑,耦合到所述存储装置,用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一操作系统指令集等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二操作系统指令集,其中所述客户机未指配用于在所述主机上执行;以及
布置逻辑,耦合到所述指令比较逻辑,用于响应于所述第一操作系统指令集等同于所述第二操作系统指令集而布置操作系统指令集,所述操作系统指令集选自由所述第一操作系统指令集和所述第二操作系统指令集构成的组,使得所述操作系统指令集被包含在所述存储装置中的一个或多个存储器页面中,开始于所述一个或多个存储器页面的一个页面边界,并且结束于所述一个或多个存储器页面的另一个页面边界。
11.如权利要求10所述的设备,进一步包括:存储器页面比较逻辑,用于确定用于所述客户机的存储在所述存储装置中的至少第一存储器页面指令等同于用于所述主机的存储在所述存储装置中的至少第二存储器页面指令,其中所述客户机未指配给所述主机或指配给与所述主机不同的其他主机;以及
指配逻辑,耦合到所述存储器页面比较逻辑,用于响应于确定所述第一存储器页面等同于所述第二存储器页面而指配所述客户机用于在所述主机上执行。
12.如权利要求11所述的设备,其中指配所述客户机用于在所述主机上执行包括将所述客户机现场迁移到所述主机。
13.如权利要求10-11中的任一项所述的设备,其中所述操作系统指令集包括所述第一操作系统指令集,并且所述布置逻辑被包含在所述客户机的链接器中。
14.如权利要求13所述的设备,其中所述指令比较逻辑将与所述主机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
15.如权利要求10-11中的任一项所述的设备,其中所述操作系统指令集包括所述第二操作系统指令集,并且所述布置逻辑被包含在所述主机的链接器中。
16.如权利要求15所述的设备,其中所述指令比较逻辑将与所述客户机的链接器通信以确定所述第一操作系统指令集等同于所述第二操作系统指令集。
17.一种用于虚拟计算环境中的存储器管理的方法,包括:
确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令,其中所述客户机由所述主机托管;以及
响应于确定所述第一存储器页面等同于所述第二存储器页面而将所述第一存储器页面映射到所述第二存储器页面以促使所述第一存储器页面指令的写时拷贝在所述客户机和所述主机之间共享。
18.如权利要求17所述的方法,其中所述第一存储器页面和所述第二存储器页面包括中断服务例程指令。
19.如权利要求17所述的方法,其中确定所述第一存储器页面等同于所述第二存储器页面包括确定所述第一存储器页面的散列等同于所述第二存储器页面的散列。
20.如权利要求17所述的方法,还包括将所述第一存储器页面标记为只读。
21.如权利要求17所述的方法,其中将所述第一存储器页面映射到所述第二存储器页面包括在页面表中将所述第一存储器页面映射到第二存储器页面。
22.如权利要求17所述的方法,其中响应于所述客户机的加载而执行确定所述第一存储器页面等同于所述第二存储器页面。
23.如权利要求17-22中的任一项所述的方法,其中作为所述第一存储器页面和所述第二存储器页面的周期扫描的一部分而确定所述第一存储器页面等同于所述第二存储器页面。
24.一个或多个计算机可读介质,具有其上存储的指令,所述指令响应于由计算装置的一个或多个处理装置执行而使所述计算装置执行如权利要求17-23中任一项所述的方法。
25.一种用于虚拟计算环境中的存储器管理的设备,包括:
用于确定用于所述虚拟计算环境中的客户机的存储在所述存储装置中的第一存储器页面指令等同于用于所述虚拟计算环境中的主机的存储在所述存储装置中的第二存储器页面指令的部件,其中所述客户机由所述主机托管;以及
响应于确定所述第一存储器页面等同于所述第二存储器页面,而用于将所述第一存储器页面映射到所述第二存储器页面以促使所述第一存储器页面指令的写时拷贝在所述客户机和所述主机之间共享的部件。
26.如权利要求25所述的设备,其中所述第一存储器页面和所述第二存储器页面包括中断服务例程指令。
27.如权利要求25所述的设备,其中确定所述第一存储器页面等同于所述第二存储器页面包括确定所述第一存储器页面的散列等同于所述第二存储器页面的散列。
28.如权利要求25所述的设备,还包括用于将所述第一存储器页面标记为只读的部件。
29.如权利要求25所述的设备,其中将所述第一存储器页面映射到所述第二存储器页面包括在页面表中将所述第一存储器页面映射到第二存储器页面。
30.如权利要求25所述的设备,其中响应于所述客户机的加载而执行确定所述第一存储器页面等同于所述第二存储器页面。
31.如权利要求25-30中的任一项所述的设备,其中作为所述第一存储器页面和所述第二存储器页面的周期扫描的一部分而确定所述第一存储器页面等同于所述第二存储器页面。
CN201480081150.8A 2014-09-12 2014-09-12 虚拟计算环境中的存储器和资源管理 Active CN106575235B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/086360 WO2016037344A1 (en) 2014-09-12 2014-09-12 Memory and resource management in a virtual computing environment

Publications (2)

Publication Number Publication Date
CN106575235A CN106575235A (zh) 2017-04-19
CN106575235B true CN106575235B (zh) 2020-10-23

Family

ID=55458268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480081150.8A Active CN106575235B (zh) 2014-09-12 2014-09-12 虚拟计算环境中的存储器和资源管理

Country Status (5)

Country Link
US (1) US10216532B2 (zh)
EP (1) EP3191945A4 (zh)
KR (1) KR102123422B1 (zh)
CN (1) CN106575235B (zh)
WO (1) WO2016037344A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9854041B1 (en) 2014-09-30 2017-12-26 Amazon Technologies, Inc. Reducing network traffic when replicating memory data across hosts
US20170003997A1 (en) * 2015-07-01 2017-01-05 Dell Products, Lp Compute Cluster Load Balancing Based on Memory Page Contents
CN108139980B (zh) * 2015-10-19 2022-03-18 瑞典爱立信有限公司 用于合并存储器页的方法和存储器合并功能
CN111133416A (zh) 2017-09-26 2020-05-08 英特尔公司 处理来自虚拟机命令的方法和装置
US10733096B2 (en) 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
CN110209354B (zh) * 2019-05-24 2022-04-19 北京百度网讯科技有限公司 用于处理数据的方法、装置、设备和介质
US20210334024A1 (en) * 2020-04-28 2021-10-28 International Business Machines Corporation Transactional Memory Based Memory Page De-Duplication
US11341060B2 (en) 2020-08-11 2022-05-24 International Business Machines Corporation Multifunction communication interface supporting memory sharing among data processing systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100023941A1 (en) * 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
CN102103524A (zh) * 2010-12-23 2011-06-22 北京航空航天大学 一种面向内存冗余的虚拟机迁移装置及其方法
CN102567080A (zh) * 2012-01-04 2012-07-11 北京航空航天大学 一种云计算环境中的面向负载均衡的虚拟机择位系统
US20130036249A1 (en) * 2011-08-01 2013-02-07 International Business Machines Corporation Preemptive guest merging for virtualization hypervisors
CN103019884A (zh) * 2012-11-21 2013-04-03 北京航空航天大学 基于虚拟机快照的内存页去重方法及装置
US8694712B2 (en) * 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
CN104035822A (zh) * 2014-05-28 2014-09-10 中国科学院计算技术研究所 一种低开销的高效内存去冗余方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7373446B2 (en) * 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US7472252B2 (en) * 2005-08-15 2008-12-30 Microsoft Corporation Merging identical memory pages
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8190827B2 (en) * 2009-02-27 2012-05-29 Red Hat, Inc. Memory sharing among computer programs
US8244957B2 (en) * 2010-02-26 2012-08-14 Red Hat Israel, Ltd. Mechanism for dynamic placement of virtual machines during live migration based on memory
US8490091B2 (en) * 2011-03-28 2013-07-16 International Business Machines Corporation Virtual machine placement to improve memory utilization
US9146847B2 (en) * 2011-12-14 2015-09-29 Vmware, Inc. Optimizing for page sharing in virtualized java virtual machines
US9311250B2 (en) * 2011-12-19 2016-04-12 Intel Corporation Techniques for memory de-duplication in a virtual system
US9292452B2 (en) * 2013-07-03 2016-03-22 Vmware, Inc. Identification of page sharing opportunities within large pages

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694712B2 (en) * 2006-12-05 2014-04-08 Microsoft Corporation Reduction of operational costs of virtual TLBs
US20100023941A1 (en) * 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
CN102103524A (zh) * 2010-12-23 2011-06-22 北京航空航天大学 一种面向内存冗余的虚拟机迁移装置及其方法
US20130036249A1 (en) * 2011-08-01 2013-02-07 International Business Machines Corporation Preemptive guest merging for virtualization hypervisors
CN102567080A (zh) * 2012-01-04 2012-07-11 北京航空航天大学 一种云计算环境中的面向负载均衡的虚拟机择位系统
CN103019884A (zh) * 2012-11-21 2013-04-03 北京航空航天大学 基于虚拟机快照的内存页去重方法及装置
CN104035822A (zh) * 2014-05-28 2014-09-10 中国科学院计算技术研究所 一种低开销的高效内存去冗余方法及系统

Also Published As

Publication number Publication date
EP3191945A4 (en) 2018-05-16
US10216532B2 (en) 2019-02-26
CN106575235A (zh) 2017-04-19
KR20170029583A (ko) 2017-03-15
US20160291998A1 (en) 2016-10-06
EP3191945A1 (en) 2017-07-19
KR102123422B1 (ko) 2020-06-16
WO2016037344A1 (en) 2016-03-17

Similar Documents

Publication Publication Date Title
CN106575235B (zh) 虚拟计算环境中的存储器和资源管理
US9904473B2 (en) Memory and processor affinity in a deduplicated environment
CN108037980B (zh) 控制执行虚拟机热迁移的方法、装置和可读存储介质
US9330013B2 (en) Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith
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
US9201698B2 (en) System and method to reduce memory usage by optimally placing VMS in a virtualized data center
CN105980986B (zh) 用于虚拟化计算的装置和方法
US9529618B2 (en) Migrating processes between source host and destination host using a shared virtual file system
AU2014389571A1 (en) Page fault injection in virtual machines to cause mapping of swapped-out memory pages into VM] virtu alized memory
US10860393B2 (en) Tracking driver load and unload on windows OS
US20220405385A1 (en) Secure container construction device and method executable by android application, and computer-readable recording medium on which program thereof is recorded
US9977747B2 (en) Identification of page sharing opportunities within large pages
US11048446B2 (en) Data expanse using memory-mapped files on a system architecture interface layer-based mainframe operating system
US9471226B2 (en) Reverse copy on write for better cache utilization
US20180137059A1 (en) Migrating buffer for direct memory access in a computer system
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US10552374B2 (en) Minimizing file creation and access times using skip optimization
US20170177377A1 (en) Starting application processors of a virtual machine
US9934157B2 (en) Post-copy VM migration speedup using free page hinting
US20230185593A1 (en) Virtual device translation for nested virtual machines
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
US9836241B1 (en) Label based guest memory deduplication
US20150242330A1 (en) Guest-programmable location of advanced configuration and power interface (acpi) tables in virtualized systems
US20220405111A1 (en) Improving memory access handling for nested virtual machines
US11243801B2 (en) Transparent huge pages support for encrypted virtual machines

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