CN102722452B - 一种内存冗余消除方法 - Google Patents
一种内存冗余消除方法 Download PDFInfo
- Publication number
- CN102722452B CN102722452B CN201210171790.0A CN201210171790A CN102722452B CN 102722452 B CN102722452 B CN 102722452B CN 201210171790 A CN201210171790 A CN 201210171790A CN 102722452 B CN102722452 B CN 102722452B
- Authority
- CN
- China
- Prior art keywords
- region
- memory
- hash
- region unit
- index
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000006870 function Effects 0.000 claims abstract description 33
- 238000005516 engineering process Methods 0.000 claims description 11
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 8
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 5
- 235000019580 granularity Nutrition 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000008030 elimination Effects 0.000 description 4
- 238000003379 elimination reaction Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种内存冗余消除方法,包括:步骤1,将计算机内存划分成不同的区域块并选择;步骤2,计算当前选择区域块的哈希值;步骤3,查找是否有其他区域块的哈希值与步骤2中区域块的哈希值相同;步骤4,如果是,判定两个区域块为高概率相同,转至步骤6;步骤5,将此区域块以及哈希值加入查找数据结构,转至步骤10;步骤6,如果步骤2中采用加密哈希函数,并且哈希函数计算的是区域块的全部内容,则转至步骤8;步骤7,比较这两个区域块的内容是否完全相同;步骤8,将其中一个区域块的索引替换成另一个区域块的索引;步骤9,释放被替换索引的区域块;步骤10,从剩余区域块中选择一区域块,并返回步骤2。
Description
技术领域
本发明涉及一种计算机系统优化领域,特别是采用RAM(Random Access Memory)的计算机的内存冗余消除方法。
背景技术
随着内存芯片技术的不断发展,当代计算机系统所装备的内存越来越多,内存当中存储的内容也越来越丰富。然而,云计算等技术的兴起使得计算机系统当中的内存相对于硬盘来说,仍然是一种稀缺资源。已有的操作系统采用了共享内存,进程创建时的写时拷贝(Copy-On-Write)等技术来节约内存,但是仍然有相当多的内存区域中包含了相同的内容造成了内存中数据的冗余。这些冗余的内容来源于不同的磁盘块,或者不同的应用程序,因此是传统的计算机系统内存技术无法解决的难题。作为例子之一,就是在云计算中大量使用的虚拟化技术:在一台拥有很多个虚拟机的物理机器当中,不同虚拟机之间的内存往往是来自类似的应用程序,因此可能拥有很高的冗余度。如何高效合理地解决内存冗余的问题就被提上了日程。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种内存冗余消除方法。
为了解决上述技术问题,本发明公开了一种内存冗余消除方法,包括以下步骤:
步骤1,将计算机内存划分成不同的区域块,选择其中一个区域块,初始化查找数据结构;
步骤2,采用加密的哈希函数或者非加密的哈希函数,计算当前选择区域块的全部内容或者部分内容的哈希值作为当前选择区域块的哈希值;
步骤3,从查找数据结构中,查找是否有其他区域块的哈希值与步骤2中区域块的哈希值相同;
步骤4,如果是,则判定两个区域块为高概率相同,转至步骤6,否则转至步骤5;
步骤5,将此区域块以及哈希值加入查找数据结构,转至步骤10;
步骤6,如果步骤2中采用加密哈希函数,并且哈希函数计算的是区域块的全部内容,则转至步骤8,否则转至步骤7;
步骤7,比较这两个区域块的内容是否完全相同,如果完全相同,进行步骤8,否则转至步骤10;
步骤8,用一个区域块替换另一个区域块,并更改被替换的区域块的索引的访问权限,进行步骤9;
步骤9,释放被替换索引的区域块;
步骤10,从剩余区域块中选择一区域块,并返回步骤2,直到所有区域块遍历完毕。
本发明中,进一步地,步骤1中所述将计算机内存划分成不同的区域块采用物理内存页框划分法、操作系统映射内存块划分法(包括堆、栈、mmap操作返回区域)以及虚拟化技术管理内存块划分法中的任意一种(其划分的粒度从小到大),划分的依据视实施者对其具体实施的场景中可能出现冗余的粒度的预估计而定,如实施者对可能的冗余粒度估计不足,则缺省可采用最小粒度的物理内存页框划分法。
本发明中,步骤3中数据结构为哈希表或者查找树。。
本发明中,步骤8中的索引为指针,数组下标或者虚拟内存页表项中的任意一种。
本发明中,步骤8中原来的索引访问权限更改为写时拷贝。
本发明使用汇编语言、C语言或者C++语言均可实现。
本发明与背景技术相比,具有的有益效果是:
1)内存使用效率的提高。本发明的方法能发现现有技术不能处理的内存冗余,通过冗余的消除,进一步提高了内存的使用效率。随着云计算的推广,内存的冗余程度会越来越高,本方法的优势也将越来越明显。
2)实施的灵活性。本发明的方法能适用于不同的内存冗余粒度,能应用不同的类型的Hash函数(对加密或者非加密Hash函数做了区别考虑),具有现有技术没有的实施灵活性,在实施者比较清楚自己平台特性的基础上,实施更有灵活性,能够挖掘更多的平台相关的潜在效率。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明内存冗余消除方法的流程图。
图2是查找数据结构为Hash表结构方式。
图3是查找数据结构为查找树结构方式。
图4是操作系统映射内存块的结构图。
具体实施方式
如图1所示,本发明公开了一种内存冗余消除方法,包括以下步骤:
步骤1,内存区域块的划分与选择,初始化查找数据结构。
根据不同的应用场景选择合理的划分方式,具体选择的依据是所应用场景内存可能冗余的程度。根据不同的应用场景选择合理的划分方式,依据不同CPU体系结构选择物理页框的大小:常见的,例如Intel x86可以的页框大小是4KB、2MB、4MB或者1GB几种可能性,而对于IA64可能有4K、8K、64K、256K、1M、4M、16M、256M;等等。
以物理页框划分方式为例,守护进程依照计算机虚拟内存管理的页表扫描,每次通过1到4次的页表查询得出一个可以直接寻址的物理页框。并计算出可以对其进行访问的内存指针,并将该页框的指针作为下一步的输入。如果在页表扫描的过程中出现了空的页表项,则跳过,扫描下一个页表项。在页框划分方式为例的前提下。
初始化查找数据结构为空。
步骤2,采用Hash(哈希)函数计算所选区域块的全部内容Hash值或者部分内容Hash值(简称H值)。
根据具体实施的需求选择一个Hash函数,该Hash函数可以是强度比较高冲突率比较小的加密Hash函数比如SHA-1;也可以是强度比较低,冲突率稍高的非加密Hash函数,视实施的硬件的特性以及对速度的要求而定。试图达到在所实施的具体硬件环境中,该Hash函数的计算代价比较小,而冲突率又不是很高。该Hash函数以当前所选择的内存区域的指针作为输入,计算该内存区域全部或者部分内容的Hash值。在计算过程中,应当保持该内存区域的内容不变。得出的Hash值可以为32位、64位或者128位的无符号整形。
步骤3,从查找数据结构中,查找是否有其他区域块的哈希值与步骤2中区域块的哈希值相同。
根据具体实施的需求可以选择Hash表或者查找树作为查找数据结构,根据查找数据结构可能的规模,可以为动态或者静态存储。典型的哈希表的结构如图2所示,典型的查找树的结构图如图3所示:其中以每个内存区域块的Hash值为键值(以Hi表示),内存区域块号组成的二元组作为这两种结构的基本节点
以查找树为例,上一步骤的Hash值作为查找的键值,进行树的查找操作。一般为了快速查找,查找树的涉及可以采用红黑树,AVL树等的平衡结构。
步骤4,如果是,则判定两个区域块为高概率相同,转至步骤6,否则转至步骤5。
如果找到另外一个区域块的Hash值,与步骤2内存区域块的Hash值相同,那么由于Hash函数的特点,即可认为这两个Hash值相同的内存区域块有很高的概率完全相同。那么需要进一步的判断来确定,是否这两块的内容确实完全相同还是仅仅是由于Hash冲撞导致的Hash相同。因为只有严格相同的两个内存区域块,才能真的进行冗余消除。一般认为,如果小于硬件除错的概率的Hash冲撞率,那么可以认为如果Hash值相同那么这个区域块内容严格相同。否则,需要更高可信度的判断。
步骤5,如果没有找到另一块Hash值相同的区域块,那么将此区域块以及Hash值加入查找数据结构,并转入步骤10。
以查找树为例如果通过树的查找操作没有查找到相同Hash值的另一个区域块,那么,将此内存区域块以它的Hash值作为键值,插入到此查找树当中。并做对应的查找树平衡操作。此步骤的执行可以令查找数据结构不断扩充,因此实施过程中需要保证足够的预留存储空间来存放查找数据结构。
步骤6,如果步骤2中Hash函数的种类为加密Hash函数,转入步骤8,否则进行步骤7。
一般加密Hash函数的冲撞率都非常低,例如SHA-1,构造一个冲突需要大约280次操作,这样的冲撞率一般能够保证,如果两个内存区域块的全内容Hash值相同,那么,这个两个区域块的内容不相等的概率,比硬件错误而导致的内存区域块内容改变的概率还要低。因此,如果在步骤2中Hash函数选取的是加密Hash函数,并且作为Hash函数输入的是全部的内存区域内容,那么可以直接进行索引的替换工作。
步骤7,比较这两个Hash值相同的区域块的全部内容,如果内容不相同,转入步骤10,如果相同,进行步骤8。
如果采用的是非加密的Hash函数,那么,尽管两个内存区域块的Hash相同,他们仍然是有一定的概率不同。如果内容真的不同,直接用一种一个内存区域块的索引替换另外一个内存区域块的索引会导致数据信息的丢失。因此,在本步骤,需要进一步100%确认这两个内存区域块是否相等。确认的方式可以是常见的内存比较函数memcmp或者其它类似的按字节对比机制,如果有硬件支持,可以对此比较过程进行加速。比较得出的结果,如果发现这两个Hash值相同的区域块实际内容确实相同,那么,继续步骤8;否则,转入步骤10。
步骤8,将其中一个区域块的索引替换成另一个区域块的索引;并更改原来索引的访问权限,变成写时拷贝(Copy-On-Write)
假设将该两个区域块命名成B1和B2(对应关系任意),将原本指向B1的索引替换成指向B2的索引,并更改所有指向B2的索引访问权限,进行步骤9。
本步骤只需要将其中的一个内存区域块的索引替换成另一个即可。以页框划分方式为例,这里索引即是指向物理页框的虚拟内存页表项。在替换了页表项以后,原来所有各自访问两个物理页框的操作,即会被导引到同一个物理页框。显然,这个时候如果有写入操作,那么会导致不一致,因此,需要对索引(页表项)的访问权限做一定限制。限制的方式可以是全部变成写时拷贝(Copy-On-Write)。
步骤9,释放被替换索引的冗余的区域块:
此时由于被替换索引的区域块已经不再有索引指向它,那么该区域块是无用的冗余区域块。可以对此内存区域块执行释放操作。以页框划分方式为例,这样的操作可能将该页框放回可供自由分配的存储池。
步骤10,从剩余内存区域块中选择下一个区域块返回步骤2,直到所有内存区域块遍历完毕。
到本步骤的时候,已经完成了一个冗余内存区域块的消除工作。那么需要选择下一个内存区域块来尝试进行冗余消除。
实施例1
本实施例公开了一种基于内存区域块物理页框划分的云计算环境下内存冗余消除方法,包括以下步骤:
步骤1,采用虚拟化技术管理内存块划分方法将计算机内存划分成不同的物理页框,通过扫描计算机虚拟内存管理的页表,选择其中一个物理页框,初始化查找数据结构;
步骤2,采用加密的哈希函数或者非加密的哈希函数,计算当前选择物理页框的全部内容或者部分内容的哈希值作为当前选择物理页框的哈希值;
步骤3,从查找数据结构中,查找是否有其他物理页框的哈希值与步骤2中物理页框的哈希值相同;
步骤4,如果是,则判定两个物理页框为高概率相同,转至步骤6,否则转至步骤5;
步骤5,将此物理页框以及哈希值加入查找数据结构,转至步骤10;
步骤6,如果步骤2中采用加密哈希函数,并且哈希函数计算的是物理页框的全部内容,则转至步骤8,否则转至步骤7;
步骤7,比较这两个物理页框的内容是否完全相同,如果完全相同,进行步骤8,否则转至步骤10;
步骤8,查找系统虚拟内存管理页表,将查找数据结构中已有的物理页框(假设用PageA表示)的页表项替换成当前选择的物理页框(假设用PageB)的页表项;并更改所有指向PageB的页表项的访问权限为写时拷贝(copy-on-write),进行步骤9;
步骤9,释放被替换页表项的冗余的物理页框PageA;
步骤10,从剩余区域块中选择一物理页框,并返回步骤2,直到所有物理页框遍历完毕。
实施例2
本实施例公开了一种基于操作系统映射内存块划分法的云计算环境下内存冗余消除方法。基于平台的特征,假设实施者确定内存的冗余粒度较大,并且硬件为加密Hash函数SHA1提供了特别的优化(例如VIA的C7处理器芯片)。
如图4所示,假设系统当中已有的进程P1、P2、…Pi等,其各自已有不同数量的映射内存区域块,依照地址次序链接在各自的进程控制块(PCB)中。
本实施案例包括以下步骤:
步骤1,将系统内存基于操作系统映射内存块(mmap系统调用所产生的内存映射块)划分成不同的内存块,依照系统中进程号,从大到小,进程地址从大到小的双重次序标准选择第一个内存块。初始化查找数据结构为空红黑树(包含0个树节点);
步骤2,初始化CPU(C7)用以计算SHA1哈希值的加密引擎,将所选择的内存区域的所有内容填入引擎并执行SHA1计算,得出160位哈希值H;
步骤3,从查找数据结构,红黑树中,查找是否有其它内存区域的哈希值与步骤2中所选内存区域相同;
步骤4,如果是,则认为这两个内存区域块的内容相同(由于SHA1的哈希冲撞概率相当低,甚至低于硬件的除错的概率,因此可以这样认为),转至步骤6,否则转至步骤5;
步骤5,将指向原被选择内存块的指针,以其SHA1哈希值H作为键值,插入到红黑树中,成为一个树节点。并同时检查和调整红黑树的红黑属性,结束后转至步骤8;
步骤6,将原本指向其中一个内存块(例如图4,Block2)的指针替换成指向相同的另一个内存块(例如图4,Block5)的指针;并更改所有指向Block2的指针的访问权限标注写时拷贝(图4中用点横线表示),扫描Block5所映射内存物理页面对应的虚拟内存页表,并将所有页表项置成写保护,从此以后,凡是对这个内存块的任何一个页面的写入操作都将触发对Block5数据的拷贝。
步骤7,删除并释放被替换指针的冗余内存区域块Block2(图4中用虚线表示),并做其它的指针调整用以连接其它原本由Block2连接的内存块(如图4说明);
步骤8,依照步骤1的排序方法,从剩余区域块中选择下一个内存块,并返回步骤2,直到所有内存块遍历完毕。
本发明提供了一种内存冗余消除方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (1)
1.一种内存冗余消除方法,其特征在于,包括以下步骤:
步骤1,将计算机内存划分成不同的区域块,选择其中一个区域块,初始化查找数据结构;
步骤2,采用加密的哈希函数或者非加密的哈希函数,计算当前选择区域块的全部内容或者部分内容的哈希值作为当前选择区域块的哈希值;
步骤3,从查找数据结构中,查找是否有其他区域块的哈希值与步骤2中区域块的哈希值相同;
步骤4,如果是,则判定两个区域块为高概率相同,转至步骤6,否则转至步骤5;
步骤5,将此区域块以及哈希值加入查找数据结构,转至步骤10;
步骤6,如果步骤2中采用加密哈希函数,并且哈希函数计算的是区域块的全部内容,则转至步骤8,否则转至步骤7;
步骤7,比较这两个区域块的内容是否完全相同,如果完全相同,进行步骤8,否则转至步骤10;
步骤8,用一个区域块替换另一个区域块,并更改被替换的区域块的索引的访问权限,进行步骤9;
步骤9,释放被替换索引的区域块;
步骤10,从剩余区域块中选择一区域块,并返回步骤2,直到所有区域块遍历完毕;
步骤1中所述将计算机内存划分成不同的区域块采用物理内存页框划分法、操作系统映射内存块划分法以及虚拟化技术管理内存块划分法中的任意一种;
步骤3中数据结构为哈希表或者查找树;
步骤8中的索引为指针,数组下标或者虚拟内存页表项中的任意一种;
步骤8中原来的索引访问权限更改为写时拷贝。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210171790.0A CN102722452B (zh) | 2012-05-29 | 2012-05-29 | 一种内存冗余消除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210171790.0A CN102722452B (zh) | 2012-05-29 | 2012-05-29 | 一种内存冗余消除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722452A CN102722452A (zh) | 2012-10-10 |
CN102722452B true CN102722452B (zh) | 2015-02-18 |
Family
ID=46948225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210171790.0A Expired - Fee Related CN102722452B (zh) | 2012-05-29 | 2012-05-29 | 一种内存冗余消除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722452B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257928B (zh) * | 2013-04-16 | 2016-01-13 | 深圳市江波龙电子有限公司 | 闪存设备数据管理方法和系统 |
CN104166632A (zh) * | 2013-05-17 | 2014-11-26 | 华为技术有限公司 | 页面内容共享的方法及装置 |
CN105808383B (zh) * | 2016-03-11 | 2020-04-07 | 重庆大学 | 一种快速响应的虚拟机检查点保存方法 |
CN107562794A (zh) * | 2017-08-01 | 2018-01-09 | 佛山市深研信息技术有限公司 | 一种大数据的冗余检测方法 |
US11210232B2 (en) * | 2019-02-08 | 2021-12-28 | Samsung Electronics Co., Ltd. | Processor to detect redundancy of page table walk |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706825A (zh) * | 2009-12-10 | 2010-05-12 | 华中科技大学 | 一种基于文件内容类型的重复数据删除方法 |
CN102207939A (zh) * | 2010-03-31 | 2011-10-05 | 联想(北京)有限公司 | 一种多硬件系统数据处理设备及删除重复数据的方法 |
CN102385554A (zh) * | 2011-10-28 | 2012-03-21 | 华中科技大学 | 重复数据删除系统的优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235163A1 (en) * | 2007-03-22 | 2008-09-25 | Srinivasan Balasubramanian | System and method for online duplicate detection and elimination in a web crawler |
-
2012
- 2012-05-29 CN CN201210171790.0A patent/CN102722452B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706825A (zh) * | 2009-12-10 | 2010-05-12 | 华中科技大学 | 一种基于文件内容类型的重复数据删除方法 |
CN102207939A (zh) * | 2010-03-31 | 2011-10-05 | 联想(北京)有限公司 | 一种多硬件系统数据处理设备及删除重复数据的方法 |
CN102385554A (zh) * | 2011-10-28 | 2012-03-21 | 华中科技大学 | 重复数据删除系统的优化方法 |
Non-Patent Citations (1)
Title |
---|
敖丽,舒继武,李明强.重复数据删除技术.《软件学报》.2010,第21卷(第5期),916-929. * |
Also Published As
Publication number | Publication date |
---|---|
CN102722452A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7472249B2 (en) | Kernel memory free algorithm | |
US20180173643A1 (en) | File Data Access Method and Computer System | |
US7620766B1 (en) | Transparent sharing of memory pages using content comparison | |
US10719255B2 (en) | Physical memory migration for secure encrypted virtual machines | |
US10423478B2 (en) | Security enhanced out of process user space handling of hardware events | |
CN102722452B (zh) | 一种内存冗余消除方法 | |
US7149873B2 (en) | Methods and apparatus for a dual address space operating system | |
US11467977B2 (en) | Method and apparatus for monitoring memory access behavior of sample process | |
US20150309832A1 (en) | Isolation Method for Management Virtual Machine and Apparatus | |
CN108491716B (zh) | 一种基于物理页地址分析的虚拟机内存隔离性检测方法 | |
CN102439567A (zh) | 分布式虚拟机访问异常的处理方法以及虚拟机监控器 | |
US20200042461A1 (en) | Process isolation for out of process page fault handling | |
US10762223B2 (en) | Mandatory access control method and apparatus, and physical host | |
US7500074B2 (en) | Identifying relocatable kernel mappings | |
US20230018412A1 (en) | Reverse shadow page tables for nested virtual machines | |
US11586727B2 (en) | Systems and methods for preventing kernel stalling attacks | |
Veni et al. | MDedup++: Exploiting temporal and spatial page-sharing behaviors for memory deduplication enhancement | |
US11200175B2 (en) | Memory accessor invailidation | |
US11243801B2 (en) | Transparent huge pages support for encrypted virtual machines | |
US11061711B2 (en) | Storage deduplication for virtual machines with encrypted storage | |
CN113704007B (zh) | 利用硬件特性的无服务器计算平台加速系统 | |
Liang et al. | The Management Scheme of Embedded Memory Based on Power Grid System | |
CN101950274A (zh) | 一种管态维护且目态共享的数据访问装置及方法 | |
US20230289294A1 (en) | Apparatus and method | |
Liu et al. | Multi-level Reliable Security Mechanism Based on SpaceOS |
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 | ||
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: 20150218 Termination date: 20180529 |