CN104133775A - 一种用于管理存储器的方法和装置 - Google Patents

一种用于管理存储器的方法和装置 Download PDF

Info

Publication number
CN104133775A
CN104133775A CN201410176022.3A CN201410176022A CN104133775A CN 104133775 A CN104133775 A CN 104133775A CN 201410176022 A CN201410176022 A CN 201410176022A CN 104133775 A CN104133775 A CN 104133775A
Authority
CN
China
Prior art keywords
virtual memory
course
virtual
application
virtual key
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
CN201410176022.3A
Other languages
English (en)
Other versions
CN104133775B (zh
Inventor
M·H·道森
A·K·延格尔
G·约翰逊
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.)
Core Usa Second LLC
GlobalFoundries Inc
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104133775A publication Critical patent/CN104133775A/zh
Application granted granted Critical
Publication of CN104133775B publication Critical patent/CN104133775B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • 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
    • 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; CALCULATING OR 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; CALCULATING OR 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种用于管理存储器的方法和装置。提供一种用于在计算***中管理存储器的方法,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述方法包括以下步骤:由所述应用标识虚拟存储器范围,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;由所述应用获得与所述虚拟存储器范围对应的至少一个存储器地址;以及将所述虚拟存储器范围的标识符和与所述虚拟存储器范围对应的所述存储器地址从所述应用传递到所述虚拟化控制层,其中所述虚拟化控制层可使用所述标识符来标识所述虚拟存储器中的类似范围。

Description

一种用于管理存储器的方法和装置
技术领域
本申请涉及计算***中的数据管理,更具体地说,涉及存储器去重。
背景技术
存储器去重允许多个虚拟存储器页(这些虚拟存储器页跨在同一***管理程序下运行的不同虚拟机(VM)具有相同的内容)共享单个物理存储器页。由于备援相同数量的虚拟页所需的物理页更少,因此支持相同应用负载所需的实际存储器也变少。相关技术经常在单个操作***实例内使用,以便共享备援各个进程的虚拟页的物理页。
所需总存储器的潜在节省刺激某些操作***设计实施去重。现有的实现依赖于在后台扫描页,或者在引导下扫描***中的剩余页以查找相同页。这些操作***设计支持有关哪些页可能是去重的良好候选的暗示,以便立即对照***中的剩余页比较这些页,或者基于优先级来比较这些页。无论有无此提示,均对照被考虑进行去重的集合中的所有其它页,通过搜索找到匹配。即使在不支持去重的操作***中,通常也会设置此机制以便尝试跨多个VM共享页。
扫描所有页的成本不可谓不大,现有的实现反映出此成本。例如,某些操作***延迟扫描页,直到这些页在一段时间(例如,数分钟)内“稳定下来”(即,达到稳态),而另一些操作***选择根本不实现去重。对于某些计算平台而言,特别是对于其中基于CPU周期对客户收费的平台而言,成本也可以是一个重要的问题。
尽管现有实现中的提示可在扫描方面给与某些页优先级,但是它们不会降低整体成本,因为仍对照被考虑进行去重的集合中的剩余页扫描这些页。现有扫描全部页以查找重复的方法随着页大小的增加也变得缺乏效率,因为在每页上找到匹配的几率变低。此问题的后果是:一些支持去重的***管理程序延迟大量页的处理,直到***已在存储器压力下为止。在这些情况下,无法评估对页执行去重时获得的益处,从而更难计算和供应所需的存储器量。
这样,现有的去重实现包括—但不限于—以下一个或多个缺点:(i)没有提示,无法立即找到重复,因为允许页先趋于稳定,然后再考虑执行去重;(ii)在找到重复之前,需要有段延迟才能开始扫描,因为必须比较许多页才能找到匹配页;(iii)比较不匹配的页会消耗CPU周期;(iv)去重可被延迟,直到***受到存储器压力,从而更难及时恢复以避免性能降级;以及(v)如果没有存储器压力,页可能不会被去重,从而更难计算和供应所需的存储器量。
发明内容
本发明的各实施例提供用于存储器去重的技术。
例如,在一个实施例中,一种方法包括以下步骤。一种用于在计算***中管理存储器的方法,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述方法包括以下步骤:由所述应用标识虚拟存储器范围,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;由所述应用获得与所述虚拟存储器范围对应的至少一个存储器地址;以及将所述虚拟存储器范围的标识符和与所述虚拟存储器范围对应的所述存储器地址从所述应用传递到所述虚拟化控制层,其中所述虚拟化控制层可使用所述标识符来标识所述虚拟存储器中的类似范围。
在另一实施例中,一种方法包括以下步骤。一种用于在计算***中管理存储器的方法,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述方法包括以下步骤:在所述虚拟化控制层处从所述应用接收虚拟存储器范围的标识符以及与所述虚拟存储器范围对应的至少一个存储器地址,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;以及由所述虚拟化控制层使用所述标识符来标识所述虚拟存储器内的类似范围。
在又一实施例中,一种用于在计算***中管理存储器的装置,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述装置包括:被配置为由所述应用标识虚拟存储器范围的模块,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;被配置为由所述应用获得与所述虚拟存储器范围对应的至少一个存储器地址的模块;以及被配置为将所述虚拟存储器范围的标识符和与所述虚拟存储器范围对应的所述存储器地址从所述应用传递到所述虚拟化控制层的模块,其中所述虚拟化控制层可使用所述标识符来标识所述虚拟存储器中的类似范围。
在又一实施例中,一种用于在计算***中管理存储器的装置,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述装置包括:被配置为在所述虚拟化控制层处从所述应用接收虚拟存储器范围的标识符以及与所述虚拟存储器范围对应的至少一个存储器地址的模块,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;以及被配置为由所述虚拟化控制层使用所述标识符来标识所述虚拟存储器内的类似范围的模块。
当结合附图阅读下面对示例性实施例的详细描述时,本发明的这些及其它目标、特征和优点将变得显而易见。
附图说明
图1示出根据本发明的一个实施例的具有存储器去重的虚拟化主机计算***的框图;
图2示出根据本发明一个实施例的存储器去重模块的框图;
图3A示出根据本发明一个实施例的存储器去重方法的流程图;
图3B示出根据本发明的另一实施例的存储器去重方法的流程图;
图4是根据本发明的一个实施例的计算***的框图,根据该计算***,实现存储器去重模块/方法的一个或多个组件/步骤。
具体实施方式
下面将在示例性虚拟化主机计算***环境的上下文中描述涉及存储器去重的本发明的各实施例。但是应该理解,此处描述的存储器去重技术不限于此特定类型的示例性虚拟化主机计算***环境,而且更一般地可应用于任何从这种改进的存储器去重技术中受益的虚拟化计算***。例如,尽管某些实施例在此通过直接在主机计算***的硬件上执行的***管理程序(被称为“类型1”***管理程序)进行描述,但是本发明的某些实施例也包括其中***管理程序(被称为“类型2”***管理程序)在主机计算***的操作***(在主机硬件上执行)上执行的配置。进一步地,本发明的某些实施例包括类型1和类型2***管理程序配置的混合。更进一步地,本发明的某些实施例向没有***管理程序的计算***中的操作***提供改进的存储器去重。
因此,如此处所用,***管理程序、操作***或它们的某一组合可更一般地被称为“虚拟化控制层”。
如此处所用,短语“虚拟化主机计算***”指托管诸如一个或多个虚拟机(VM)之类的一个或多个逻辑处理组件的物理计算***。
如此处所用,术语“存储器去重”指避免和/或撤销存储器部分重复的过程,即,避免或撤销两个或更多存储相同数据的存储器部分。例如,在包括虚拟存储器和物理存储器的虚拟化主机计算***的情况下,存储器去重旨在避免或撤销针对相同的虚拟存储器部分分配的两个或更多物理存储器部分,下面将对此进行描述。
图1示出根据本发明的一个实施例的具有存储器去重功能的虚拟化主机计算***。虚拟化主机计算***100在图1中按照功能层示出,在所述功能层中,直接位于另一层之上的层被视为在该另一层上执行(运行)(它们直接交互)。这样,如图所示,***100包括主机硬件102、在主机硬件102上执行的***管理程序104,以及在***管理程序104上执行的多个VM106-1至106-M。如上所述,在备选配置中,主机操作***可在功能上驻留于主机硬件102与***管理程序104之间。另外,***管理程序104和主机操作***可以在其它备选实施例中形成混合层。进一步地,在备选实施例中,计算***可以根本不包括***管理程序层,从而由主机操作***处理存储器去重功能。
如图所示,VM106-1至106-M均包括来宾操作***(即,来宾操作***108-1至108-M)。如图所示,***管理程序104提供多个来宾操作***同时在单个主机计算***上执行并彼此共享硬件资源(主机硬件102)的能力。在每个来宾操作***中执行的有应用(即,分别为应用110-1至110-M)、一个或多个应用编程接口(即,分别为API112-1至112-M),以及虚拟存储器(即,分别为虚拟存储器114-1至114-M)。应用可以包括一个或多个被设计为执行一项或多项功能(具体取决于该应用在设计上指定的特殊目的)的软件程序。虚拟存储器通常被分为多个虚拟存储器页。虚拟存储器页是虚拟存储器的由一组(或一系列)虚拟存储器地址所标识的一部分。在一个实施例中,由起始地址和虚拟页大小定义虚拟页。
主机硬件102包括物理处理组件,例如一个或多个CPU(中央处理单元)116和物理存储器118。物理存储器118指主机计算***100的一个或多个物理存储设备的存储器。与虚拟存储器相同,物理存储器一般也分为多个存储器页,但是在此情况下指多个物理存储器页。在此,物理存储器页是物理存储器的由一组(或一系列)物理存储器地址所标识的一部分。在一个实施例中,由起始地址和物理页大小定义物理页。众所周知,物理存储器页用于“备援”虚拟存储器页,即,数据并非实际存储在虚拟存储器中,而是虚拟存储器位置指向实际存储数据的物理存储器位置。
例如,存储器去重的主要目的是分配将被多个虚拟存储器页共享的单个物理存储器页,这些虚拟存储器页跨在同一***管理程序下运行的不同虚拟机(VM)具有相同的内容。如下面将进一步详细描述的,在图1的***管理程序104中,使用页表(多个)122的去重处理机120管理虚拟存储器页与物理存储器页之间的对应并提供存储器去重功能。此外将理解,本发明的存储器去重实施例扩展到“增量编码”概念,在此概念中,存储器中的页稍有不同,因此,每个存储器页可被存储为基页和偏移,其中偏移表示两个存储器页之间的差异。这样,通过对基页执行去重而实现存储器节省。
将理解,尽管图1的实例中仅示出单个***管理程序104,但是本发明的一个给定实施例可以包括多个***管理程序,每个***管理程序在其自己的主机硬件102部分上运行。而且,在备选实施例中,虚拟化主机计算***100可实现为一个以上的计算***,其中包括主机计算***100的多个计算***彼此相对地进行分布。
相应地,如下面更详细描述的,本发明的各实施例提供改进的存储器去重。仅作为实例,各存储器去重实施例:通过仅比较具有极高匹配可能性(优选地为100%的可能性)的存储器页来减少对存储器执行去重的成本;在创建重复的存储器页之后立即执行扫描;以及无需有关可能被共享的工件(例如JavaTM工件(Oracle Corporation,雷德伍德城,加州))的先验知识。
现有的存储器去重方法不能实现这些优点,因为除了其它因素之外,它们不具备执行此操作的信息。本发明的各实施例认识到所需的信息仅对***管理程序104之上的层已知(即,为来宾操作***108和/或应用110所知),并且所需的信息多于现有方法中支持的提示所传递的信息。
本发明的各实施例允许***管理程序之上的一个或多个层提供有关哪些虚拟页与其它页重复的具体信息。在一个实施例中,至少一个此类更高的层被配置为向***管理程序提供包括一个或多个页的范围以及标识该范围的标识符(例如,称为match_token)。***管理程序仅将所提供的页范围与其它具备相同match_token的范围进行比较。较高层(多个)选择其标志(token),以便相同和/或不同来宾操作***中的多个进程可针对将重复的页提供同一match_token。这允许***管理程序(或诸如主机操作***之类的其它层)中的有效去重成为可共享的一组存储页。
相应地,如此处进一步描述的,示例性存储器去重实施例除了其它项之外,还包括:(i)将match_token和页范围传递到***管理程序以引导去重,以使***仅比较彼此重复的页(***仍执行比较以验证页相同);(ii)一个或多个API,其允许将match_token和页范围从应用向下传递到来宾操作***,然后在运行时从来宾操作***传递到***管理程序;(iii)一个或多个API,其允许在JavaTM环境中运行的应用轻松引导JavaTM工件的去重;以及(iv)用于选择可跨来宾操作***使用的match_token的技术。
图2示出根据本发明一个实施例的存储器去重模块。将理解,去重处理机(模块)200对应于图1中的去重处理机120。虽然上面已提到,在各示例性实施例中,去重处理机由***管理程序实现,但是该模块也可以备选地在虚拟化主机计算***的其它层中实现。
下面的示例性描述假设去重处理机200在***管理程序中实现。图3A示出根据本发明一个实施例的与图2的去重处理机200相结合的存储器去重方法300。方法300被称为“应用引导的”存储器去重,因为在该实施例中,应用为***管理程序(即,去重处理机200)提供用于实现此处描述的改进型存储器去重的信息。
在该实施例中,***管理程序(图1中的104)为每个来宾操作***(图1中的108-1至108-M)提供API(图1中的112-1至112-M),此API用于针对虚拟存储器202(来自图1中的虚拟存储器114-1至114-M之一)的至少一个页传递该虚拟页的起始地址208、该虚拟页的大小210,以及标识该虚拟页的match_token212。在图3的步骤302,针对由给定来宾操作***中运行的给定应用所标识的每个虚拟页,将此信息传递到去重处理机。一个或多个虚拟存储器页表示给定虚拟存储器的一个区域或范围。
例如,假设JavaTM环境—JavaTM虚拟机(JVM)—将只读工件置于共享存储器区域中以便跨进程分摊JVM占用。也可跨虚拟来宾操作***共享该存储器区域。因此,根据此处描述的存储器去重方法,JVM被配置为提供match_token(例如,JVM_shared_data_<jvm_version>)以加速页去重。
在一个备选实施例中,起始地址208、大小201和match_token212可从来宾操作***被传递到去重处理机200(而非直接从应用传递),尽管由应用确定要传递的信息仍然是优选的。
在步骤304,***管理程序104(或操作***)经由映射结构将虚拟地址和范围映射成备援该虚拟存储器范围的一组物理存储器页。
在步骤306,去重处理机200针对在步骤302传递到该处的match_token,在页表(多个)214中搜索匹配。页表(多个)214也可被视为映射结构。如果未找到匹配的match_token,则在步骤308,去重处理机200在页表(多个)214中创建新记录,并使用在步骤302传递的标识物理页204-1至204-N(它们备援指定范围中的虚拟页)的match_token以及页总数标记该记录。备选地,***管理程序可存储其以后查找指定范围的物理页所需的信息(例如,起始地址和总长度)。
如果针对被传递到去重处理机的match_token找到匹配,则去重处理机200在步骤310验证指定范围中的存储器的内容与现有已找到的记录的内容相同。如果存储器内容匹配,则方法300继续,否则返回错误消息。
在步骤312,配置***管理程序存储器映射(映射结构),使得用于备援现有记录的虚拟存储器的物理页被用于备援新的虚拟存储器范围。在一个实施例中,可使用存储器管理单元(MMU)页保护和写时复制处理分页来实现此目的。
在步骤314,针对在步骤302被传递到去重处理机200的给定虚拟存储器范围释放物理页(204-1至204-N)。
需要注意,在一个备选实施例中,步骤312可进一步被增强为扩展现有重新映射,以修改用于备援虚拟存储器的页大小以便更好地实现共享。此重新映射可在***管理程序或操作***级别执行,以便最终用户应用中无需更改。
例如,如果页表(多个)214中的现有记录涵盖由大型2M(MB)页备援的为512k(千)字节的范围,则存储器映射可被重新配置为更改用于2MB范围的页大小,以便实际使用64k页,从而允许作为八个64k页对512k字节记录进行去重。
如上所述,在来宾操作***中提供一个或多个API(图1中的112-1至112-M)。此类API可用于将应用(图1中的110-1至110-M)看到的地址映射到***管理程序(104)看到的地址。但是,如上所述,可以备选地在***管理程序或主机操作***中提供此类API。
此类API允许应用指定虚拟存储器的给定部分的起始地址(208)、大小(210)和match_token(212)。所指定的地址是应用进程所看到的地址。来宾操作***(或在备选实施例中位于其它位置)中的API(112)以***管理程序可识别的方式,将此地址映射到向***管理程序标识所述页所需的信息。扩展执行转换所需的功能以便能够转换大量页,并且即使当***管理程序看到的页信息不连续时,也可传递此页信息。也就是说,应用提供虚拟页的地址和长度,但是需要将其映射到物理页地址(所述物理页中的一个或多个物理页可能不连续,并且无法表示为起始地址和长度)。因此,API提供生成该映射的能力。
本发明的各实施例还包括一个或多个可用于标识可被去重的JavaTM工件(只读程序件(program artifact)的一个实例)的API(112-1至112-M)。其实例包括—但不限于—(i)直接字节缓冲区;(ii)存储器映射文件;以及(iii)预编译代码。在这些API中,match_token可由应用指定(如果希望指定唯一标识符),也可使用下面进一步描述的技术(例如,void com.ibm.jvm.Deduplicate.byteBuffer(DirectByffer b、Stringmatch_token))之一针对调用方自动生成match_token。
应该理解,应用被配置为选择match_token。例如,当JVM发送预填充共享类高速缓存时,可在该高速缓存每次被加载到存储器时,为该高速缓存分配唯一标识符,该唯一标识符可用作match_token。如果使用共享文件***加载相同的文件,则文件名可被提供为match_token。
利用应用特定的域知识提供最低的开销,因为无需运行时成本来生成match_token。在没有明显match_token的情况下,仍可获知存储器的内容对于给定工件将是相同的。由于应用参与引导去重,因此当创建工件的主副本时,应用可从存储器内容生成match_token,并将该match_token连同工件本身一起存储(例如,将match_token存储为以后共享的文件中的标头)。每个来宾操作***中应用的实例然后可以读取match_token连同工件的存储器,并将其提供给***管理程序。由于针对工件仅执行一次生成,因此可使用强散列算法来从存储器内容生成match_token。在一个实施例中,可使用MD5散列算法,其中冲突的可能性接近于零。但是,也可采用其它散列算法。
本发明的各实施例也可与增量编码结合使用。在此情景下,match_token用于标识类似但不一定相同的页。增量编码用于使用基页和与基页的偏差编码具有相同match_token的类似但不一定相同的页。对于类似的页,这导致与存储每个页的单个完全副本相比,极大地减小了空间开销。
本发明的各实施例还可用于实现多个进程或VM之间的共享。在此情景下,由希望共享同一对象副本的每个进程或VM使用相同的match_token。在这种情况下,并非所有进程或VM均需要实例化对象副本。只需实例化对应于match_token的对象的一个副本。其它进程和VM然后可共享该对象的副本。
相应地,本发明的各实施例提供至少两种方法来处理对共享页的更新。在一种方法中,针对正在执行更新的进程或VM,对共享页的更新产生页的单独副本。在另一方法中,直接使更新在共享页中就位。所有进程或VM均看到页的更新后的版本。这适合于跨多个进程或VM共享数据对象的情况。
现在参考图3B,其中示出根据本发明另一实施例的存储器去重方法。在方法320,假设计算机***包括在操作***或***管理程序上运行的应用,其中操作***或***管理程序将虚拟存储器页映射到物理存储器页。如上所述,为应用提供API,该API将应用级处的数据结构映射到存储该数据结构的至少一个虚拟存储器地址。在一个实施例中,所述数据结构是虚拟存储器中的虚拟存储器页或某一存储器范围。所述数据结构可以备选地为对象(例如,读入存储器的文件)或JavaTM工件。
在步骤322,应用标识这样的数据结构:其在存储器中重复的概率超过给定阈值。给定阈值的一个实例可以是约90%,但是本发明的各实施例并非旨在限于任何特定的阈值。应用使用API获得与所述数据结构对应的至少一个虚拟存储器地址。
在步骤324,应用将所述数据结构的标识符(即,match_token)和与所述数据结构对应的至少一个虚拟存储器地址传递到***管理程序(或主机操作***)。在步骤326,***管理程序(或主机操作***)使用应用提供的信息来标识虚拟存储器中的类似页。在步骤328,基于所标识的存储器区域而减少***物理存储器中存储的数据。步骤328包括使用去重或增量编码来减少物理存储器页中的冗余信息。
所属技术领域的技术人员知道,本发明的各实施例可以实现为***、装置、方法或计算机程序产品。因此,本发明各实施例可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,本发明的各实施例还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在此将参照方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明的各实施例。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
再次参考图1至3B,附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
相应地,例如如上所述,图1-3B所示的本发明的各实施例还可包括提供一种***,其中所述***包括独立模块(例如,包括软件、硬件或软件及硬件的模块)。仅作为实例,这些模块可以包括—但不限于—语言模型转换模块。这些以及其它模块例如可被配置为执行图1-3B的上下文中描述和示出的步骤。
一个或多个实施例可使用在通用计算机或工作站上运行的软件。现在参考图4,此类实现400例如采用处理器402、存储器404、显示器406(输出设备的一个实例)和键盘408(输入设备的一个实例)。如在此使用的,术语“处理器”旨在包括(但不限于)任何处理设备,例如包括CPU(中央处理单元)和/或其它形式的处理电路的处理设备。此外,术语“处理器”可指一个以上的单独处理器。术语“存储器”旨在包括(但不限于)与处理器或CPU关联的存储器,例如,RAM(随机存取存储器)、ROM(只读存储器)、固定存储器件(例如,硬盘)、可移动存储器件(例如,软盘)、闪存等。此外,如在此使用的,短语“输入/输出设备”旨在包括(但不限于)一个或多个用于将数据输入处理单元的装置,以及一个或多个用于提供与处理单元关联的结果的装置。
处理器402、存储器404和输入/输出设备406/408例如可通过作为数据处理单元412一部分的总线410互连。例如通过总线410,可将适合的互连提供给网络接口414(例如,网卡,可提供此接口以便与计算机网络对接)和介质接口416(例如软盘驱动器或CD-ROM驱动器,可通过此接口以便与介质418对接)。
适合于存储和/或执行程序代码的数据处理***将包括至少一个通过***总线410直接或间接连接到存储器元件404的处理器402。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出(I/O)设备406/408可以直接(例如,通过总线410)或通过中间I/O控制器(为清晰起见已省略)与***相连。
诸如网络接口414之类的网络适配器也可以被连接到***以使所述数据处理***能够通过中间专用或公共网络变得与其它数据处理***或远程打印机或存储器件相连。调制解调器、电缆调制解调器和以太网卡只是当前可用的网络适配器类型中的少数几种。
相应地将理解,图4所示的计算机体系结构400可以代表图1所示的虚拟化主机计算***100的一个示例性物理实现。
如此处使用的那样,服务器包括运行服务器程序的物理数据处理***(例如,图4所示的***412)。另外,计算机体系结构400可以表示诸如膝上型计算机、平板计算机、智能手机或个人计算机之类的客户机的一种示例性实现。
将认识到并且应该理解,上面描述的本发明的示例性实施例可通过多种不同的方式实现。给予了此处提供的本发明的教导后,所属领域的普通技术人员将能够构想本发明的其它实现。实际上,尽管参考附图在此描述了本发明的示例性实施例,但是应当理解,本发明并不限于这些精确的实施例,并且在不偏离本发明的精神和范围的情况下,本领域的技术人员可以做出各种其它更改和修改。

Claims (26)

1.一种用于在计算***中管理存储器的方法,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述方法包括以下步骤:
由所述应用标识虚拟存储器范围,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;
由所述应用获得与所述虚拟存储器范围对应的至少一个存储器地址;以及
将所述虚拟存储器范围的标识符和与所述虚拟存储器范围对应的所述存储器地址从所述应用传递到所述虚拟化控制层,其中所述虚拟化控制层可使用所述标识符来标识所述虚拟存储器中的类似范围。
2.根据权利要求1的方法,还包括以下步骤:使用去重和增量编码中的至少一个减少所述物理存储器中的冗余信息。
3.根据权利要求1的方法,其中所述应用还获得与所述虚拟存储器范围对应的大小并将该大小连同所述标识符和与所述虚拟存储器范围对应的所述存储器地址一起传递到所述虚拟化控制层。
4.根据权利要求3的方法,还包括以下步骤:由所述虚拟化控制层在第一映射结构中搜索与所述应用所传递的所述标识符的匹配。
5.根据权利要求4的方法,还包括以下步骤:当针对所述应用所传递的所述标识符未找到匹配时,所述虚拟化控制层在所述第一映射结构中创建新项。
6.根据权利要求5的方法,还包括以下步骤:在所述虚拟化控制层处验证所述虚拟存储器范围与所述第一映射结构中的匹配项具有相同内容。
7.根据权利要求6的方法,还包括以下步骤:配置第二映射结构,以便用于备援与所述范围对应的虚拟存储器部分的物理存储器部分同样用于备援与所述第一映射结构中的所述匹配项对应的虚拟存储器部分。
8.根据权利要求1的方法,其中所述虚拟存储器范围表示至少一个虚拟存储器页。
9.根据权利要求1的方法,其中所述虚拟存储器范围用于存储至少一个读入存储器的文件。
10.根据权利要求1的方法,其中所述虚拟存储器范围用于存储至少一个只读程序件。
11.根据权利要求1的方法,其中所述虚拟化控制层包括***管理程序。
12.根据权利要求1的方法,其中所述虚拟化控制层包括操作***。
13.一种用于在计算***中管理存储器的方法,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述方法包括以下步骤:
在所述虚拟化控制层处从所述应用接收虚拟存储器范围的标识符以及与所述虚拟存储器范围对应的至少一个存储器地址,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;以及
由所述虚拟化控制层使用所述标识符来标识所述虚拟存储器内的类似范围。
14.一种用于在计算***中管理存储器的装置,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述装置包括:
被配置为由所述应用标识虚拟存储器范围的模块,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;
被配置为由所述应用获得与所述虚拟存储器范围对应的至少一个存储器地址的模块;以及
被配置为将所述虚拟存储器范围的标识符和与所述虚拟存储器范围对应的所述存储器地址从所述应用传递到所述虚拟化控制层的模块,其中所述虚拟化控制层可使用所述标识符来标识所述虚拟存储器中的类似范围。
15.根据权利要求14的装置,还包括被配置为使用去重和增量编码中的至少一个减少所述物理存储器中的冗余信息的模块。
16.根据权利要求14的装置,其中所述应用还获得与所述虚拟存储器范围对应的大小并将该大小连同所述标识符和与所述虚拟存储器范围对应的所述存储器地址一起传递到所述虚拟化控制层。
17.根据权利要求16的装置,还包括被配置为由所述虚拟化控制层在第一映射结构中搜索与所述应用所传递的所述标识符的匹配的模块。
18.根据权利要求17的装置,还包括被配置为当针对所述应用所传递的所述标识符未找到匹配时,由所述虚拟化控制层在所述第一映射结构中创建新项的模块。
19.根据权利要求18的装置,还包括被配置为在所述虚拟化控制层处验证所述虚拟存储器范围与所述第一映射结构中的匹配项具有相同内容的模块。
20.根据权利要求19的装置,还包括被配置为配置第二映射结构,以便用于备援与所述范围对应的虚拟存储器部分的物理存储器部分同样用于备援与所述第一映射结构中的所述匹配项对应的虚拟存储器部分的模块。
21.根据权利要求14的装置,其中所述虚拟存储器范围表示至少一个虚拟存储器页。
22.根据权利要求14的装置,其中所述虚拟存储器范围用于存储至少一个读入存储器的文件。
23.根据权利要求14的装置,其中所述虚拟存储器范围用于存储至少一个只读程序件。
24.根据权利要求14的装置,其中所述虚拟化控制层包括***管理程序。
25.根据权利要求14的装置,其中所述虚拟化控制层包括操作***。
26.一种用于在计算***中管理存储器的装置,所述计算***包括在虚拟化控制层之上执行的应用,其中所述虚拟化控制层将虚拟存储器的各部分映射到物理存储器的各部分,所述装置包括:
被配置为在所述虚拟化控制层处从所述应用接收虚拟存储器范围的标识符以及与所述虚拟存储器范围对应的至少一个存储器地址的模块,所述虚拟存储器范围在所述虚拟存储器中重复的概率超过给定阈值;以及
被配置为由所述虚拟化控制层使用所述标识符来标识所述虚拟存储器内的类似范围的模块。
CN201410176022.3A 2013-05-02 2014-04-29 一种用于管理存储器的方法和装置 Expired - Fee Related CN104133775B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/875,702 US9436614B2 (en) 2013-05-02 2013-05-02 Application-directed memory de-duplication
US13/875,702 2013-05-02

