CN101645045A - 使用透明页变换的存储器管理 - Google Patents
使用透明页变换的存储器管理 Download PDFInfo
- Publication number
- CN101645045A CN101645045A CN200910157683A CN200910157683A CN101645045A CN 101645045 A CN101645045 A CN 101645045A CN 200910157683 A CN200910157683 A CN 200910157683A CN 200910157683 A CN200910157683 A CN 200910157683A CN 101645045 A CN101645045 A CN 101645045A
- Authority
- CN
- China
- Prior art keywords
- page
- memory page
- addend
- memory
- information converting
- 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
- 230000009466 transformation Effects 0.000 title abstract description 9
- 238000003860 storage Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims description 46
- 238000006243 chemical reaction Methods 0.000 claims description 43
- 239000003990 capacitor Substances 0.000 claims description 8
- 238000006467 substitution reaction Methods 0.000 claims description 4
- 239000003550 marker Substances 0.000 claims 2
- 230000001172 regenerating effect Effects 0.000 claims 2
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 230000004044 response Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000008929 regeneration Effects 0.000 description 2
- 238000011069 regeneration method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
对存储器空间进行管理以释放由与所存储的参考页相似的页占据的存储区域。对存储器进行检查以找到两个相似页,并且获得变换。所述变换使得能够从一个页重建另一页。变换随后被存储,并且所述页中的一个被丢弃以释放其存储器空间。当需要丢弃页时,剩余页被获取,并且所述变换被应用到该页以再生丢弃页。
Description
技术领域
本发明一般地涉及使用透明页变换的存储器管理。
背景技术
现今的大多数计算机包括至少一种形式的具有可编程地址翻译或映射的数据存储装置。在大多数计算机中,该存储装置将由相对高速系统存储器提供,其通常是使用随机存取存储器(RAM)组件(DRAM和SRAM)来实现的。
尽管系统存储器通常很快,但其存在缺点。首先,其通常是易失性的。其次,对于给定的要存储的数据量,与诸如盘的传统非易失性存储设备相比,系统存储器占用计算机中更多的物理空间,更昂贵,并且在冷却、组件插口等方面需要更多的支持。因此,尽管即使在相对并不复杂的消费者市场的计算机中常常包含数千兆字节的盘存储装置,这样的计算机也很少配有几GB的系统RAM。
因为对所存储数据与代码的更高速存取通常对应于更快的性能,因此尽可能从系统存储器运行更多的活动应用通常是更可取的。事实上,许多需要实时处理复杂计算的应用,例如声音识别软件、交互图形等,在运行时除非为这些应用的使用预留了一定量的RAM,否则将不能正常运行或者根本不能运行。
高速系统存储器是有限资源,并且与大多数有限资源类似,通常存在针对其的竞争。在现今多任务系统中这已变成更为严重的问题,其中在多任务系统中,若干应用会同时运行或至少驻留在存储器中。即使在给定系统中对于需要的所有应用存在足够的存储器,节约存储器使用通常也是有利的,因为RAM花钱并且消耗能量和物理空间。对RAM更高效的管理可以减少支持给定工作负荷所需的花费、能量或物理空间。或者,在给定了固定资金、能量或物理空间预算的情况下,对RAM更高效的管理可以使得系统支持具有优良性能的更多数量应用。
使用已知的虚拟化技术,多个虚拟机(VM)可以共享单个物理主机,其中多个虚拟机每个具有客户操作系统。当若干VM在一个物理主机上执行的时候,存在合并存储器的机会,因为多个VM可能使用相同或相似页。一种用于减少给定工作负荷所需的系统存储器量进而有效“扩展”可用系统存储器量的技术是要实现这样一种方案,其中不同的VM共享存储器空间。在运行虚拟机的多处理器系统的上下文中,透明页共享是一种用于节省RAM空间的已知方法。基本思想是通过消除存储器页(例如包含程序代码或文件系统高速缓存数据的存储器页)的冗余拷贝来节省存储器,这对于减少与运行多个操作系统拷贝(例如,多个客户操作系统,每个运行在相应的虚拟机中)相关联的存储器总开销尤为重要。进一步的相关信息在2000年6月13日公布的Bugnion等的名为“Virtual Machine Monitors for ScalableMultiprocessors”的美国专利6,075,938(“Bugnion`938”)中有描述。
根据另一种技术,存储器中页的内容被进行哈希运算,并且其哈希数被比较以标识出潜在的相同页。潜在肯定的候选者的全部内容被比较以核实他们存储相同内容。当找到相同页时,只有一个页被选择并通过使用已知的写时复制(copy-on-write,COW)技术被保护,而另一页被消除以释放存储器空间。由于该技术不需要对客户操作系统(OS)进行任何修改,因此其在此方面尤为有利。进一步的相关信息在2004年9月7日公布的Waldspurger的名为“Content-Based,Transparent Sharing of Memory Units”的美国专利6,789,156中有描述。
发明内容
下文对本发明的简要说明意在提供对这里所描述的存储器管理的基本理解。
对存储器进行管理以便在不必依赖多个页的相同内容的条件下减少冗余数据存储。例如,两个相似页被选择并且变换(transformation)被获得。所述变换使得能够从一个页重建另一页。所述变换随后被存储,并且多个页中的一个被丢弃以释放其存储器空间。当需要丢弃页时,剩余页被获取,并且所述变换被应用到该页以再生丢弃页。所述存储器管理可以由例如非虚拟化计算机系统的操作系统或虚拟机中的客户操作系统、虚拟化软件等执行。
根据本发明的一个方面,公开了一种包含用于管理存储器空间的软件指令的有形机器可读介质,所述软件指令使得计算机执行一种方法,所述方法包括:选择存储页和参考页;获得变换信息,所述变换信息使得能够从所述参考页重建所述存储页;存储指向所述变换信息的指针或者所述变换信息中的至少一种;以及删除所述存储页。
根据本发明的另一方面,公开了一种用于管理存储器空间的方法,所述方法包括:选择存储页和参考页,所述存储页和所述参考页存储在计算机系统的随机存取存储器中;获得变换信息,所述变换信息使得能够从所述参考页重建所述存储页;存储指向所述变换信息的指针或者所述变换信息中的至少一种;以及释放所述存储页占据的存储器空间。
根据本发明的又一方面,公开了一种用于管理存储器空间的方法,所述方法包括:标识出与参考页相似的存储页;将所述存储页与所述参考页比较并标识出不同位置,进而获得多个差,所述不同位置是所述存储页上具有与所述参考页上的对应位置处的值不同的存储值的所有存储器位置;确定是否存在共同加数,所述共同加数是所述多个差中的每个共同的值;如果所述共同加数不存在,那么维护所述存储页;如果所述共同加数存在,那么存储所述共同加数和所述不同位置,并且释放所述存储页占据的存储区域。
根据本发明的另一方面,公开了一种用于管理存储器空间的方法,包括标识出与参考页相似的存储页;存储一组向量,每个向量包括不同位置和替代值,所述不同位置标识出所述存储页上具有与所述参考页上的对应位置处存储的对应参考值不同的存储值的存储器位置,所述替代值等于所述存储值;以及释放所述存储页占据的存储区域。
附图说明
构成本说明书一部分的附图与说明书一起用来解释并举例说明本发明的原理。附图意在以图解形式图示主要特征。附图并未描述实际实施例的每个特征。
图1图示了虚拟化计算机系统的示例。
图2是以示例方式图示用于减少冗余数据存储的高级别流程图。
图3是以示例方式图示用于获取存储器或再生丢弃页的高级别流程图。
具体实施方式
本发明的发明人已经注意到,用于存储器合并的传统方法不能用在能够利用随机地址空间分布(ASLR)的情况下。ASLR是一种计算机安全技术,其涉及在程序的地址空间中随机布置关键数据区的位置,关键数据区通常包括可执行程序的基数据以及库、堆、栈的位置。微软的Windows Vista和Windows Server 2008缺省条件下是ASLR使能的,而Apple在Mac OS Xv10.5中引入了一些库偏移的随机化。
本发明的发明人已经注意到,在ASLR使能时,由运行的程序构建并且以代码或数据形式存在的任何地址将不同。因此,当ASLR使能时,即使两个程序在RAM中表示相同内容,因为ASLR的随机化,包含地址的大多数存储页也不太可能相同(特别是当在不同虚拟机中运行的时候)。因此,依赖于页的实际内容比较或内容哈希值比较的存储器合并方法将不能标识出这种相似页,因而不能提供合并存储器的机制。即,即使两个几乎相同页只有单个字节不同,传统技术就不适用。而且,部分由于当前CPU存储器管理单元(MMU)的有限粒度(granularity),本领域中尚无法仅共享页的子集,因为共享的最小单元一般是单个4KB页。。
本发明的多个实施例一般地涉及用于存储器管理的方法,从而在不必依赖页的相同性的情况下减少冗余数据存储。根据本发明的方法,具有实质相似性的页被标识出,并且合并方法被应用到所述页以便通过丢弃冗余页来减少存储器利用。指针和/或变换被存储以便能够在需要时重建丢弃页。
图1示出了通过实现本发明的实施例而获益的系统示例。在图1中,计算机系统100包括物理硬件PHW 130,PHW 130包括存储器(例如RAM 120)和处理器135。在该示例中,三个虚拟机VM1、VM2和VM3运行在物理硬件130上。每个虚拟机VM1、VM2、VM3包括虚拟硬件VHW、客户操作系统GOS、以及在其上运行的一个或多个应用APPL。虚拟化软件可以包括一层或多层软件,这些软件逻辑上插入物理硬件130和每个VM之间,并与物理硬件130和每个VM接口。虚拟化软件可以包括例如用于每个虚拟机的虚拟机监视器VMM 101、102、103以及VM核(VMK)或虚拟机驱动器(VMD),这些是虚拟化领域众所周知的。VM核,或者对于所驻留的实现来说是VM驱动器,被图示为块VMK/VMD 140。OS和任何运行的应用都需要一些页被存储在存储器120中。页的存储由虚拟存储器管理器101、102和103管理。如所能理解的那样,如果两个VM运行同样的OS,他们将在存储器120中存储双重页,从而不必要地消耗存储器容量。如前所述,本发明人已注意到,当例如ASLR使能时或者当页并不完全相同时,不能使用用于消除这种页的双重性的传统方法。因此,在本示例中,相似页被标识出,并且变换程序被实施以允许丢弃两个相似页中的一个。
图2是图示出根据本发明实施例的过程的高级别流程图。在步骤200中,页中的一个被选择以用做参考页。随后,在步骤205中进行检索以标识出该参考页的相似页。可以在一个或多个步骤中进行找到相似页的操作。例如,通过简单地将存储器中所有页的全部内容与参考页相比较,可以在单个步骤中找到相似页。可以通过随机选择与参考页比较的页、通过应用启发法(heuristics)选择用于比较的页等来确定待比较页的顺序。另一方面,找到相似页可以是两步骤过程。例如,在第一步中,可以比较页头以标识出潜在的相似页。第一步后即是第二“核实”步骤,在第二步中,比较标识出的候选页的全部内容以核实页确实相似。
当两个相似页被标识出的时候,在步骤215获得变换以能够随后通过应用反向变换从一个页生成另一页。下文进一步详细描述了用于获得变换的多种方式。根据这个实施例,在获得了变换之后,执行可选的比较步骤220以检查存储该变换是否需要不能接受的存储器空间。例如,该变换的大小可以与相似页的大小、预设阈值、相似页大小减去缓冲器量等值相比较。如果确定该变换的大小太大,过程返回到步骤200以选择另一参考页,或者过程返回到步骤205以检索另一相似页。是返回到步骤200还是步骤205可以事先预编程,并且选择可以取决于多个参数,例如,如果所有页都与参考页比较了,那么过程可以返回到步骤200,然而如果并非所有页都与参考页比较了,那么过程可以返回到步骤205。然而,应当认识到步骤220可以和步骤215结合,并且步骤220和步骤215可以同时执行。当很明确变换需要太多存储器空间进行存储的时候,这样的安排可以实现尽早终止变换。
如果在步骤220中确定变换的大小是可接受的,或者如果没有执行步骤220,那么变换在步骤225中被存储,并且相似页在步骤230中被丢弃,从而其存储器空间可以被释放以作为可用资源。在这点上,如果该变换先前已被存储,那么可以存储指向该变换的存储位置的指针,而不用再次存储该变换本身,并且可以在步骤235中增加对应的可选参考计数器以跟踪该指针。如上所述,根据该程序,过程随后返回到步骤200或205。
图3是以示例方式图示出用于获取存储页的过程的高级别流程图。当应用尝试访问页时,在步骤300中接收到请求。如果存储器中存在页(即,步骤305中的“是”),那么在步骤310中获取该页,并且在步骤330中交付该页。另一方面,如果请求的页是先前为节约存储器而遭丢弃的页时,那么在步骤315中获取参考页,并且在步骤320中获取对应的变换。该变换随后在步骤325中被应用于参考页。该变换可以应用于参考页本身或者参考页的拷贝,从而重建丢弃页。重建页随后在步骤330中被交付。
例如,VM1可能需要访问特定页,因此处理器135检查VMM1中的翻译表以找到RAM120的存储器空间111中的正确地址。然而,当该页由于存储器管理过程已被删除的时候,发出页错误。VMK/VMD 140随后执行从参考页和存储的变换重建该页的过程。当所有存储器需要被重建的时候,例如用于拍摄VM快照以将所有存储器写入盘、用于将VM迁移到另一主机等,也可以执行该过程。当然,与其重建页,如果参考页已经存在于快照或被迁移拷贝中,作为替代可以记录变换指针。
根据一个实施例,这里称作重新配置变换,与参考页相似的存储页被标识出。获得使能从参考页到存储页的转换的加数(addend)。该加数可以是先前已经存储的,例如,该加数是在执行由OS等先前存储的在前变换之后存储的。该变换主要适用于重新配置在不同程序中的不同地址处的库或可执行程序的只读页或代码。根据一个实施例,该加数是通过检查存储页和参考页以确定是否存在对存储页的所有存储器位置来说共同的一个加数而获得的,其中所述存储页的所有存储器位置具有与参考页上存储的对应参考值不同的存储值。例如,对于与对应参考值不同的每个存储值,可以计算其与对应参考值之间的差。如果所有计算后的差具有共同的一个加数,那么该加数被选择,并与指向已被发现不同于存储页的参考页上的所有位置的指针一起被存储。
然而,在一些情形中,可能具有不只一个加数,但是只要有一个加数是所有位置共同的即可,它可以被选择作为用于重建页的加数。例如,可以考虑下面的来自两个页的两个数串:
参考页:00 12 34 56 78 9A BC
存储页:00 12 34 57 78 9A BC
当比较每个数串的头4个字节的时候,可以获得差(潜在的加数)为0x0001。另一方面,如果从第二字节开始比较,得到的差为0x0100。因此,需要对两个页的所有条目进行比较以找到所有可能的差。然后需要检查所有差以确定是否存在至少一个加数是所有差共同的。对于上面的例子,利用适当的指针,0x0001或0x0100均可用做加数。
该加数随后与指示参考页上所有位置的数串一起被存储,其中加数应当被应用到该参考页以便重建存储页。存储页随后可以被丢弃。当过程尝试访问丢弃页时,取得参考页并且使用存储的位置和加数值对参考页进行变换。这个方法是高度可扩展的,例如对于n个相似页,只需要存储任一页作为参考页、一组加数位置、以及用于每个页的一个加数值,而这需要非常少的存储器空间,举例来说,总计2页的存储器可以充分描述100至1000页。
根据另一实施例,这里称作Delta变换,页与参考相比较,并且一组向量被存储,其中这组向量中的每个包括位置值和加数值。该页随后被丢弃。当过程尝试访问丢弃页时,取得参考页并且使用向量组对参考页进行变换。尽管只要向量大小小于页大小本实施例即可减少存储器空间,但是其与重新配置变换实施例相比不是特别经济,因为对于n页,其需要n个向量组。然而,它是更一般的变换,因为对于找到这样“相似”的数据页存在更多的机会,这是因为每个向量可以与不同加数相关联。即,避免了为整个页寻找共同加数的需要
在一些更有限的情形中,还可以应用其他更专门的变换。一个页可以被简单描述为另一页的截短版本,并且仅需要存储最后的非零位置,或者描述为另一页的移位内容。更一般而言,单个页可以由多个其他页中存在的内容的随机子序列描述。对相同页内容的其他变换可以是与随机cookie值的异或(XOR)操作,并且只有那个随机值需要被存储;或者类似地,如果页被加密的话,那么可以存储分组密码的初始化向量。
任何未来的变换功能都可以以类似于本发明的方式而被使用。可行的变换功能需要使用实质上更少的存储器来充分重建多个页的内容,必需保持按需重建页的等待时间比替代性的辅助存储装置更有竞争力并增加最少的CPU开销,并且需要最少的资源利用用于标识出参考页。
应当理解,如果存储页和参考页之间的差巨大,那么存储变换信息可能需要不能接受的存储器空间,并且重建页会需要太多的计算资源。因此,可以设置一些测试以确保该创造性过程实际上节约了存储器空间而没让系统过载。例如,可以设置阈值以建立最小存储器保留,低于该阈值则不丢弃存储页。变换信息的大小随后可以被检查,并且只有在因丢弃存储页和存储变换信息而得的存储保留超过阈值时才会存储变换。还需要跟踪根据变换功能标识出相似页的CPU和存储器利用成本,目的在于整个系统高效,并且可能动态地平衡功能之间的选择并遏制他们的侵略性。
应当认识到,变换信息的大小取决于指针的粒度或分辨率,即加数大小的选择。例如,考虑4字节的位置,如果只有一个不同并且我们选择加数是四字节大小,那么我们浪费了3个字节来存储相同数据。因此,使用1字节大小的加数会更好。另一方面,如果我们选择一字节大小的加数并且四个字节中的三个不同,我们将必需存储三个索引和三个1字节加数,从而消耗更多存储空间用于索引存储。
指针的分辨率选择取决于页上预期改变的密度,即,如果预期位改变,那么应当使用位模式delta,如果预期字节改变,那么应当使用字节模式delta,如果预期字改变,那么应当使用字delta。当实施重新配置变换或delta变换时,可以选择不同的分辨率。对于重新配置变换,其更适用于ASLR,加数大小取决于OS使用的地址大小。例如,在32位Linux中,4字节选择是合适的,但是因为Windows OS总是保持低位2字节相同,可以使用2字节粒度,尽管4字节也可以工作。
对于delta变换,选择取决于预期的改变,并且可以被设置成所有页相同粒度、每个页不同、或者甚至页中每个位置不同。然而,对每个位置选择不同大小可能引起存储器使用的增加,因为对于每个位置我们将必需指示变换的大小(通常两个额外的位),因此为整个页选择一个大小可能是更有益的。而且,如果若干VM在运行,每个可以进行不同设置。类似地,对每个主机可以选择不同大小。
已经结合具体示例描述了本发明,这些具体实施例仅用于图示作用而无限制意义。本领域普通技术人员将认识到,实施本发明可以存在硬件、软件和关键的多种不同组合。而且,通过了解这里公开的发明实践和说明书,本领域技术人员很容易想到本发明的其他实施方式。所描述实施例的多个方面和/或组件可以单独使用或者在server arts中组合使用。说明书和示例仅是示例性的,本发明的真实范围和精神在权利要求中阐述。
Claims (21)
1.一种包含用于管理存储器空间的软件指令的有形机器可读介质,所述软件指令使得计算机执行一种方法,所述方法包括:
选择存储页和参考页;
获得变换信息,所述变换信息使得能够从所述参考页重建所述存储页;
存储指向所述变换信息的指针或者所述变换信息中的至少一种;以及
删除所述存储页。
2.如权利要求1所述的有形机器可读介质,其中删除所述存储页的步骤包括释放由所述存储页占据的所述存储器空间。
3.如权利要求1所述的有形机器可读介质,其中所述方法进一步包括在尝试访问所述存储页时获取所述参考页以及将所述变换信息应用于所述参考页以再生所述存储页。
4.如权利要求1所述的有形机器可读介质,其中选择所述存储页和所述参考页的步骤包括将启发法应用于多个页以标识出与参考页相似的存储页。
5.如权利要求4所述的有形机器可读介质,其中应用启发法的步骤包括比较所述多个页的页头。
6.如权利要求1所述的有形机器可读介质,其中选择所述存储页和所述参考页的步骤包括从多个页中随机选择所述存储页和所述参考页中的至少一个。
7.如权利要求1所述的有形机器可读介质,其中获得变换信息的步骤包括从存储位置获取先前计算的变换信息以及维护参考计数器以确保一个拷贝在存储器中。
8.如权利要求1所述的有形机器可读介质,其中获得所述变换信息的步骤包括计算一组向量,每个向量包括加数位置和加数,所述加数位置标识出所述存储页中具有与在所述参考页上的对应位置处存储的参考值不同的存储值的位置,所述加数等于所述存储值和所述参考值之间的差。
9.如权利要求1所述的有形机器可读介质,其中获得所述变换信息的步骤包括检查所述存储页和所述参考页以确定是否存在所述存储页的所有存储器位置共同的一个加数,其中所述存储页的所有存储器位置具有与所述参考页上存储的对应参考值不同的存储值,所述一个加数等于每个所述存储值和每个所述对应参考值之间的差。
10.如权利要求9所述的有形机器可读介质,其中存储所述变换信息的步骤包括存储所述一个加数以及所述存储页中具有与所述参考页上存储的对应参考值不同的存储值的所述存储器位置。
11.如权利要求1所述的有形机器可读介质,其中所述方法进一步包括检查所述变换信息的大小,并且只有在因丢弃所述存储页以及存储所述变换信箱而得到的存储保留超过阈值时,才执行所述存储步骤。
12.如权利要求1所述的有形机器可读介质,其中:
所述计算机包括具有虚拟化软件的虚拟化计算机系统,所述虚拟化软件逻辑上插入计算机硬件和至少一个虚拟机之间并与所述计算机硬件和所述至少一个虚拟机接口,所述至少一个虚拟机具有客户操作系统和至少一个应用,所述虚拟化软件包括用于管理所述存储器空间的软件指令;以及
选择所述存储页的步骤、获得所述变换的步骤、存储所述变换信息或所述指针中的至少一种的步骤、以及所述删除步骤是由所述虚拟化计算机系统中的虚拟化软件执行的。
13.一种用于管理存储器空间的方法,所述方法包括:
选择存储页和参考页,所述存储页和所述参考页存储在计算机系统的随机存取存储器中;
获得变换信息,所述变换信息使得能够从所述参考页重建所述存储页;
存储指向所述变换信息的指针或者所述变换信息中的至少一种;以及
释放所述存储页占据的存储器空间。
14.如权利要求13所述的方法,其中:
所述计算机系统包括具有虚拟化软件的虚拟化计算机系统,所述虚拟化软件逻辑上插入计算机硬件和至少一个虚拟机之间并与所述计算机硬件和所述至少一个虚拟机接口,所述至少一个虚拟机具有客户操作系统和至少一个应用;以及
所述方法由所述虚拟化软件执行。
15.如权利要求14所述的方法,进一步包括:
从所述虚拟机之一接收访问所述存储页的请求;
响应于接收到所述请求,获取所述参考页,并且通过将所述变换信息应用于所述参考页而对所述参考页进行变换以再生所述存储页。
16.如权利要求14所述的方法,其中获得所述变换信息的步骤包括计算一组向量,每个向量包括加数位置和加数,所述加数位置标识出所述存储页中具有与在所述参考页上的对应位置处存储的参考值不同的存储值的位置,所述加数等于所述存储值和所述参考值之间的差。
17.如权利要求14所述的方法,其中获得所述变换信息的步骤包括检查所述存储页和所述参考页以确定是否存在所述存储页上具有与所述参考页上存储的对应参考值不同的存储值的所有存储器位置共同的一个加数,所述一个加数等于每个所述存储值和每个所述对应参考值之间的差。
18.一种用于管理存储器空间的方法,所述方法包括:
标识出与参考页相似的存储页;
将所述存储页与所述参考页比较并标识出不同位置,进而获得多个差,所述不同位置是所述存储页上具有与所述参考页上的对应位置处的值不同的存储值的所有存储器位置;
确定是否存在共同加数,所述共同加数是所述多个差中的每个共同的值;
如果所述共同加数不存在,那么维护所述存储页;如果所述共同加数存在,那么存储所述共同加数和所述不同位置,并且释放所述存储页占据的存储区域。
19.如权利要求18所述的方法,进一步包括在尝试访问所述存储页时获取所述参考页以及通过使用所述加数和所述不同位置将变换应用于所述参考页,所述变换使得重建所述存储页。
20.一种用于管理存储器空间的方法,包括,
标识出与参考页相似的存储页;
存储一组向量,每个向量包括不同位置和替代值,所述不同位置标识出所述存储页上具有与所述参考页上的对应位置处存储的对应参考值不同的存储值的存储器位置,所述替代值等于所述存储值;以及
释放所述存储页占据的存储区域。
21.如权利要求20所述的方法,进一步包括在尝试访问所述存储页时获取所述参考页以及通过使用所述向量组将变换应用于所述参考页,以重建所述存储页。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/182,989 | 2008-07-30 | ||
US12/182,989 US9665498B2 (en) | 2008-07-30 | 2008-07-30 | Memory management using transparent page transformation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101645045A true CN101645045A (zh) | 2010-02-10 |
CN101645045B CN101645045B (zh) | 2014-02-26 |
Family
ID=41609513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910157683.0A Active CN101645045B (zh) | 2008-07-30 | 2009-07-23 | 用于使用透明页变换来管理存储器的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9665498B2 (zh) |
CN (1) | CN101645045B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868129A (zh) * | 2016-03-24 | 2016-08-17 | 安徽师范大学 | 嵌入式系统标定时工作页和参考页切换方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8549516B2 (en) * | 2008-12-23 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for controlling, by a hypervisor, access to physical resources |
US20110283271A1 (en) * | 2010-05-17 | 2011-11-17 | Samsung Electronics Co. Ltd. | Techniques for reunion of veneers |
US9053053B2 (en) | 2010-11-29 | 2015-06-09 | International Business Machines Corporation | Efficiently determining identical pieces of memory used by virtual machines |
US9201678B2 (en) | 2010-11-29 | 2015-12-01 | International Business Machines Corporation | Placing a virtual machine on a target hypervisor |
US9058212B2 (en) | 2011-03-21 | 2015-06-16 | Microsoft Technology Licensing, Llc | Combining memory pages having identical content |
US9471244B2 (en) | 2012-01-09 | 2016-10-18 | International Business Machines Corporation | Data sharing using difference-on-write |
US9459902B2 (en) | 2013-08-16 | 2016-10-04 | Red Hat Israel, Ltd. | Memory duplication by destination host in virtual machine live migration |
US9454400B2 (en) | 2013-08-16 | 2016-09-27 | Red Hat Israel, Ltd. | Memory duplication by origin host in virtual machine live migration |
US10747563B2 (en) * | 2014-03-17 | 2020-08-18 | Vmware, Inc. | Optimizing memory sharing in a virtualized computer system with address space layout randomization (ASLR) enabled in guest operating systems wherein said ASLR is enable during initialization of a virtual machine, in a group, when no other virtual machines are active in said group |
US9575661B2 (en) | 2014-08-19 | 2017-02-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory systems configured to use deduplication and methods of controlling the same |
US10365937B2 (en) | 2015-07-24 | 2019-07-30 | Red Hat Israel, Ltd. | Entropy increase by executable loader |
US10545670B2 (en) * | 2016-02-26 | 2020-01-28 | Red Hat Israel, Ltd. | Scalable page migration after memory de-duplication |
US10176115B2 (en) | 2016-07-14 | 2019-01-08 | International Business Machines Corporation | Shared memory in a virtual environment |
US10209889B2 (en) | 2016-07-14 | 2019-02-19 | International Business Machines Corporation | Invalidation of shared memory in a virtual environment |
US10445126B2 (en) | 2017-02-21 | 2019-10-15 | Red Hat, Inc. | Preloading enhanced application startup |
US10599835B2 (en) * | 2018-02-06 | 2020-03-24 | Vmware, Inc. | 32-bit address space containment to secure processes from speculative rogue cache loads |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262097A1 (en) * | 2004-05-07 | 2005-11-24 | Sim-Tang Siew Y | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
US20060161751A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system |
US20070049271A1 (en) * | 2005-08-23 | 2007-03-01 | Ntt Docomo, Inc | Location register and accommodation transfer control method |
US20070226235A1 (en) * | 2006-03-23 | 2007-09-27 | International Business Machines Corporation | System and Method for Increasing Availability of an Index |
US20080005489A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Module state management in a virtual machine environment |
US7401093B1 (en) * | 2003-11-10 | 2008-07-15 | Network Appliance, Inc. | System and method for managing file data during consistency points |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167490A (en) * | 1996-09-20 | 2000-12-26 | University Of Washington | Using global memory information to manage memory in a computer network |
US7320009B1 (en) * | 2003-03-28 | 2008-01-15 | Novell, Inc. | Methods and systems for file replication utilizing differences between versions of files |
US7721064B1 (en) * | 2007-07-02 | 2010-05-18 | Oracle America, Inc. | Memory allocation in memory constrained devices |
US7877570B2 (en) * | 2007-08-14 | 2011-01-25 | Red Hat, Inc. | Consolidation of matching memory pages |
-
2008
- 2008-07-30 US US12/182,989 patent/US9665498B2/en active Active
-
2009
- 2009-07-23 CN CN200910157683.0A patent/CN101645045B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401093B1 (en) * | 2003-11-10 | 2008-07-15 | Network Appliance, Inc. | System and method for managing file data during consistency points |
US20050262097A1 (en) * | 2004-05-07 | 2005-11-24 | Sim-Tang Siew Y | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
US20060161751A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system |
US20070049271A1 (en) * | 2005-08-23 | 2007-03-01 | Ntt Docomo, Inc | Location register and accommodation transfer control method |
US20070226235A1 (en) * | 2006-03-23 | 2007-09-27 | International Business Machines Corporation | System and Method for Increasing Availability of an Index |
US20080005489A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Module state management in a virtual machine environment |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868129A (zh) * | 2016-03-24 | 2016-08-17 | 安徽师范大学 | 嵌入式系统标定时工作页和参考页切换方法 |
CN105868129B (zh) * | 2016-03-24 | 2018-12-28 | 安徽师范大学 | 嵌入式系统标定时工作页和参考页切换方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100030998A1 (en) | 2010-02-04 |
CN101645045B (zh) | 2014-02-26 |
US9665498B2 (en) | 2017-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101645045B (zh) | 用于使用透明页变换来管理存储器的方法和系统 | |
Kourtis et al. | Reaping the performance of fast {NVM} storage with {uDepot} | |
US8788739B2 (en) | Hypervisor-based management of local and remote virtual memory pages | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
US9135171B2 (en) | Method for improving save and restore performance in virtual machine systems | |
US9648081B2 (en) | Network-attached memory | |
US10719479B2 (en) | Data unit cloning in memory-based file systems | |
US10747673B2 (en) | System and method for facilitating cluster-level cache and memory space | |
CN111679795B (zh) | 无锁并发io处理方法及其装置 | |
US20120137055A1 (en) | Hybrid memory system and method managing the same | |
US9280300B2 (en) | Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage | |
CN111919201B (zh) | 混合式存储器系统 | |
CN108228084B (zh) | 用于管理存储系统的方法和设备 | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
KR20200123850A (ko) | 하이브리드 메모리 시스템 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
Allu et al. | {Can’t} We All Get Along? Redesigning Protection Storage for Modern Workloads | |
CN111868679B (zh) | 混合存储器系统 | |
JP2021149374A (ja) | データ処理装置 | |
US20220413741A1 (en) | Method and system for dynamic topology-aware space allocation in a distributed system | |
Venkatesan et al. | Ex-tmem: Extending transcendent memory with non-volatile memory for virtual machines | |
US20190034239A1 (en) | Dynamic Thread Mapping | |
US11354233B2 (en) | Method and system for facilitating fast crash recovery in a storage device | |
Bai et al. | Pipette: Efficient fine-grained reads for SSDs | |
US20090024798A1 (en) | Storing Data |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |