CN102460400A - 基于管理程序的本地和远程虚拟内存页面管理 - Google Patents
基于管理程序的本地和远程虚拟内存页面管理 Download PDFInfo
- Publication number
- CN102460400A CN102460400A CN2009801601987A CN200980160198A CN102460400A CN 102460400 A CN102460400 A CN 102460400A CN 2009801601987 A CN2009801601987 A CN 2009801601987A CN 200980160198 A CN200980160198 A CN 200980160198A CN 102460400 A CN102460400 A CN 102460400A
- Authority
- CN
- China
- Prior art keywords
- memory
- blade
- page
- local
- virtual
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
图示了一种系统和方法,用于使用驻留在计算刀片上的管理程序模块比较目标内存地址和本地内存大小,所述比较基于目标内存地址的数字信息的单位和本地内存大小的数字信息的附加单位。另外,所述系统和方法使用驻留在所述管理程序上的交换模块来利用本地虚拟内存页面与远程虚拟内存页面的交换,所述交换基于所述目标内存地址与所述本地内存大小的比较。进一步地,所述系统和方法被实现为使用驻留在所述计算刀片上的传输模块将所述本地虚拟内存页面传输到内存刀片。
Description
相关申请的交叉引用
本申请是与2008年7月3日递交的、名称为“MEMORY SERVER(内存服务器)”的专利合作条约申请No.PCT/US2008/069168相关的非临时专利申请,该申请通过整体引用而合并于此。
背景技术
基于多核的计算可以用于解决多个数据密集的问题。具有多核的计算机可以被实现为刀片式机架中的计算刀片(compute blade)、被组织为一个或多个计算集群的多个计算机或者某些其它合适的组织。这些具有多核的计算机可以用在数据中心、服务器群或某些其它合适的机构内。
附图说明
参考以下附图通过示例的方式描述本发明的某些实施例:
图1是根据示例实施例的、示出使用基于管理程序的计算刀片实施方式且基于虚拟页面交换的内存解体的系统图。
图2是示出根据示例实施例的计算刀片的逻辑设计的图。
图3是示出根据示例实施例的实现气球驱动、管理代理和与管理程序相关联的数据结构的计算刀片的逻辑设计的图。
图4是根据示例实施例的示出远程内存页面的移动的系统图。
图5是根据示例实施例的示出本地内存页面的移动的系统图。
图6是根据示例实施例的、用于实现基于气球的内存分配技术以方便远程内存分配的系统图。
图7是根据示例实施例的、示出为了向请求内存刀片提供额外虚拟内存而对所分配的内存进行包装的系统图。
图8是根据示例实施例的由多个管理程序对内存刀片的基于页面的非交换使用的系统图。
图9是根据示例实施例的用于支持内存刀片的文件语义的系统的图。
图10是根据示例实施例的用于在通过计算刀片共享数据时保证高速缓存一致性的系统的图。
图11是根据示例实施例的采用用于交换内存页面的计算刀片形式的计算机系统的框图。
图12是根据示例实施例的、驻留在计算机可读介质中用于将机器地址(MA)映射为一个或多个虚拟参数的数据结构的图。
图13是根据示例实施例的采用实现气球代理的计算刀片形式的计算机系统的框图。
图14是根据示例实施例的用于交换虚拟内存页面的计算机实现方法的图。
图15是根据示例实施例的、提供在图14所示的方法中使用的额外操作的计算机实现方法的图。
图16是根据示例实施例的、由管理程序实现的用于建立驻留在计算机可读介质中以将机器地址(MA)映射为一个或多个虚拟参数的数据结构的方法的图。
图17是根据示例实施例的用于方便内存包装的方法的图。
图18是示出根据示例实施例的、用于方便计算刀片的引导序列与内存刀片交换虚拟页面的方法的流程图。
图19是示出根据示例实施例的使用内存分配算法获取远程内存的操作的执行的流程图。
图20是示出根据示例性实施例的用于移动本地和远程内存的方法的执行的流程图。
图21是示出根据示例实施例的、示出作为图20所示方法的一部分而包括的附加操作的方法的执行的流程图。
图22是根据示例实施例的用于将机器地址映射为一个或多个虚拟参数的数据结构的图。
图23是示出根据示例性实施例的用于实现基于气球的内存再分配的方法的执行的流程图。
图24是示出根据示例实施例的、用于释放远程虚拟内存页面并方便对将这些虚拟内存页面记录为未使用的未使用列表更新的操作的执行的流程图。
图25示出采用在其中可以执行使机器实施这里所讨论的方法中任意一个或多个的指令集的计算机系统的示例形式的图形表示。
具体实施方式
图示了用于使用基于管理程序的计算刀片实施方式并且基于虚拟页面交换的内存解体(disaggregation)的系统和方法。虚拟页面是在物理内存寻址和虚拟内存寻址中都不间断的固定长度的内存块。该内存可以是静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或其它主要的内存实施方式(例如,基于光学的、磁的存储器或闪存)。管理程序或虚拟机监视器(VMM)是允许多操作系统在主机计算机上并发运行的计算机硬件虚拟化软件。这些多操作系统这里也称作虚拟机(VM),其可以使用多个虚拟化方案中的任意一个来实现。这些方案包括全虚拟化、部分虚拟化、半虚拟化、硬件辅助虚拟化和操作系统级虚拟化。这里所引用的计算机刀片是具有读取输入命令和数据的内存以及执行操纵这些数据的命令的处理器的计算机系统。在某些示例实施例中,计算刀片还包括存储结果的备用储存器(例如,以上所引用的存储器)。该备用储存器可以位于计算刀片的本地,或者位于内存刀片(memory blade)中计算刀片的远处。
在一个示例实施例中,虚拟内存通过通信信道在计算刀片与内存刀片之间进行移动或交换,以便远程分配虚拟内存。在发生交换的示例情况下,目标内存地址与本地内存大小进行比较,以确定目标内存页面是否远程存储在内存刀片上从而需要与本地虚拟内存页面进行交换。目标内存是为了允许软件应用程序起作用而满足的必备虚拟内存值。本地内存大小是表示计算刀片上本地可用的虚拟内存量的内存值。本地虚拟内存页面是特定计算刀片本地的虚拟内存页面。远程虚拟内存页面是位于远处的虚拟内存页面。在某些示例实施例中,交换通过使用临时本地虚拟存储页面来进行。临时本地虚拟内存页面是未使用的或仅为了交换本地和远程虚拟内存页面而分配的虚拟内存页面。
在示例实施例中,实现基于管理程序的数据结构,以允许基于MA而对数据结构进行索引。这种数据结构可以包括虚拟参数,虚拟参数包括VMID、VM内的进程ID以及虚拟地址(VA)。MA是表示计算刀片中的特定物理内存位置的数值。VMID是表示驻留在计算刀片中并由管理程序管理的虚拟机的数值。进程ID是表示驻留在VM中的进程或应用程序的数值。VA是用于引用通常由VM中的进程使用的虚拟内存地址空间中的内存位置的数值。VMID、进程ID和VA的结合提供了定位与MA相对应的虚拟页面的信息。
在某些示例实施例中,以下的交换由对远程虚拟内存页面访问的检测来触发,这种检测包括进行地址比较以检测远程虚拟内存页面,并且包括远程页面到本地缓冲器的拷贝、本地页面的选择和收回(eviction)以及包括MA到VA映射的页面表格更新。以下更充分地图示这种交换。
在一个示例实施例中,采用基于气球(balloon)的内存分配技术进行远程内存分配。该技术可以采用内存气球驱动或代理,其中内存气球驱动或代理在特定操作系统或VM内分配内存。气球驱动或代理从管理程序接收指令,例如气球命令。
图1是示出使用基于管理程序的计算刀片实施方式且基于虚拟页面交换的内存解体的示例系统100的图。示出了均位于刀片式机架104附近的计算刀片101、计算刀片102和内存刀片103。计算刀片101-102经由逻辑连接或物理连接可操作地连接至网络105。网络105可以是因特网、企业内部网、广域网(WAM)、局域网(LAN)或某些其它网络和与网络相关联的合适拓扑。在某些示例实施例中,多个设备可操作地连接至网络105,这些设备包括手机106、个人数字助理(PDA)107、计算机系统108以及电视或监视器109。在某些示例实施例中,计算刀片101-102经由网络105与多个设备通信。
图2是示出计算刀片102的示例逻辑设计的图。示出了计算刀片102的逻辑设计以及与其相关联的多种逻辑层。图示了驻留在管理程序202上的操作系统层201,管理程序202依次驻留在物理层203上。操作系统层201包括用作VM的一个或多个操作系统。合适的操作系统包括例如LINUXTM操作系统、微软公司的WINDOWSTM操作系统、Sun公司的SOLARISTM操作系统、UNIXTM操作系统、或在本领域中已知的某些其它合适的操作系统。管理程序202可以被配置为半虚拟化、全虚拟化或其它类型的管理程序。物理层可以是计算机系统。在某些示例实施例中,操作系统层201包括操作系统204-206。包括作为操作系统204的一部分的是与一个或多个虚拟内存页面相对应的页面帧207。类似地,操作系统205包括页面帧208,页面帧208包括一个或多个虚拟内存页面。另外,操作系统206包括页面帧209,页面帧209包括虚拟内存页面210。虚拟内存页面的合适大小可以是2KB、4KB或16KB。
图3是示出实现气球驱动、管理代理和与管理程序202相关联的数据结构的计算刀片102的示例逻辑设计的图。示出了包括操作系统205的操作系统层201。气球驱动301被包括为该操作系统205的一部分。在某些示例实施例中,气球驱动301用于分配和解除分配操作系统中的虚拟内存。这种分配和解除分配由与管理程序202协作的气球驱动301对操作系统205透明地实施。进一步地,图示了与管理程序202合作以从内存刀片103请求额外内存的管理代理302。在某些示例实施例中,管理代理302可以实现为位于计算刀片102本地的硬件,而在某它实施例中,管理代理302可以用于为刀片式机架104提供位于刀片式机架104附近的独立设备。另外还示出了为管理程序202维护MA到VA映射的数据结构303。以下在图12和图22中更充分地图示该数据结构303。
图4是示出远程内存页面的移动的示例系统400的图。图示了经由通信信道401可操作地联结至内存刀片103的计算刀片101。通信信道401可以是逻辑连接或物理连接。进一步地,在某些示例实施例中,通信信道401通过背板402。内存刀片103通过通信信道401将虚拟内存页面402传输到计算刀片101,作为虚拟内存页面402的移动的一部分,这里以403表示。虚拟内存页面402用于改写驻留在计算机刀片101上的管理程序所选择的受害者页面(victim page)。这里,例如,虚拟内存页面210(本地内存页面)已被选择为受害者页面。在某些示例实施例中,诸如虚拟内存页面404的临时页面用于存储受害者页面(例如,虚拟内存页面210)的数据。
图5是示出本地内存页面的移动的示例系统500的图。示出了经由通信信道401可操作地联结至内存刀片103的计算刀片101。图示了以501表示的本地虚拟内存页面210的移动。虚拟内存页面210传输通过通信信道401并由内存刀片103接收。这种虚拟内存页面210用于改写例如先前位于远处的虚拟内存页面402。在某些其它示例实施例中,可以选择位于远处的某些其它内存页面以进行改写。
图6是用于实现基于气球的内存分配技术以方便远程内存分配的示例系统600的图。示出了计算刀片101、计算刀片102和内存刀片103。计算刀片101经由通信信道601可操作地联结至内存刀片 103。进一步地,内存刀片103经由通信信道604可操作地连接至计算刀片 102。通信信道701和704可以是逻辑连接或物理连接。另外,被称作“管理程序B”的管理程序606驻留在计算刀片101上。进一步,被称作“管理程序A”的先前引用的管理程序202驻留在计算刀片102上。图示了由计算刀片101通过通信信道701发送并由内存刀片103接收的内存容量命令603。如图示,内存刀片101充当请求内存刀片。该内存容量命令603可以使用包括快捷外设互联标准(PCIe)或某些其它合适的协议进行格式化。内存刀片103产生气球命令605,并经由通信信道604发送气球命令605。气球命令605指令管理程序202和驻留在其上的管理代理为该管理程序所管理的操作系统来分配内存。在某些实施例中,气球命令605指令管理程序202重新要求或解分配内存。
图7是示出为了向请求内存刀片提供额外虚拟内存而包装所分配的内存的示例系统700的图。这里所使用的包装可以包括压缩。图示了作为例如气球命令605的响应而分配的分配内存701。驻留在内存刀片103上的物理内存的标记或指针包含在例如所分配的内存701中。在某些示例实施例中,多个指针或标记可以包装在一起以形成邻近的内存片,或者可以组织为诸如哈希表、邻近阵列、树之类的数据结构或其它合适的数据结构。在某些示例实施例中,包装由管理程序202或由内存刀片103来实施。所示出的是优化的、由内存刀片103通过通信信道701传输的所分配内存802的标记或指针。这种优化的所分配内存802的标记或指针可以用于访问以上所述的哈希表、邻近阵列、树或其它合适的数据结构。优化的分配内存802的标记或指针由计算刀片101接收。
图8是由多个管理程序对内存刀片的基于页面的非交换使用的示例系统800的图。图示了管理程序202和606,其生成读取请求801和802分别作为文件界面使用的一部分。这些读取请求试图访问并读取内存位置803。该内存位置803可以表示为采用作为超页面一部分的规则页面形式的虚拟内存页面。这里使用的超页面可以是被细分为4KB页面帧的16MB邻近内存块。超页面中包括“非交换”位属性(例如,标志),以指示该超页面通过计算刀片被共享,并且不能在计算刀片与内存刀片之间进行交换。该位可以在超页面是内存中文件的一部分时由内存刀片103设置,或者在计算刀片之一创建即将与其它刀片共享的数据时由计算刀片101或102设置。
关于图8中概括的系统,公开了一种示例方法,其中计算刀片102从内存刀片103请求超页面的一部分。该请求(例如,读取请求801)包括“非交换”标志。非交换位与非交换标记相匹配,以加强这种非交换只读策略。内存刀片103上的这些位可以以位矢量存储。在某些示例实施例中,管理程序202可以将被标志为“非交换”的虚拟内存页面(例如,这里标记为“非交换页面”)本地缓存在任意虚拟机不可见的一部分保留内存中。这种缓存可以与操作系统缓存类似地组织,以减少对内存刀片的访问次数。由于非交换页面可以缓存在多计算刀片管理程序缓存中,因此可以在这些缓存的拷贝之间维持缓存一致性(参见以下图10)。
图9是用于支持内存刀片的文件语义的示例系统900的图。图示了分别由计算刀片101和102处理的处理后数据901和处理后数据902。处理后数据901和902可以是为了由内存刀片101和102进行处理而细分的较大数据集的部分。在某些示例实施例中,处理后数据901和902可以是对驻留在内存刀片103上的数据的指示,其中处理后数据经由所述指示被访问。这里所使用的指示是内存刀片103的内存中地址的指针。驻留在内存刀片上的数据可以通过使用其它合适方法的指针算法来访问以操纵内存中的数据。如图所示,处理后数据901和902通过内存刀片103对处理后数据901和处理后数据902应用某些类型的逻辑运算而结合。这种逻辑运算包括例如并置运算、联合运算、差集运算或某些其它合适类型的逻辑运算。这种逻辑运算的应用在903处图示。
关于图9中概括的系统,公开了一种示例方法,其中提供了简单的文件提取,内存刀片103在内存刀片103上添加(例如,应用逻辑运算)两种数据结构(例如,或者存储在保留的DRAM中)。这种方法还可以应用于在作为内存控制器硬件的一部分的地址映射硬件表内所标记的两种数据结构。第一种数据结构是文件ID与它们对应的文件名、大小(例如,关于超页面的总数)一起的列表,并且每个具有构成该文件内容的超页面序列的指针。这用于创建/删除/打开/关闭内存刀片上的文件。第二种数据结构将文件ID映射到其超页面序列。在多个计算刀片(例如,101和102)将分布式文件载入内存刀片103中时,每个计算刀片可以如文件内的偏移(offset)所指示的那样载入其本地磁盘上存储的片段。计算刀片请求新的超页面来保留该片断,并且内存刀片103根据其未使用列表分配未使用的超页面、设置其“非交换”位,并使用该新地址更新该文件的超页面序列。计算刀片可以实施片段到内存刀片103(例如,与其文件ID和偏移一起)的直接存储器存取(DMA)传送。因此,连接至内存刀片的任意计算刀片可以随后打开文件(例如,基于所请求的文件名返回文件ID),并且使用例如文件ID、偏移访问文件的任意部分。计算刀片还可以采用传统的文件缓存技术来减少内存刀片访问,并支持mmap()类界面以操纵文件内容。
图10是用于在通过计算刀片共享数据时保证缓存一致性的示例系统1000的图。示出了无效请求1001和写入请求1002。无效请求1001被传输到维护先前的数据拷贝(例如,虚拟内存页面)的计算刀片101,其即将由计算刀片102经由写入请求1002重写。共享列表1004由内存刀片130使用,以在计算刀片中跟踪先前的数据拷贝(参见例如,计算刀片101)。例如,在计算刀片变为写入者时,计算刀片102需要保证所缓存的先前读取者/写入者计算刀片的拷贝无效。为了方便这种处理,现在在内存刀片103上,每个超页面都具有文件ID和文件偏移字段作为其在内存中文件系统中的名称。超页面还维护共享者列表(例如,计算刀片的矢量)和当前的写入者刀片。当计算刀片获取超页面的写入者船(writer-ship)(例如,计算刀片102)时,内存刀片103向所有先前的共享者发送无效请求。无效请求包括对应的文件ID和文件偏移。内存刀片103可以等到所有共享者刀片确认文件缓存无效的完成。在某些示例实施例中,当计算刀片访问超页面时,内存刀片103还检查请求计算刀片是写入者以避免超页面粒度的数据竞争。
在某些实施例中,保证缓存一致性以支持VM克隆(一种非交换使用类型)的使用。如这里所公开的,提供了一种允许VM以及为该VM分配的内存位置被克隆到多个物理层203上的方法。在示例实施例中,与VM相关联的标记页面表和虚拟内存页面被存储在内存刀片103上。针对计算刀片开始引导进程。作为该引导进程的一部分,针对计算刀片上VM的每个实例执行从内存刀片103检索页面表格的操作。在某些示例实施例中,引导多个计算刀片,并且针对在每个内存刀片103上例示的多个VM从内存刀片103中检索页面表格。由页面表格标记的虚拟内存页面可以经由图8、图9和图10中概括的方法来访问。当克隆的虚拟机试图改变标记内存页面时,管理程序会调用写时拷贝(COW)操作,以便为存储改变的页面分配新的内存帧。
图11是采用用于交换内存页面的计算刀片102形式的示例计算机系统的框图。这些多个框可以以硬件、固体或软件实现,作为计算机刀片101或计算机刀片102的一部分。进一步地,这些多个框以逻辑或物理方式连接,如1109所标记。另外,CPU 1110可以用于执行并管理这里所标记的各种模块。图示了用于比较目标内存地址和本地内存大小的管理程序模块1101,其中比较基于目标内存大小的数字信息的单位和本地内存大小的数字信息的附加单位。管理程序模块1101可以是管理程序202。该数字信息的单位可以是千字节(KB)、兆字节(MB)、千兆字节(GB)或某些其它合适的测量单位。另外,交换模块1102用于交换本地虚拟内存页面与远程虚拟内存页面,其中交换基于目标内存地址与本地内存大小的比较。进一步地,传输模块1103用于将本地虚拟内存页面传输到内存刀片。接收模块1104用于从内存刀片103接收远程虚拟内存页面。在某些示例实施例中,比较包括等值比较、大于比较或小于比较中至少之一。某些示例实施例包括由在计算刀片上执行的应用程序所定义的目标内存地址。另外,本地内存大小可以由管理程序模块所管理的操作系统来定义,所述操作系统驻留在计算刀片上。进一步地,交换模块1102用于使用驻留在管理程序模块上的交换模块而交换远程虚拟内存页面与临时本地虚拟内存页面,所述交换基于目标内存大小与本地内存大小的比较。还示出了将远程虚拟内存页面识别为超页面的页面识别模块1105。这种识别可以通过分析为虚拟内存页面分配的数字信息的单位而进行。图示了对超页面的一部分进行处理的优化模块1106。执行操作系统模块1107以将超页面的该部分处理为应用程序的指令集。操作系统模块1107的示例是OS 205。指令集是提供用于指令CPU的一系列编码指令,其中这些指令被写为人可读的代码或二进制值。在某些示例实施例中,超页面是超过4KB、8KB、16KB或某些其它合适大小的虚拟内存页面。
某些示例实施例包括计算刀片,计算刀片包括具有物理层、管理程序层、虚拟机层或应用程序层中至少之一的逻辑架构。另外,内存刀片包括具有协议代理、内存控制器、地址映射或加速器中至少之一的逻辑架构。协议代理是对内存刀片与计算刀片之间发送的数据包进行编码和解码的应用程序,其中编码和解码使用某些类型的协议。内存控制器是与内存模块进行交互并管理容量分配和内存刀片本地的内存的解除分配的设备逻辑。地址映射是映射各种类型的地址(例如VA到MA)的数据结构或其它合适的映射。加速器是允许将数据包存储在物理内存或允许对物理内存进行搜索的应用程序。示出了驻留在管理程序上的逻辑模块1108,逻辑模块1108向本地内存分配值指派本地内存可用值,其中目标内存大小小于(<)可用的本地内存大小。本地内存可用值是表示计算刀片上可用的本地内存数量的数值。本地内存分配值是表示计算刀片上分配的本地内存数量的数值。另外,执行逻辑模块1108以向本地内存指派目标内存大小,其中目标内存大小大于(>)可用的本地内存大小。进一步地,执行逻辑模块1108以使用逻辑模块向分配的远程内存指派(=)目标内存大小与本地内存大小之间的差值,其中可用的远程内存与分配的本地内存之和大于或等于(>=)目标内存大小。可以执行逻辑模块1108以使用逻辑模块向分配的远程内存指派可用的远程内存,其中分配的远程内存与分配的本地内存之和小于目标内存大小。进一步地,执行逻辑模块1108以向分配的气球内存指派目标内存大小和分配的本地内存与分配的远程内存之间的差值。
图12是驻留在计算机可读介质中用于将MA映射为一个或多个虚拟参数的示例数据结构1200的图。该数据结构1200由对至少一个虚拟机进行管理的管理程序模块访问。在某些示例实施例中,数据结构1200包括第一字段1201,第一字段1201包括用于标记至少一个虚拟参数数据对象的第一机器地址数据对象,所述标记用于识别为至少一个虚拟机分配的虚拟内存页面。这里所使用的数据对象包括例如内存中的数值地址,其中该数字可以是整数、浮点数或双精度数。数据结构1200还可以包括第二字段1202,第二字段1202包括至少一个虚拟参数数据对象,至少一个虚拟参数数据对象包括虚拟机地址、进程ID或虚拟内存页面的虚拟地址中至少之一。另外,数据结构1200还包括第三字段1203,第三字段1203包括第二机器地址数据对象,第二机器地址数据对象被指派一标记,以在管理程序模块所管理的另一虚拟机访问虚拟页面时访问至少一个虚拟参数数据对象。在某些示例实施例中,第一和第二机器地址数据对象使用包括模运算或移位中至少之一的技术根据内存地址而生成。另外,在某些示例实施例中,所述标记包括内存位置或相邻的内存单元中至少之一。
图13是采用用于实现气球代理的计算刀片102形式的示例计算机系统的框图。这些多个框可以以硬件、固体或软件实现,作为计算机刀片101或计算机刀片102的一部分。进一步地,这些多个框以逻辑方式或物理方式连接。图示了接收模块1301,接收模块1301被执行以使用驻留在管理至少一个虚拟机1305的管理程序模块上的接收模块来接收气球命令。气球命令是内存分配命令。还示出了驻留在至少一个虚拟机上的气球代理1302,气球代理1302被执行以便为至少一个虚拟机分配内存。还示出了驻留在管理程序模块上的包装模块1303,包装模块1303被执行以将分配的内存包装为以邻近方式组织的内存。还示出了驻留在管理程序模块上的传输模块1304,传输模块1304被执行以在本地内存与远程内存之间传输页面,以便实现包装的以邻近方式组织的内存。在某些示例实施例中,邻近内存驻留在内存刀片上。
图14是被执行用于交换虚拟内存页面的示例计算机实现方法1400的图。方法1400的操作可以由例如计算刀片102实现。示出了由管理程序模块1101执行以使用驻留在计算刀片上的管理程序模块来比较目标内存大小与本地内存大小的操作1401,所述比较基于目标内存大小的数字信息的单位和本地内存大小的数字信息的附加单位。操作1402由交换模块1102执行,以使用驻留在管理程序模块上的交换模块来交换本地虚拟内存页面与远程虚拟内存页面,所述交换基于目标内存大小与本地内存大小的比较。操作1403由传输模块1103执行,以使用驻留在计算刀片上的传输模块将本地虚拟内存页面传输到内存刀片。操作1404由接收模块1104执行,以从内存刀片接收远程虚拟内存页面。在某些示例实施例中,比较包括等值比较、较大比较或较小比较中至少之一。另外,在某些示例实施例中,目标内存大小由在计算刀片上执行的应用程序(例如,软件应用程序)来定义。某些示例实施例包括本地内存大小,其由管理程序模块所管理的操作系统来定义,所述操作系统驻留在计算刀片上。进一步地,操作1405由交换模块1102执行,以交换远程虚拟内存页面与临时本地虚拟内存页面,所述交换基于目标内存大小与本地内存大小的比较。操作1406由页面识别模块1105执行,以使用驻留在管理程序模块上的页面识别模块将远程虚拟内存页面识别为超页面。操作1407由优化模块1106执行,以处理超页面的一部分。操作1408由操作系统模块1107执行以执行应用程序,所述执行包括将超页面的该部分处理为应用程序的指令集。在某些示例实施例中,超页面是超过16千字节的虚拟内存页面。在某些示例实施例中,计算刀片包括具有物理层、管理程序层、虚拟机层或应用程序层中至少之一的逻辑架构。另外,在某些示例实施例中,内存刀片包括具有协议代理、内存控制器、地址映射或加速器中至少之一的逻辑架构。
图15是示出继续方法1100的示例方法1500的流程图。操作1501由逻辑模块1108执行,以执行包括文件界面使用、缓存一致性使用或VM克隆使用中至少之一的非交换使用。操作1502由逻辑模块1108执行,以使用驻留在管理程序模块上的逻辑模块向本地内存分配值指派本地内存可用值,其中目标内存大小小于可用的本地内存大小。操作1503由逻辑模块1108执行,以使用驻留在管理程序模块上的逻辑模块向本地内存指派目标内存大小,其中目标内存大小大于可用的本地内存大小。操作1504由逻辑模块1108执行,以使用驻留在管理程序模块上的逻辑模块向分配的远程内存指派目标内存大小与本地内存大小之间的差值,其中可用的远程内存与分配的本地内存之和大于或等于目标内存大小。操作1505由逻辑模块1108执行,以使用驻留在管理程序模块上的逻辑模块向分配的远程内存指派可用的远程内存,其中分配的远程内存与分配的本地内存之和小于目标内存大小。操作1506由逻辑模块1108执行,以使用驻留在管理程序模块上的逻辑模块向分配的气球内存指派目标内存大小和分配的本地内存与分配的远程内存之间的差值。
图16是由管理程序实现的、用于建立驻留在计算机可读介质中用于将MA映射为一个或多个虚拟参数的数据结构的示例方法1600的图。执行操作1601,以建立第一字段,第一字段包括用于标记至少一个虚拟参数数据对象的第一机器地址数据对象,所述标记用于识别为至少一个虚拟机分配的虚拟内存页面。执行操作1602,以建立第二字段,第二字段包括至少一个虚拟参数数据对象,至少一个虚拟参数数据对象包括至少一个虚拟机ID、至少一个进程ID和虚拟内存页面的至少一个虚拟地址。执行操作1603,以建立第三字段,第三字段包括第二机器地址数据对象,第二机器地址数据对象被指派一标记,以在管理程序模块所管理的另一虚拟机访问虚拟页面时访问至少一个虚拟参数数据对象。在某些示例实施例中,第一和第二机器地址数据对象使用包括模运算或移位中至少之一的技术根据内存地址而生成。另外,在某些示例实施例中,所述标记包括内存位置或相邻的内存单元中至少之一。
图17是用于方便内存包装的示例方法1700的图。图示了由接收模块1301执行以接收气球命令的操作1701。由气球代理1302执行操作1702,以为虚拟机分配内存。由包装模块1703执行操作1703,以将分配的内存包装为以邻近方式组织的内存。由传输模块1704执行操作1704,以便向以邻近方式组织的内存传输标记。在某些示例实施例中,邻近内存驻留在内存刀片上。
图18是示出用于方便计算刀片的引导序列以与内存刀片交换虚拟页面的示例方法1800的流程图。图示了由例如物理层203执行的操作1801到1803。进一步地,图示了由例如管理程序202执行的操作1804到1809。另外,图示了由例如物理层203执行的操作1810。在某些示例实施例中,操作1801到1810的执行被实现为根据管理程序202的配合在本地、远程和气球片段之间划分服务器的物理内存地址。执行操作1801,以方便向处理器提供作为初始化指令的系统引导。执行操作1802,以便为处理器检索本地可用的内存。执行操作1803以引导或开始诸如管理程序202的管理程序。在某些示例实施例中,在服务器启动时,基本输入输出系统(BIOS)固件首先检测本地安装的可用内存量(“La”),管理程序读取在用户定义的用户菜单或基于BIOS的配置中指定的目标内存分配大小(“T”)。执行操作1804以从引导项中检索目标内存大小。目标内存大小针对在管理程序202所管理的操作系统之一上执行的特定应用程序。执行判决操作1805以确定目标内存大小是否小于可用的本地内存。在判决操作1805评估为“真”的情况下,执行操作1806。在判决操作1805评估为“假”的情况下,执行操作1807。操作1806在执行时向本地内存变量指派可用的本地内存(例如,该本地内存的指针或标记)。操作1807在执行时向目标内存变量指派本地内存值(例如,该值的指针或标记)。执行判决操作1808以确定本地内存是否等于(≡)目标内存。在判决操作1808评估为“真”的情况下,执行操作1810。在判决操作1808评估为“假”的情况下,执行操作1809。操作1809在执行时使用内存分配算法获取或检索远程内存。操作1810在执行时为远程内存直接存储器存取(DMA)设置驱动域,然后恢复特定计算刀片的序列。驱动域可以是软件驱动器。
在某些示例实施例中,管理程序202通过从本地内存、远程内存和气球内存请求内存来满足容量请求“T”。在可用本地和远程内存之和小于“T”时,所请求的物理地址空间的一部分必须存储在主内存或永久储存器上。这是必须的,原因在于没有足够的本地和远程DRAM。这种类型的内存在这里被标记为气球内存。由于例如内存刀片103的总内存容量被动态重新分配,因此也可以相应地增加和减少给定计算刀片的内存。
图19是示出示例操作1509的执行的流程图。示出了判决操作1901,该操作确定可用的远程内存与本地内存之和是否小于或等于目标内存(例如,“T”)。在判决操作1901评估为“真”的情况下,执行操作1902。在判决操作1901评估为“假”的情况下,执行操作1903。操作1902在执行时确定内存刀片103所分配的远程内存。该分配的内存被确定为目标内存大小(例如,“T”)与分配的本地内存(例如,“La”)之差。操作1903在执行时向远程内存分配值指派远程内存可用值。操作1904在执行时确定目标内存大小与本地和远程内存大小之差。操作1905在执行时,基于目标内存(例如,“T”)与本地和远程内存之和之间的差值而分配内存。
图20是示出用于移动本地和远程内存的示例方法2000的执行的流程图。图示了由物理层202执行的操作2001到2003。进一步地,图示了由管理程序203执行的操作2004到2007。操作2001由处理器(例如,x86系列中央处理单元(CPU))执行,以方便载入或存储操作。执行操作2002以遍历转换后备缓冲器(TLB),从而确定本地内存页面是否在TLB内被索引。在没有出现虚拟内存页面的情况下,抛出异常,并且执行操作2003。操作2003在执行时将程序执行流捕获到管理程序203中。在某些示例实施例中,当目标内存地址大于本地内存大小时,管理程序检测远程内存访问,并开始本地/远程页面交换操作。执行操作2004以从未使用的页面帧池中选取本地页面帧。从未使用的页面帧池中选择的未使用页面可以由管理程序203进行分配,以便用于驻留在以上所标记的操作系统之一上或者由以上所标记的操作系统之一执行的应用程序。执行操作2005以开始远程页面到本地页面中的移动。执行操作2006以选择本地受害者,并且将该本地受害者页面以及包括在其中的数据移动到远程页面中。受害者页面选择标准可以是由MA基于根据页面访问历史选取最不可能访问的本地页面的位置、基于页面大小或基于其它合适的标准来随机选择。执行操作2007以使用例如MA到虚拟参数映射数据结构来更新进来的和受害者页面的MA,并且使受害者页面TLB入口无效以保证正确的访问。用于实现该方法2000的系统示出在示例图4和图5中。
图21是示出示例方法2100的执行的流程图,其中示例方法2100示出作为方法2000的一部分而包括的附加操作。图示了由管理程序202执行的多个操作2101到2106。示出了确定特定的虚拟内存页面是否是超页面的判决操作2101。超页面是大于一般的4KB页面大小的虚拟内存页面。在判决操作2101评估为“真”的情况下,执行进一步的判决操作2102。在判决操作2101评估为“假”的情况下,执行操作2103。判决操作2102确定是否要执行超页面优化算法。在执行判决操作2102的情况下,执行操作2103。判决操作2104在执行时实现超页面优化算法。示例超页面优化算法包括例如重置算法、请求首字算法(request first word algorithm)或某些其它合适的算法。操作2103在执行时中断进程执行,直到整个虚拟页面被传送。执行操作2105以开始基于纠错码(ECC)的超页面处理。执行操作2106以恢复在与前述操作系统之一上运行的应用程序相关联的进程的正常执行。
在某些示例实施例中,操作2002到2007以下列方式实现。在操作2002的执行中采用所有页面表格入口中针对远程页面的“当前”位(例如,假设远程存储了较高地址,则是物理地址高于L的那些位)。当页面已准备好进行访问时,将当前位设置为1。当前位的设置可以在整个页面被传送之前发生。当CPU使用其清零(例如,被设置为0)的当前位访问页面时,其会捕获到作为管理程序实施方式的一部分的页面故障处理机中。该捕获进程在操作2003中概括。如操作2004处的暗示,在控制流切换到管理程序时,管理程序从未使用页面的小缓存池中选取本地页面帧以存储进来的远程页面。该进来的远程页面可以是虚拟内存页面402。操作2005由管理程序执行以开始内存刀片103的页面传送命令。进一步地,如以上的暗示,执行操作2006以使管理程序能够调度受害者页面到远程页面帧的传送。在某些示例实施例中,实际的传送会在后面发生。某些示例情况可以包括受害者页面帧返回到未使用本地页面的缓存池,如操作2007中的执行所表明。
图22是用于将机器地址映射到虚拟参数的示例数据结构303的图。在某些示例实施例中,数据结构303驻留在管理程序202上。该数据结构303用于跟踪哪个VA或PA地址中虚拟机和相关联的页面表格被映射到给定的MA。如上所述,该数据结构是邻近阵列。然而,在某些示例实施例中,该数据结构可以是哈希表、数字树或其它合适的数据结构。示出了被映射到一个或多个虚拟参数2202的MA索引值2201。该MA索引值可以通过将模运算、移位或某些其它合适的技术应用于内存地址而生成。在某些示例实施例中,数据结构303的组织基于经由管理程序所实现的虚拟化类型而改变。在实现半虚拟化的情况下,MA将映射到VMID、进程ID(PID)和VA。进一步地,在实现全虚拟化的情况下,采用具有虚拟VMID、进程ID和VA的阴影页面表格。
图23是示出用于实现基于气球的内存分配的示例方法2300的执行的流程图。图示了由管理程序202执行的操作2301到2302。另外还图示了由诸如OS 205的OS执行的操作2303到2305。进一步图示了由管理程序202执行的操作2306到2309。另外还图示了由管理程序606执行的操作2310。执行操作2301以允许管理代理208向内存刀片103发送内存容量命令703。由管理程序202执行操作2302以指令气球驱动301请求额外的内存。由OS执行操作2303以选择待释放的页面。执行操作2304以将脏页刷到主内存。执行操作2305以选择性地优化,从而从OS将页面直接写入主内存。执行判决操作2306以确定虚拟内存页面是否被分组为邻近内存。在判决操作2306评估为“真”的情况下,执行终止操作2311。在判决操作2306评估为“假”的情况下,执行操作2307。操作2307在执行时将远程虚拟内存页面移动并包装为邻近内存。执行操作2308以释放远程虚拟内存页面,并方便将记录这些虚拟内存页面的未使用列表更新为未使用。由管理程序执行操作2309以通知管理代理302可获得未使用内存。由例如管理程序606的管理程序执行操作2310,以请求优化的分配内存802形式的内存。在某些示例实施例中,内存被扩大并分配,如图7和图8所表明。
在某些示例实施例中,方法2300实现基于VM扩大的容量大小调整的过程,其中内存容量从计算刀片102取走,并给予计算刀片101。计算刀片101和102都可以可操作地联结到同一内存刀片103。在一个示例实施例中,执行操作2301以方便管理代理302请求从计算刀片102取走虚拟内存容量并将其给予计算刀片101。执行操作2302以指令管理程序202扩大气球驱动301(例如,指令气球驱动请求分配内存)。执行操作2303以指令管理程序202所管理的OS 205释放虚拟内存页面。未使用页面被分配给气球驱动301。执行操作2304以经由将脏页拷贝到本地缓冲器中并将这些脏页刷到主内存来将脏页刷到主内存。执行操作2305以选择性地指令管理程序设立磁盘设备驱动,从而将远程虚拟内存页面直接写入主内存中。操作2307在执行时从作为邻近内存的气球驱动301向管理程序202返回未使用页面的列表。该邻近内存驻留在内存刀片103上。在某些示例实施例中,通过执行操作2308,管理程序202开始远程到本地的页面拷贝,针对远程非邻近页面,管理程序202请求内存刀片103在其本身内进行页面拷贝。这种拷贝最终在内存刀片上创建大的未使用空间块,如703处所示。由管理程序202执行操作2308以请求内存刀片未使用远程页面,并且将这些虚拟内存页面记录为其气球内存的一部分。执行操作2310以通知管理程序606关于远程页面的可用性。
图24是示出操作2208的执行的流程图。示出了操作2401,该操作在执行时方便管理程序202将气球驱动301所分配的内存包装为邻近内存703。由管理程序202执行操作2402以请求内存刀片103上的内存位置。执行操作2403以方便管理代理208通知管理程序606邻近内存803可用。
图25是示例计算机系统2500的图。示出了CPU 2501。处理器芯片201可以是CPU 2501。在某些示例实施例中,可以以多个核的形式(例如,多核计算机系统)或以某些其它合适的配置在计算机系统2500上实现多个CPU。某些示例CPU包括x86系列CPU。静态随机存取存储器(SRAM)2502可操作地连接至CPU 2501。可操作连接包括物理连接或逻辑连接,例如,点对点连接、光学连接、总线连接或某些其它合适的连接。示出了作为内存控制集线器(MCH)或集成内存控制器(IMC)已知的北桥2504,其处理CPU与PCI、动态随机存取存储器(DRAM)和南桥之间的通信。PCI端口2503被示出为提供用于连接至图形卡和相关联的GPU的计算机扩展口。以太网端口2505被示出为可操作地连接至北桥2504。数字视频接口(DVI)2507被示出为可操作地连接至北桥2504。另外,模拟视频图形阵列(VGA)端口2506被示出为可操作地连接至北桥2504。北桥2504和南桥2511的连接是点对点链接2509。在某些示例实施例中,点对点链接2509由以上所述的物理或逻辑连接之一替代。还图示了也作为I/O控制集线器(ICH)或平台控制集线器(PCH)所知的南桥2511。高分辨率(HD)音频端口2508、引导RAM端口2512、PCI端口2510、通用串行总线(USB)端口2513、串行高级技术附件(SATA)端口2514以及少针脚(LCP)总线的端口2515可操作地连接至南桥2511。超输入/输出(I/O)控制器2516可操作地连接至南桥2511,以便为低带宽设备(例如,键盘、鼠标、串行端口、并行端口、磁盘控制器)提供接口。并行端口2517和串行端口2518可操作地连接至超I/O控制器2516。
SATA端口2514可以与永久性储存介质(例如,光储存设备或磁储存设备)连接,永久性储存介质包括存储由这里所图示的方法或功能中任意一个或多个使用或采用的一个或多个指令集和数据结构(例如,软件)的机器可读介质。软件还可以在其通过计算机系统2500执行期间完全或至少部分地驻留在SRAM 2502内和/或CPU 2501内。指令可以进一步通过10/100/1000以太网端口2505、USB端口2513或这里所图示的某些其它合适的端口被传输或接收。
在某些示例实施例中,可移动物理储存介质被示出为单个介质,并且术语“机器可读介质”应当理解为包括存储一个或多个指令集的单个介质或多介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“机器可读介质”还应当理解为包括能够存储、编码或承载供机器执行的指令集并且使机器执行这里所图示的一个或多个方法中任意方法的任意介质。因此,术语“机器可读介质”应当被理解为包括但不限于固态存储器、光和磁介质以及载波信号。
(软件的)数据和指令存储在被实现为一个或多个计算机可读或计算机可使用储存介质的相应储存设备中。储存介质包括不同形式的存储器,该不同形式的存储器包括诸如DRAM或SRAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存的半导体存储设备;诸如硬盘、软盘和可移动磁盘的磁盘;包括磁带的其它磁介质;以及诸如光盘(CD)或数字多用光盘(DVD)的光学介质。注意,以上所述的软件的指令可以提供在计算机可读或计算机可用储存介质上,或可替代地,可以提供在分布于具有可能的多个节点的大系统中的多个计算机可读或计算机可用储存介质上。这种计算机可读或计算机可用储存介质被认为是物品(或制造品)的一部分。物品或制造品可以指所制造的任意单个组件或多个部件。
在前述描述中,记载了众多细节以提供对本发明的理解。然而,本领域技术人员可以理解,本发明可以在没有这些细节的情况下实现。尽管针对有限数目的实施例公开了本发明,但是本领域技术人员可以理解基于所公开实施例的众多修改和变化。旨在由所附的权利要求覆盖落入本发明的“真正”精神和范围内的这种修改和变化。
Claims (15)
1.一种计算机实现的方法,包括:
使用驻留在计算刀片上的管理程序模块比较目标内存地址和本地内存大小,所述比较基于所述目标内存地址的数字信息的单位和所述本地内存大小的数字信息的附加单位;
使用驻留在所述管理程序模块上的交换模块来交换本地虚拟内存页面与远程虚拟内存页面,所述交换基于所述目标内存地址与所述本地内存大小的所述比较;以及
使用驻留在所述计算刀片上的传输模块将所述本地虚拟内存页面传输到内存刀片。
2.根据权利要求1所述的计算机实现的方法,进一步包括使用驻留在所述计算刀片上的接收模块从所述内存刀片接收所述远程虚拟内存页面。
3.根据权利要求1所述的计算机实现的方法,其中所述本地内存大小由所述管理程序模块所管理的操作系统来定义,所述操作系统驻留在所述计算刀片上。
4.根据权利要求1所述的计算机实现的方法,进一步包括使用驻留在所述管理程序模块上的所述交换模块来交换所述远程虚拟内存页面与临时本地虚拟内存页面,所述交换基于所述目标内存大小与所述本地内存大小的所述比较。
5.根据权利要求1所述的计算机实现的方法,进一步包括:
使用驻留在所述管理程序模块上的页面识别模块将所述远程虚拟内存页面识别为超页面;
使用驻留在所述管理程序模块上的优化模块来处理所述超页面的一部分;以及
执行由所述管理程序模块所管理的操作系统管理的应用程序,所述执行包括将所述超页面的一部分处理为所述应用程序的指令集。
6.根据权利要求1所述的计算机实现的方法,其中所述内存刀片包括具有协议代理、内存控制器、地址映射或加速器中至少之一的逻辑架构。
7.根据权利要求6所述的计算机实现的方法,其中所述地址映射基于包括电力消耗或热产生中至少之一的考虑。
8.根据权利要求1所述的计算机实现的方法,进一步包括使用驻留在所述管理程序模块上的逻辑模块向本地内存分配值指派本地内存可用值,其中所述目标内存大小小于可用的本地内存大小。
9.根据权利要求1所述的计算机实现的方法,进一步包括使用驻留在所述管理程序模块上的逻辑模块向本地内存指派目标内存大小,其中所述目标内存大小大于可用的本地内存大小。
10.根据权利要求1所述的计算机实现的方法,进一步包括使用驻留在所述管理程序模块上的逻辑模块向分配的远程内存指派所述目标内存大小与所述本地内存大小之间的差值,其中可用的远程内存与分配的本地内存之和大于或等于所述目标内存大小。
11.一种计算机可读介质,该计算机可读介质上存储有供管理至少一个虚拟机的管理程序模块访问的数据结构,所述数据结构包括:
第一字段,所述第一字段包括用于标记至少一个虚拟参数数据对象的第一机器地址数据对象,所述标记用于识别为所述至少一个虚拟机分配的虚拟内存页面;
第二字段,所述第二字段包括所述至少一个虚拟参数数据对象,所述至少一个虚拟参数数据对象包括至少一个虚拟机地址和所述虚拟内存页面的至少一个虚拟地址;以及
第三字段,所述第三字段包括第二机器地址数据对象,所述第二机器地址数据对象被指派一标记,以在所述管理程序模块所管理的另一虚拟机访问所述虚拟页面时访问所述至少一个虚拟参数数据对象。
12.根据权利要求11所述的数据结构,其中所述第一机器地址数据对象和所述第二机器地址数据对象使用包括模运算或移位中至少之一的技术根据内存地址而生成。
13.根据权利要求11所述的数据结构,其中所述标记包括内存位置或相邻的内存单元中至少之一。
14.一种计算机实现的方法,包括:
使用驻留在对至少一个虚拟机进行管理的管理程序模块上的接收模块来接收气球命令;
使用驻留在所述至少一个虚拟机上的气球代理为所述虚拟机分配内存;
使用驻留在所述管理程序模块上的包装模块将所分配的内存包装为以邻近方式组织的内存;以及
使用驻留在所述管理程序模块上的传输模块向所述以邻近方式组织的内存传输标记。
15.根据权利要求14所述的计算机实现的方法,其中邻近内存驻留在内存刀片上。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2009/049036 WO2011002436A1 (en) | 2009-06-29 | 2009-06-29 | Hypervisor-based management of local and remote virtual memory pages |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102460400A true CN102460400A (zh) | 2012-05-16 |
CN102460400B CN102460400B (zh) | 2014-09-24 |
Family
ID=43411305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980160198.7A Expired - Fee Related CN102460400B (zh) | 2009-06-29 | 2009-06-29 | 基于管理程序的本地和远程虚拟内存页面管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8788739B2 (zh) |
EP (1) | EP2449469B1 (zh) |
CN (1) | CN102460400B (zh) |
WO (1) | WO2011002436A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984599A (zh) * | 2014-04-14 | 2014-08-13 | 北京大学 | 一种提高操作系统大页使用率的方法 |
US9069669B2 (en) | 2012-10-11 | 2015-06-30 | Industrial Technology Research Institute | Method and computer system for memory management on virtual machine |
CN105808448A (zh) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | 内存管理方法及系统 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949295B2 (en) * | 2006-09-21 | 2015-02-03 | Vmware, Inc. | Cooperative memory resource management via application-level balloon |
US8583875B1 (en) | 2010-07-13 | 2013-11-12 | Vmware, Inc. | Efficient readable ballooning of guest memory by backing balloon pages with a shared page |
US8793427B2 (en) | 2011-02-10 | 2014-07-29 | Hewlett-Packard Development Company, L.P. | Remote memory for virtual machines |
US8943260B2 (en) * | 2011-03-13 | 2015-01-27 | International Business Machines Corporation | Dynamic memory management in a virtualized computing environment |
US9280458B2 (en) * | 2011-05-12 | 2016-03-08 | Citrix Systems, Inc. | Reclaiming memory pages in a computing system hosting a set of virtual machines |
US9268678B2 (en) * | 2011-12-02 | 2016-02-23 | Vmware, Inc. | Memory defragmentation in a hosted hypervisor |
US10019371B2 (en) | 2012-04-27 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Data caching using local and remote memory |
US9330013B2 (en) | 2012-06-28 | 2016-05-03 | Industrial Technology Research Institute | Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith |
TWI475489B (zh) * | 2012-06-28 | 2015-03-01 | Ind Tech Res Inst | 複製虛擬機器的記憶體資料的方法、其電腦程式產品以及電腦系統 |
US9336035B2 (en) * | 2012-10-23 | 2016-05-10 | Vmware, Inc. | Method and system for VM-granular I/O caching |
US9311209B2 (en) * | 2012-11-27 | 2016-04-12 | International Business Machines Corporation | Associating energy consumption with a virtual machine |
US9055119B2 (en) | 2013-03-26 | 2015-06-09 | Vmware, Inc. | Method and system for VM-granular SSD/FLASH cache live migration |
WO2015000106A1 (en) * | 2013-07-01 | 2015-01-08 | Intel Corporation | Efficient graphics virtualization with address ballooning |
US9507727B2 (en) | 2013-07-17 | 2016-11-29 | Bitdefender IPR Management Ltd. | Page fault injection in virtual machines |
CN104426971B (zh) * | 2013-08-30 | 2017-11-17 | 华为技术有限公司 | 一种远程内存交换分区方法、装置及系统 |
US20150234669A1 (en) * | 2014-02-17 | 2015-08-20 | Strato Scale Ltd. | Memory resource sharing among multiple compute nodes |
US9396014B2 (en) | 2014-02-27 | 2016-07-19 | International Business Machines Corporation | Data swap in virtual machine environment |
KR102116984B1 (ko) * | 2014-03-11 | 2020-05-29 | 삼성전자 주식회사 | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 |
US10061725B2 (en) | 2014-04-03 | 2018-08-28 | Strato Scale Ltd. | Scanning memory for de-duplication using RDMA |
KR102254099B1 (ko) * | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
US10101936B2 (en) | 2014-07-28 | 2018-10-16 | Hewlett Packard Enterprise Development Lp | Memory access control |
WO2016018233A1 (en) * | 2014-07-28 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Memory access control |
US9912748B2 (en) | 2015-01-12 | 2018-03-06 | Strato Scale Ltd. | Synchronization of snapshots in a distributed storage system |
US9626221B2 (en) | 2015-02-24 | 2017-04-18 | Red Hat Israel, Ltd. | Dynamic guest virtual machine identifier allocation |
WO2016135570A1 (en) | 2015-02-26 | 2016-09-01 | Strato Scale Ltd. | Using access-frequency hierarchy for selection of eviction destination |
CN106302201A (zh) * | 2015-05-14 | 2017-01-04 | 华为技术有限公司 | 流量控制方法、设备和系统 |
US10055136B2 (en) | 2015-07-29 | 2018-08-21 | Red Hat Israel, Ltd. | Maintaining guest input/output tables in swappable memory |
US9904567B2 (en) | 2015-08-13 | 2018-02-27 | Red Hat Israel, Ltd. | Limited hardware assisted dirty page logging |
US10713175B2 (en) | 2015-12-02 | 2020-07-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and memory availability managing module for managing availability of memory pages |
US20180227201A1 (en) * | 2017-02-08 | 2018-08-09 | International Business Machines Corporation | System, method and computer program product for test-driven node selection for a distributed system |
US10509733B2 (en) | 2017-03-24 | 2019-12-17 | Red Hat, Inc. | Kernel same-page merging for encrypted memory |
WO2018182473A1 (en) | 2017-03-31 | 2018-10-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Performance manager and method performed thereby for managing the performance of a logical server of a data center |
US10209917B2 (en) * | 2017-04-20 | 2019-02-19 | Red Hat, Inc. | Physical memory migration for secure encrypted virtual machines |
US10379764B2 (en) | 2017-05-11 | 2019-08-13 | Red Hat, Inc. | Virtual machine page movement for encrypted memory |
US10452613B2 (en) * | 2017-07-19 | 2019-10-22 | Sap Se | Persistent directory for variable-size entry container free-space handling |
US11354420B2 (en) | 2017-07-21 | 2022-06-07 | Red Hat, Inc. | Re-duplication of de-duplicated encrypted memory |
KR102469927B1 (ko) * | 2017-10-16 | 2022-11-23 | 한국전자통신연구원 | 분할 메모리 관리장치 및 방법 |
US10691590B2 (en) | 2017-11-09 | 2020-06-23 | International Business Machines Corporation | Affinity domain-based garbage collection |
US10552309B2 (en) | 2017-11-09 | 2020-02-04 | International Business Machines Corporation | Locality domain-based memory pools for virtualized computing environment |
US10445249B2 (en) | 2017-11-09 | 2019-10-15 | International Business Machines Corporation | Facilitating access to memory locality domain information |
US10394596B2 (en) | 2017-12-07 | 2019-08-27 | Red Hat, Inc. | Tracking of memory pages by a hypervisor |
CN110362311B (zh) * | 2019-06-18 | 2023-03-14 | 创新先进技术有限公司 | 用于辅助位图对象内存分配的方法及装置 |
US11614956B2 (en) | 2019-12-06 | 2023-03-28 | Red Hat, Inc. | Multicast live migration for encrypted virtual machines |
US11853798B2 (en) * | 2020-09-03 | 2023-12-26 | Microsoft Technology Licensing, Llc | Disaggregated memory pool assignment |
US20230153171A1 (en) * | 2020-10-28 | 2023-05-18 | Red Hat, Inc. | Memory ballooning related memory allocation techniques for execution environments |
US11550729B2 (en) * | 2020-10-28 | 2023-01-10 | Red Hat, Inc. | Memory ballooning related memory allocation techniques for virtual machines |
US11740921B2 (en) * | 2020-11-23 | 2023-08-29 | Google Llc | Coordinated container scheduling for improved resource allocation in virtual computing environment |
WO2022125112A1 (en) * | 2020-12-11 | 2022-06-16 | Hewlett-Packard Development Company, L.P. | Determination policy compliance of processing unit |
CN116700903B (zh) * | 2023-08-08 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 面向云计算的虚拟机的内存调节方法、系统、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064723A1 (en) * | 2001-10-31 | 2004-04-01 | Barnes Brian C. | Method and apparatus for physical address-based security to determine target security |
US20040148468A1 (en) * | 2003-01-16 | 2004-07-29 | Ip-First, Llc. | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN1881187A (zh) * | 2005-06-08 | 2006-12-20 | 戴尔产品有限公司 | 用于自动优化可用虚拟内存的系统和方法 |
US7330942B2 (en) * | 2004-07-31 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method for efficient virtualization of physical memory in a virtual-machine monitor |
US20080077767A1 (en) * | 2006-09-27 | 2008-03-27 | Khosravi Hormuzd M | Method and apparatus for secure page swapping in virtual memory systems |
US20080294846A1 (en) * | 2005-08-26 | 2008-11-27 | Naveen Bali | Dynamic optimization of cache memory |
US20090006714A1 (en) * | 2007-06-26 | 2009-01-01 | David Durham | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047382B2 (en) * | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6742097B2 (en) * | 2001-07-30 | 2004-05-25 | Rambus Inc. | Consolidation of allocated memory to reduce power consumption |
EP1870814B1 (en) * | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US7673105B2 (en) * | 2005-06-27 | 2010-03-02 | Ab Inition Technology LLC | Managing memory pages |
US7543123B2 (en) * | 2005-11-07 | 2009-06-02 | International Business Machines Corporation | Multistage virtual memory paging system |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US8015383B2 (en) * | 2007-06-27 | 2011-09-06 | International Business Machines Corporation | System, method and program to manage virtual memory allocated by a virtual machine control program |
US8156492B2 (en) * | 2007-09-07 | 2012-04-10 | Oracle International Corporation | System and method to improve memory usage in virtual machines running as hypervisor guests |
US7543109B1 (en) * | 2008-05-16 | 2009-06-02 | International Business Machines Corporation | System and method for caching data in a blade server complex |
US8739179B2 (en) * | 2008-06-30 | 2014-05-27 | Oracle America Inc. | Method and system for low-overhead data transfer |
US8024546B2 (en) * | 2008-10-23 | 2011-09-20 | Microsoft Corporation | Opportunistic page largification |
US20100161908A1 (en) * | 2008-12-18 | 2010-06-24 | Lsi Corporation | Efficient Memory Allocation Across Multiple Accessing Systems |
US9384062B2 (en) * | 2008-12-27 | 2016-07-05 | Vmware, Inc. | Artificial neural network for balancing workload by migrating computing tasks across hosts |
US20100217952A1 (en) * | 2009-02-26 | 2010-08-26 | Iyer Rahul N | Remapping of Data Addresses for a Large Capacity Victim Cache |
-
2009
- 2009-06-29 EP EP09846927.3A patent/EP2449469B1/en not_active Not-in-force
- 2009-06-29 CN CN200980160198.7A patent/CN102460400B/zh not_active Expired - Fee Related
- 2009-06-29 WO PCT/US2009/049036 patent/WO2011002436A1/en active Application Filing
- 2009-06-29 US US13/259,113 patent/US8788739B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064723A1 (en) * | 2001-10-31 | 2004-04-01 | Barnes Brian C. | Method and apparatus for physical address-based security to determine target security |
US20040148468A1 (en) * | 2003-01-16 | 2004-07-29 | Ip-First, Llc. | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
US7330942B2 (en) * | 2004-07-31 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method for efficient virtualization of physical memory in a virtual-machine monitor |
CN1881187A (zh) * | 2005-06-08 | 2006-12-20 | 戴尔产品有限公司 | 用于自动优化可用虚拟内存的系统和方法 |
US20080294846A1 (en) * | 2005-08-26 | 2008-11-27 | Naveen Bali | Dynamic optimization of cache memory |
US20080077767A1 (en) * | 2006-09-27 | 2008-03-27 | Khosravi Hormuzd M | Method and apparatus for secure page swapping in virtual memory systems |
US20090006714A1 (en) * | 2007-06-26 | 2009-01-01 | David Durham | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069669B2 (en) | 2012-10-11 | 2015-06-30 | Industrial Technology Research Institute | Method and computer system for memory management on virtual machine |
TWI507870B (zh) * | 2012-10-11 | 2015-11-11 | Ind Tech Res Inst | 虛擬機的記憶體管理方法和電腦系統 |
CN103984599A (zh) * | 2014-04-14 | 2014-08-13 | 北京大学 | 一种提高操作系统大页使用率的方法 |
CN105808448A (zh) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | 内存管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2449469A1 (en) | 2012-05-09 |
CN102460400B (zh) | 2014-09-24 |
WO2011002436A1 (en) | 2011-01-06 |
EP2449469B1 (en) | 2019-04-03 |
US8788739B2 (en) | 2014-07-22 |
EP2449469A4 (en) | 2013-05-22 |
US20120030406A1 (en) | 2012-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102460400B (zh) | 基于管理程序的本地和远程虚拟内存页面管理 | |
CN103597451B (zh) | 用于高可用性的存储器镜像和冗余生成 | |
KR102556431B1 (ko) | 이종 불휘발성 메모리 형태를 갖는 솔리드 스테이트 드라이브 | |
CN104364775B (zh) | 具有段偏移寻址的专用存储器访问路径 | |
CN104572495B (zh) | 使用细粒度级别的重映射的混合主存储器 | |
US9256527B2 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
CN102612685B (zh) | 经由存储器高速缓存操纵的无阻碍数据传送 | |
US11341059B2 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
CN108139902A (zh) | 用于提供混合模式来访问ssd驱动器的方法和装置 | |
CN106484628A (zh) | 基于事务的混合存储器模块 | |
CN102483719A (zh) | 基于块的非透明高速缓存 | |
CN102985910A (zh) | 对无用存储单元收集的gpu支持 | |
CN104487953A (zh) | 用于层次型存储器系统的存储器管理 | |
CN102792285A (zh) | 层级转换表控制 | |
TW201502781A (zh) | 解決記憶體存取錯誤時重播記憶體交易 | |
US8145870B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
CN103729306A (zh) | 经由地址范围检查的多cpu块无效操作绕过 | |
CN101510176A (zh) | 通用操作系统对cpu二级缓存访问的控制方法 | |
CN103999057A (zh) | 具有开关的相变存储器(pcms)的元数据管理和支持 | |
US20210141736A1 (en) | Storage class memory access | |
CN104813293A (zh) | 使用动态分配的脏掩码空间的存储器管理 | |
US7721047B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US9507534B2 (en) | Home agent multi-level NVM memory architecture | |
TWI648625B (zh) | 管理位址獨立的頁面屬性 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160930 Address after: Texas, USA Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT L.P. Address before: Texas, USA Patentee before: Hewlett-Packard Development Co.,L.P. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140924 |