Publications (2)

Publication Number Publication Date
CN104133775A true CN104133775A (zh) 2014-11-05
CN104133775B CN104133775B (zh) 2017-09-01

Family

ID=51806458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410176022.3A Expired - Fee Related CN104133775B (zh) 2013-05-02 2014-04-29 一种用于管理存储器的方法和装置

Country Status (2)

Country Link
US (2) US9436614B2 (zh)
CN (1) CN104133775B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107615255A (zh) * 2015-06-17 2018-01-19 英特尔公司 利用持久存储器的计算装置和方法
CN110321079A (zh) * 2019-06-27 2019-10-11 暨南大学 一种基于混合页面的磁盘缓存去重方法
CN114424172A (zh) * 2019-10-11 2022-04-29 国际商业机器公司 虚拟存储器元数据管理

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378179B2 (en) 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US9569400B2 (en) 2012-11-21 2017-02-14 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US9332083B2 (en) * 2012-11-21 2016-05-03 International Business Machines Corporation High performance, distributed, shared, data grid for distributed Java virtual machine runtime artifacts
US9679342B2 (en) * 2013-07-12 2017-06-13 Arm Limited Result data stream coding for repeating workloads
US20150058926A1 (en) * 2013-08-23 2015-02-26 International Business Machines Corporation Shared Page Access Control Among Cloud Objects In A Distributed Cloud Environment
US20150339141A1 (en) * 2014-05-20 2015-11-26 International Business Machines Corporation Memory management for virtual machines
US9658775B2 (en) * 2014-10-06 2017-05-23 Vmware, Inc. Adjusting page sharing scan rates based on estimation of page sharing opportunities within large pages
US9536088B1 (en) 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
US10089024B2 (en) 2015-11-19 2018-10-02 Red Hat Israel, Ltd. Memory deduplication protection for memory pages
JP6398963B2 (ja) * 2015-12-14 2018-10-03 コニカミノルタ株式会社 画像形成装置および画像形成装置で実行されるプログラム
US10261820B2 (en) 2016-08-30 2019-04-16 Red Hat Israel, Ltd. Memory deduplication based on guest page hints
JP7254585B2 (ja) * 2019-03-28 2023-04-10 株式会社日立製作所 システム間連携方法およびノード
US11188354B1 (en) * 2020-09-23 2021-11-30 International Business Machines Corporation Sharing cached class data in a containerized environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179050A1 (en) * 2004-10-22 2006-08-10 Giang Phan H Probabilistic model for record linkage
US20070271297A1 (en) * 2006-05-19 2007-11-22 Jaffe Alexander B Summarization of media object collections
CN102346695A (zh) * 2010-07-29 2012-02-08 财团法人工业技术研究院 渐进式备份的基于片段的高延展的去复本***与方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US20100161929A1 (en) 2008-12-18 2010-06-24 Lsi Corporation Flexible Memory Appliance and Methods for Using Such
US8671082B1 (en) * 2009-02-26 2014-03-11 Netapp, Inc. Use of predefined block pointers to reduce duplicate storage of certain data in a storage subsystem of a storage server
US8191065B2 (en) 2009-04-06 2012-05-29 Red Hat Israel, Ltd. Managing virtual machine images
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
EP2425341B1 (en) 2009-05-01 2018-07-11 Citrix Systems, Inc. Systems and methods for establishing a cloud bridge between virtual storage resources
US8312471B2 (en) * 2010-04-26 2012-11-13 Vmware, Inc. File system independent content aware cache
US9135171B2 (en) 2010-07-13 2015-09-15 Vmware, Inc. Method for improving save and restore performance in virtual machine systems
US9116909B2 (en) 2010-12-29 2015-08-25 Amazon Technologies, Inc. Reduced bandwidth data uploading in data systems
US8954399B1 (en) * 2011-04-18 2015-02-10 American Megatrends, Inc. Data de-duplication for information storage systems
US8832035B2 (en) * 2011-08-30 2014-09-09 Netapp, Inc. System and method for retaining deduplication in a storage object after a clone split operation
US9116812B2 (en) * 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179050A1 (en) * 2004-10-22 2006-08-10 Giang Phan H Probabilistic model for record linkage
US20070271297A1 (en) * 2006-05-19 2007-11-22 Jaffe Alexander B Summarization of media object collections
CN102346695A (zh) * 2010-07-29 2012-02-08 财团法人工业技术研究院 渐进式备份的基于片段的高延展的去复本***与方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107615255A (zh) * 2015-06-17 2018-01-19 英特尔公司 利用持久存储器的计算装置和方法
CN110321079A (zh) * 2019-06-27 2019-10-11 暨南大学 一种基于混合页面的磁盘缓存去重方法
CN114424172A (zh) * 2019-10-11 2022-04-29 国际商业机器公司 虚拟存储器元数据管理
CN114424172B (zh) * 2019-10-11 2023-03-21 国际商业机器公司 虚拟存储器元数据管理

Also Published As

Publication number Publication date
US9436614B2 (en) 2016-09-06
US20140331016A1 (en) 2014-11-06
CN104133775B (zh) 2017-09-01
US9355039B2 (en) 2016-05-31
US20140331017A1 (en) 2014-11-06

Similar Documents

Publication Publication Date Title
CN104133775A (zh) 一种用于管理存储器的方法和装置
CN107391653B (zh) 一种分布式NewSQL数据库***及图片数据储存方法
US8332367B2 (en) Parallel data redundancy removal
US8924353B1 (en) Systems and methods for copying database files
US11314420B2 (en) Data replica control
CN102938784A (zh) 应用于分布式存储***中的数据存储方法和***
US20150193526A1 (en) Schemaless data access management
KR102535666B1 (ko) 대형 그래프 처리를 위한 그래프 데이터 분할
CN110968554A (zh) 一种基于文件链分块的区块链存储方法、存储***及存储介质
CN103488523A (zh) 一种页的访问方法和页的访问装置、服务器
KR20220125198A (ko) 데이터의 추가 기록 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램매체
CN105637489A (zh) 分布式数据库***中的异步垃圾收集
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
CN104035822A (zh) 一种低开销的高效内存去冗余方法及***
US8990815B1 (en) Synchronizing allocated blocks of virtual disk files across primary and secondary volumes by excluding unused blocks
CN113312182B (zh) 一种云计算节点、文件处理方法及装置
Nguyen et al. An index scheme for similarity search on cloud computing using mapreduce over docker container
US7991962B2 (en) System and method of using threads and thread-local storage
CN105426119A (zh) 一种存储设备及数据处理方法
EP3264254A1 (en) System and method for a simulation of a block storage system on an object storage system
US20200371827A1 (en) Method, Apparatus, Device and Medium for Processing Data
US9256648B2 (en) Data handling in a cloud computing environment
US11656856B2 (en) Optimizing a just-in-time compilation process in a container orchestration system
Shabeera et al. A novel approach for improving data locality of mapreduce applications in cloud environment through intelligent data placement
US10235083B1 (en) Systems and methods for efficiently moving data within a filesystem

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171025

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES INC.

Address before: American New York

Patentee before: Core USA second LLC

Effective date of registration: 20171025

Address after: American New York

Patentee after: Core USA second LLC

Address before: American New York

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170901

Termination date: 20190429

CF01 Termination of patent right due to non-payment of annual fee