一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于事务存储器的存储器页去重复的制作方法

2022-12-09 23:36:03 来源:中国专利 TAG:

基于事务存储器的存储器页去重复


背景技术:

1.本实施例涉及存储器页的去重复(de-duplication)。更具体地说,这些实施例涉及使用事务存储器和并行性来支持和实现元件(element)间的去重复。
2.虚拟机是物理机器的软件实现,并且展示单独计算机的行为。虚拟机是独立的操作环境,其表现得如同是单独的计算机,同时允许在多个虚拟机之间共享底层物理机器资源。每个虚拟机作为整个机器操作,而(一个或多个)虚拟机的主机管理资源以支持每个虚拟机。例如,虚拟机包括cpu、存储器和i/o槽,这些槽是计算机系统内的可用资源池的子集。计算机系统内的虚拟机中的每一个能够运行操作系统的版本和一组应用工作负荷。不管虚拟机类别如何,在虚拟机内运行的软件限于由虚拟机提供的资源和抽象。


技术实现要素:

3.实施例包括用于识别存储器去重复机会并且选择性地使存储器页经受去重复的系统、计算机程序产品和方法。
4.在一个方面,计算机系统被提供有处理单元,该处理单元操作地耦合到存储器和操作系统以支持虚拟存储器页去重复。去重复机构操作地耦合到处理单元,支持操作地耦合到第一和第二元件的第一和第二去重复过程,其中过程被配置为并行操作。该去重复机构经由第一和第二去重复过程中的一个或多个被配置为识别第一存储器页并且选择性地去重第一存储器页。去重复机构的功能包括:在第一数据结构中搜索表示与第一存储器页相对相同的存储器页的第一匹配条目,并且响应于这样的识别,在第一数据结构中表示第一存储器页和第一匹配条目;以及响应于在第一数据结构中不存在第一匹配条目,在第二数据结构中搜索与所述第一存储器页相对相同的第二匹配条目。如果第一存储器页不存在,则将第一存储器页插入第二数据结构中,并且如果确定第一存储器页存在,则将第一存储器页从第二数据结构中移除,并且用第一数据结构中的对应的匹配条目表示。去重复机构利用事务存储器来解决对第一和第二数据结构的并发访问。
5.在另一方面中,提供一种用于对一个或一个以上存储器页进行去重复的计算机程序产品。该计算机程序产品具有计算机可读存储设备,该计算机可读存储设备具有具体化的程序代码。去重复机构支持分别操作地耦合到第一和第二元件的第一和第二去重复过程,其中这些过程被配置为并行操作。程序代码被配置为识别第一存储器页并且选择性地对第一存储器页进行去重复。去重复的功能包括程序代码用于:在第一数据结构搜索表示与第一存储器页相对相同的存储器页的第一匹配条目,并且响应于此识别而在第一数据结构中表示第一存储器页和第一匹配条目;以及响应于在第一数据结构中不存在第一匹配条目,在第二数据结构中搜索与第一存储器页相对相同的第二匹配条目。如果第一存储器页不存在,则程序代码将第一存储器页插入第二数据结构中,并且如果第一存储器页存在,则程序代码从第二数据结构中移除第一存储器页,并且用第一数据结构中的对应的匹配条目来表示第一存储器页。程序代码利用事务存储器来解决对第一和第二数据结构的并发访问。
6.在又一方面,提供了一种用于在计算机系统中对一个或多个存储器页进行去重的方法,该计算机系统配置有支持分别操作性地耦合到第一和第二元件的第一和第二去重复过程的去重复机构,其中这些过程被配置为并行操作。识别第一存储器页且使其经受选择性去重复。去重复的功能包括:在第一数据结构搜索表示与第一存储器页相对相同的存储器页的第一匹配条目,并且响应于这样的识别,在第一数据结构中表示第一存储器页第一匹配条目;以及响应于在第一数据结构中不存在第一匹配条目,在第二数据结构中搜索与第一存储器页相对相同的第二匹配条目。如果第一存储器页不存在,则将第一存储器页插入第二数据结构中,并且如果第一存储器页存在,则从第二数据结构中移除第一存储器页,并且用第一数据结构中的对应的匹配条目表示第一存储器页。事务存储器被用于解决第一和第二数据结构的并发访问。
7.这些和其它特征和优点将从下面结合附图对当前优选实施例的详细描述中变得显而易见。
附图说明
8.这里参考的附图形成说明书的一部分。附图中所示的特征仅是一些实施例的说明,而不是所有实施例的说明,除非另有明确指示。
9.图1描述了支持并行存储器页去重复的计算机系统的示意图。
10.图2a和图2b描述了说明去重复过程和该过程中所采用的步骤的流程图。
11.图3a描述了说明开始基于事务存储器的事务的过程的流程图。
12.图3b描述了说明停止事务存储器指令的过程的流程图。
13.图4a和图4b描述了演示经由对应的数据结构(例如第一和第二数据结构)将散列函数应用于一个或多个存储器页的流程图。
14.图5是描述基于云的支持系统的计算机系统/服务器的示例的框图,以实现以上参考图1至图4b描述的系统和过程。
15.图6描述了示出云计算机环境的框图。
16.图7描述了示出由云计算环境提供的一组功能抽象模型层的框图。
具体实施方式
17.容易理解,如在这里的附图中一般性描述和示出的,本实施例的部件可以以各种不同的配置来布置和设计。因此,如附图中所呈现的,以下对本实施例的装置、系统、方法和计算机程序产品的实施例的详细描述不旨在限制如所要求保护的实施例的范围,而仅仅是所选实施例的代表。
18.在整个说明书中对“选择实施例”、“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中,因此,在整个说明书中的各个地方出现的短语“选择实施例”、“在一个实施例中”或“在实施例中”不一定是指同一实施例。
19.通过参考附图,将更好地理解所示实施例,其中,相同的部件始终由相同的附图标记表示。以下描述仅意在作为示例,并且仅示出与本文要求保护的实施例一致的设备、系统和过程的某些所选实施例。
20.参考图1,描述了支持并行存储器页去重复的计算机系统(100)的示意图。如图所示,服务器(110),也称为主机,提供有通过总线(116)操作地耦合到存储器(114)的处理单元(112),并与一个或多个永久存储设备(118)通信。如图所示,为主机(110)提供主机操作系统,主机o/s(120),并与底层硬件组件交互。存储器管理器(130)被示为嵌入在主机o/s(120)中,并且用于支持存储器页去重复机构(140)。存储器管理器(130)经由去重复机构(140)允许多个去重复过程(de-duplication process),或者在实施例中,多个线程,同时在单个主机系统(110)上运行。这里示出的去重复过程在操作上耦合的元件上操作,该元件可以是虚拟机、容器中的进程、或者管理操作系统(120)或管理程序(未示出)上的存储器的任何元件或实体。为了描述的目的,操作地联接的元件在下文中被称为元件。如在此通过举例的方式所示,提供了三个去重复过程,包括去重复过程0(1440)、去重复过程1(1441)以及去重复过程n(144n),然而这个数量不应被认为是限制性的。
21.示出了多个元件经由主机o/s(120)操作地耦合到主机(110),包括元件0(1500)、元件1(1501)和元件n(150n)。每个元件是运行应用和程序的平台。例如,在实施例中,一个或多个元件可以是虚拟机或容器。尽管在此示出了三个元件,但是该数量不应被认为是限制性的。每个元件经由去重复机构(140)操作地连接到对应的去重复过程。例如,元件0(1500)操作地耦合到去重复过程0(1440),元件1(1501)操作地耦合到去重复过程1(1441),并且元件n(150n)操作地耦合到去重复过程n(144n)。
22.存储器页是固定数量的字节,并且表示虚拟存储器操作系统中用于存储器管理的数据单位。存储器去重复是一种合并相同的存储器页以节省物理存储器资源的技术。如本文所示,本文表示为元件0(1500)、元件1(1501)和元件n(150n)的每个元件被示出为具有多个存储器页以支持对应的工作负载。作为示例,元件0(1500)用页
0,0
(160
0,0
)和页
0,1
(160
0,1
)示出,元件1(1501)用页
1,0
(160
1,0
)和页
1,1
(160
1,1
)示出,而元件n(150n)用页
n,0
(160
n,0
)和页
n,1
(160
n,1
)示出。尽管每个元件被示出为具有两页,但是该数量不是限制性的。应当理解,由于类似的工作负荷,在至少两个元件之间可以存在相同的存储器页。
23.如在此示出和描述的,两个或更多个去重复过程(1440)、(1441)和(144n)被配置为并行运行。每个去重复过程(1440)、(1441)和(144n)负责扫描可操作耦合的元件的存储器页。作为示例,去重复过程0(1440)负责扫描元件0(1500)的页(160
0,0
)和(160
0,1
),去重复过程0(1441)负责扫描元件1(1501)的页(160
1,0
)和(160
1,1
),并且去重复过程n(144n)负责扫描元件n(1500)的页(160
n,0
)和(160
n,1
)。去重复机构(140)用于识别来自元件之一的任何页是否与来自相同物理机器(例如主机(120))上的相同元件或其他元件的另一页相同。对存储器页进行去重复处理,并在此过程中进行比较。然而,为了比较页或者以有效的方式比较页,比较需要评估相似的对象。如本文所示和所述,利用散列函数来为各个存储器页生成散列码。每个去重复过程,例如(1440)、(1441)和(144n),可以单独利用散列函数来为单独的存储器页生成散列码。在本领域中应当理解,散列码是从任何对象生成的数值,例如数字。在这种情况下,针对各个存储器页生成散列码,并且如本文所述,散列码用于在相等性测试期间识别存储器页。如果两个对象返回相等的散列码,则认为它们相等。在虚拟机或元件和对应的虚拟存储器页的情况下,如果两个虚拟存储器页返回相等的散列码,则认为它们相等。因此,散列函数在此用于将单独的虚拟存储器页映射到固定大小的值。
24.使用例如散列码的值来表示(一个或多个)存储器页。在实施例中,利用逻辑表达
式来压缩或减小所生成的散列码的大小。当多个去重复过程在相同的物理机器上运行时,它们需要彼此合作以检测不同元件(1500)、(1501)、...(150n)之间的相同页。具体地说,去重复过程需要以共享的方式访问两个或多个数据结构。在实施例中,数据结构是散列表的形式。在去重复过程之间共享数据结构以组织和管理用于去重复的存储器页。如这里所示和所述,数据结构在这里被称为第一数据结构(170),例如第一散列表或稳定散列表,以及第二数据结构(180),例如第二散列表或非稳定散列表。第二数据结构(180)存储已经被去重复过程之一扫描但是由于没有检测到其他相同的存储器页而不能或者还没有与另一个存储器页合并的所有存储器页,而第一数据结构(170)存储已经合并的存储器页。这里分别示出和描述的第一数据结构(170)和第二数据结构(180)是开放散列表,也称为不相交集数据结构(disjoint-set data structure),它是跟踪被划分成多个不相交(非重叠)子集的元件集的数据结构。不相交集数据结构是表示集的动态集合的数据结构。不相交集数据结构支持创建包含单个元件新的集的操作、返回代表性元件、以及用集的集合中的并集替换第一集中的第一元件和第二集中的第二元件。
25.如图1所示,第一结构(170)和第二结构(180)分别被示为操作地耦合到存储器(114)。第二结构(180)最初是空的,例如未填充。第二结构(180)中的条目表示一个或多个未合并的存储器页,而第一结构(170)中的条目表示合并的存储器页。当页经受处理时,第一结构(170)和第二结构(180)被选择性地填充。数据结构中的每个条目,无论是第一结构(170)还是第二结构(180),都表示存储器页,其中该条目识别该页。页的散列值被用作其键(key),该键进一步被用于将页映射到散列表中的槽。可以理解,两个不同页的散列值可具有相同的散列值,并且为了解决这个方面,扩展散列表设计和功能以允许重复的键。识别页的条目是页识别符。识别该值的条目是指向页地址的指针,或者在一个实施例中是指针列表。在多个指针的实施例中,页地址表示多个相同页合并到一个地址。因此,第一结构(170)和第二结构(180)之一中的每个条目分别包括页识别符、散列码和至少一个指向页地址的指针。
26.第一第二结构(170)和第二结构(180)二者分别可由去重复过程(1440)、(1441)和(144n)中的每一个访问。去重复过程(1440)、(1441)和(144n)协作以合并包括元件内和跨不同元件(例如元件间)的每个可操作耦合的元件(1500)、(1501)、...(150n)内的页。当评估一个或多个元件内的或与一个或多个元件相关联的存储器页以便去重复时,对应的去重复过程利用散列函数来生成用于存储器页的散列码。例如,页
0,0
(160
0,0
)对于元件
0,0
(1500)是本地的,并且因此由去重复过程0(1440)处理以生成对应的散列码,其中该散列码是存储器页的表示。去重复是针对并行操作的并且分别并行访问第一数据结构(170)和第二数据结构(180)的两个或更多去重复过程,例如(1440)、(1441)和(144n)。数据结构的访问包括读取其中的条目,或者在实施例中,写入数据结构以添加、移除或修改其中的条目。由其对应的散列码表示所识别的重复条目被存储在第一结构(170)中,而非重复条目被存储在第二结构(180)中。比较和去重复的细节,包括经由与访问相同数据结构的两个或更多个去重复过程相关联的事务存储器的冲突解决,在图2a至图4中示出和描述。因此,多个去重复过程在此被示为通过使用不相交集数据结构来协作合并存储器页,并且利用事务存储器来保证来自多个去重复过程的并发数据结构访问的正确性。
27.参考图2a和图2b,提供了流程图(200)以说明去重复过程和该过程中采用的步骤。
如图1所示和描述的,主机被提供有两个或更多的去重复过程,主机被提供有经由存储器管理器(130)操作地耦合到对应的元件的两个或更多个去重复过程,其中每个元件具有一个或多个存储器页以支持事务。至少一个去重复过程访问对应的元件中的存储器页p(202)。例如,在实施例中,被分配或第一元件0(1500)与第一元件0(1500)相关联的去重复过程0(1440)访问存储器页(160
0,0
)。针对第一数据结构开始基于事务存储器的事务(204)。参考图3a,提供了流程图(300)以说明开始基于事务存储器的事务的过程。如图所示,在事务存储器事务已开始(302)之后,初始化计数器变量c(304),接着评估计数器值是否已超过可配置阈值c
threshold
(306)。对评估的否定响应之后是发出事务开始命令(308),肯定响应之后是获取对应的数据结构上的锁(lock),在这种情况下,该数据结构是第一数据结构(310)。在步骤(306)或步骤(308)之后,开始事务的过程结束,并且过程返回到图2a,其中已经接收到通信或指令以发出针对第一数据结构(206)的事务开始。因此,事务存储器被用作访问第一数据结构的主要工具。
28.如图1所示和所描述的,经由一个或多个去重复过程的去重复机构(130)利用散列函数来处理存储器页以便去重复。参考图4a和图4b,提供了流程图(400)以示出用于将散列函数应用于在对应的数据结构(例如,第一和第二数据结构)中引用的一个或多个存储器页的过程。如图所示,计算作为去重复的对象的数据结构的大小s(402)。利用散列函数来生成用于存储器页p的散列码,并且将散列分配给变量,例如k(404)。在步骤(404)之后,来自步骤(404)的散列码值用于计算数据结构(例如散列表)中的哪个槽应该基于以下操作来分配存储器页:k mod s,其中k是散列值,s是数据结构(例如散列表)的大小(406)。应用于存储器页的函数mod是应用于存储器页的散列值(例如k)的模运算,两个散列的存储器页,例如页0和页1,如果k
0 mod s与k
1 mod s是相同的值,则初步认为是重复的,在步骤(406)确定的值用于识别存储器页应被分配到对应的数据结构中的哪个槽(408)。因此,散列值经受用于对应的数据结构内的槽或位置识别的操作。
29.表中的每个槽可以处于以下状态之一:空、占用或墓碑(tombstone)。空状态意味着没有元件被插入到该槽中,占用状态意味着当前在该槽中有元件,并且墓碑状态意味着在该槽中有元件,但是该元件先前被删除并且该槽现在是空的。如这里所示和所述,搜索的开始位置是k mod s。在搜索期间,如果槽被占用,则进行评估以确定元件是否匹配,如果槽是墓碑槽,则跳过该槽并且搜索进行到下一槽,并且如果槽是空的,则搜索结束。
30.在步骤(408)之后,进行评估以确定在步骤(408)识别的槽在对应的数据结构(410)中是否为空。对该确定的肯定响应是在所识别的槽中没有找到条目的指示(412),并且该过程返回到图2a中的步骤(208)。然而,对该确定的否定响应之后是比较,以确定所识别的槽中的散列值是否匹配作为处理的对象的页的散列值,例如k(414)。对步骤(414)处的确定的肯定响应进行到下面在步骤(428)中示出和描述的评估。然而,在对步骤(414)处的确定的否定响应之后是继续搜索数据结构。在实施例中,应当理解,数据结构中位置邻近的槽可用于存储具有相似或接近值的页。如图所示,在步骤(414)的否定响应之后,相对于下一槽的k mod s值搜索数据结构中的下一槽或条目(416)。然后确定是否已经搜索了整个数据结构(418)。对步骤(418)处的确定的肯定响应是搜索了整个结构并且没有找到匹配(420)的指示,并且过程返回到图2a的步骤(208)。类似地,对步骤(418)处的确定的否定响应之后是识别考虑中的槽是否为空(422)。对步骤(422)的确定的肯定响应之后是未找到匹
配指示(424),并且过程返回到图2a的步骤(208)。
31.在对步骤(422)处的确定的否定响应之后,进一步评估在数据结构中找到的条目。初始评估是k mod s的匹配值的识别,可以理解,类似但不相同地,存储器页可具有相同的k mod s值,但具有不同的散列值,例如意味着它们是不同的存储器页。如图所示,在对步骤(422)处的确定做出否定响应之后,确定正被搜索的页和槽中的页的散列值是否匹配(426)。对步骤(426)处的确定的否定响应是散列值不匹配指示,并且随后返回到步骤(416)以查明数据结构中是否存在可具有匹配对象的另一槽,并且肯定响应之后是槽中的内容与所考虑的存储器页(例如p)的散列值的比较(428)。然后确定内容是否匹配(430)。对步骤(430)处的确定的否定响应之后是返回到步骤(416),并且肯定响应之后是返回在数据结构中找到的页(432),并且返回到图2a中的步骤(208)。
32.如图4a和图4b所示和所述,评估数据结构,例如散列表,以识别是否存在匹配存储器页。返回到图2a,第一数据结构经受图4a和图4b中所示和所述的评估,以确定对于存储器页p是否存在匹配存储器页p1(208)。在对步骤(208)处的确定的肯定响应之后,将存储器页p与第一数据结构中的存储器页p1合并(210),并且停止事务存储器指令(212)。参考图3b,示出了流程图(350)以说明停止事务存储器指令的过程。如图所示,在接收到停止事务存储器事务指令(360)之后,确定计数器的值c是否等于计数器阈值c
threshold
(362)。对步骤(362)处的确定的肯定响应是响应于步骤(204)处的开始事务存储器指令而获取锁的指示。先前获得的锁被释放(364),并且返回事务的成功完成(366)。然而,在对步骤(362)处的确定的否定响应之后,发出事务停止命令(368),以及评估以确定是否已经检测到关于数据结构的使用的冲突(370)。在对步骤(370)处的确定的否定响应之后是返回到步骤(364),并且在肯定响应之后是事务的不执行(372)和计数器值的递增(374)。此后,返回事务失败命令(376),并且该过程返回到图3a的步骤(306),以发出事务存储器开始指令或获取用于主题数据结构的锁。
33.返回图2a,在步骤(212)之后,确定停止事务存储器指令是否成功(214)。对步骤(214)处的确定的否定响应之后是返回到步骤(204),例如图3a,并且肯定响应之后是返回到步骤(202)。然而,对步骤(208)处的确定的否定响应之后是发出步骤事务存储器指令(216),例如图3b,并确定该指令是否成功(218)。步骤(208)处的否定响应表示在第一数据结构中不存在用于对象存储器页的匹配条目。对步骤(218)处的确定的否定响应之后是返回到步骤(204),例如图3a,并且对步骤(218)处的确定的肯定响应之后是发出用于第二数据结构的开始基于事务存储器的事务(220),例如图3a,以及第二数据结构的搜索(222)。然后,确定对于第一数据结构中的页p是否存在匹配页p1(224)。对步骤(224)处的确定的否定响应之后是在第二数据结构中插入存储器页p(226)并发出停止事务存储器指令(228),例如图3b。然后确定在步骤(228)的指令是否成功(230)。对步骤(230)处的确定的否定响应之后返回到步骤(220),并且在肯定响应之后返回步骤(202)。因此,如果在第一或第二数据结构中没有找到匹配存储器页,则在第二数据结构中创建存储器页p的条目。
34.对步骤(224)处的确定的肯定响应是存储器页p和存储器页p1相同并且经历去重复的指示。如图所示,从第一数据结构中移除存储器页p1(232),并且发出停止事务存储器指令,例如图3b(234)。然后确定从第二数据结构移除存储器页p1是否成功(236)。对步骤(236)处的确定的否定响应之后是返回到步骤(220),例如图3a,并且对步骤(236)处的确定
的肯定响应之后是发出用于第一数据结构的开始事务存储器指令,例如图3a(238)。利用事务存储器或获取的锁,存储器页p和p1被合并(240),在第一数据结构中创建存储器页p的条目(242);并且发布停止事务存储器指令(244),例如图3b。然后确定第一数据结构中的存储器页合并是否成功(246)。对步骤(246)处的确定的否定响应之后是返回到步骤(238),并且肯定响应之后是返回到步骤(202)。因此,当在第二数据结构中识别出重复页时,它们经受合并并创建第一数据结构中的合并条目。
35.这里示出和描述的数据结构是两个单独的数据结构,这里也称为结构,例如第一结构(170)和第二结构(180),并且这里是关于存储器页去重复而创建和利用的。在一个实施例中,第一结构(170)在这里也被称为稳定表(st),而第二结构(180)在这里被称为不稳定表(ut)。第一结构(170)和第二结构((180)分别都是不相交集数据结构。ut和st在两个或更多去重复过程之间共享,并且因此两个或更多去重复过程可以并行地访问ut和st。ut作为空表开始,例如未填充,并且当存储器页经受散列函数并且对应的散列码被选择性地填充到ut中时被填充。当ut被选择性地填充时,ut中的条目包括未合并的存储器页,例如没有相同的存储器页。与ut相反,st是其中条目是合并的存储器页的数据结构,例如st表示已经合并的页。st中的条目可以表示两个或更多个存储器页。因此,ut和st与页的散列码表示结合使用,以促进和实现去重复。
36.在ut和st两者中创建条目的过程是有挑战性的,因为ut和st由至少两个去重复过程共享。在任何一个时刻,至少两个或更多的去重复过程可以并行地向ut和/或st读和写数据。从ut和st中的任一个或者两者读取数据将不会引起冲突,然而,当从ut或者st中移除条目或者在ut或者st中创建条目时可能出现冲突。如图2a和图2b所示,事务存储器被用来解决冲突,并且在选择的情况下,可获取锁来完成事务。
37.如这里所说明的,存储器页的去重复利用针对每个元件的单独的去重复过程,在一个实施例中,该元件可以是虚拟机,同时允许去重复过程并行地访问例如读取ut和st。每个元件的存储器由单个去重复过程处理。多个去重复过程协作以不仅合并每个元件内的存储器页,而且合并跨不同元件的存储器页。如图1所示,st和ut分别是主机(110)本地的全局结构(170)和(180)。ut和st的全局特性使得所有的去重复过程能够并行地访问并且支持所有的去重复过程对相同的页进行识别和合并,从而对相同的页进行去重复。尽管在图2a和图2b中示出和描述的过程说明了由单个过程或线程进行的单个存储器页访问,但是应当理解,多个过程和线程可以并行地调用该过程,并且由此并行地利用第一和第二数据结构。同时,如这里所述,由于ut和st对于在主机(110)上操作的每个去重复过程是全局可访问的,因此可能出现冲突。当写入ut和st时,利用事务存储器来解决这种冲突。事务存储器保证了来自多个去重复过程的并行数据结构访问的正确性。
38.事务存储器以有效和方便的方式解决了并发访问冲突。这里描述的页比较操作也被称为读操作,并且包括添加条目或移除条目的ut和st表修改也被称为写操作。在一个实施例中,st和ut上的读操作的量可以超过st和ut上的写操作的量。如图3a和图3b所示和所述,在实施例中,可以使用st和/或ut上的锁来解决冲突。然而,事务存储器的使用以比锁的成本低的成本解决了并发访问冲突。
39.如图1至图4所示和所述,提供了支持存储器页去重复的系统和过程。应当理解,去重复通过减少重复存储器页来降低云服务提供商的成本,并且增加存储器资源利用率。在
实施例中,可通过在给定的一组硬件上托管附加的元件或实施例vm来改进或增强云服务性能。
40.参考图5,提供了示出计算机系统/服务器(502)的示例的框图(500),该计算机系统/服务器在下文中被称为与基于云的支持系统通信主机(502),以实现以上参考图1至图4描述的系统和过程。主机(502)可与许多其它通用或专用计算系统环境或配置一起操作。适合与主机(502)一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统、以及包括上述系统、设备及其等效物中的任一个的文件系统(例如,分布式存储环境和分布式云计算环境)。
41.主机(502)可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。主机(502)可以在分布式云计算环境(510)中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
42.如图5所示,主机(502)以通用计算设备的形式示出。主机(502)的组件可以包括但不限于一个或多个处理器或处理单元(504)、系统存储器(506)以及将包括系统存储器(506)的各种系统组件耦合到处理器(504)的总线(508)。总线(508)表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子技术标准协会(vesa)局部总线和外围部件互连(pci)总线。主机(502)通常包括各种计算机系统可读介质。这种介质可以是可由主机(502)访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
43.存储器(506)可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)(530)和/或高速缓冲存储器(532)。仅作为示例,存储系统(534)可被提供用于从不可移动、非易失性磁介质(未示出,且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如cd-rom、dvd-rom或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个可以通过一个或多个数据介质接口连接到总线(508)。
44.具有一组(至少一个)程序模块(542)的程序/实用程序(540)以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器(506)中,这是作为示例而非限制。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块(542)通常执行图1至图4所示和描述的去重复机构的实施例的功能和/或方法。
45.主机(502)还可以与一个或多个外部设备(514)通信,这些外部设备为诸如键盘、定点设备、感觉输入设备、感觉输出设备等;显示器(524);一个或多个设备,其使得用户能够与主机(502)交互;和/或使主机(502)能够与一个或多个其它计算设备通信的任何设备
(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(i/o)接口(522)发生。此外,主机(502)可以经由网络适配器(520)与一个或多个网络通信,所述网络诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,因特网)。如所描述的,网络适配器(520)经由总线(508)与主机(502)的其他组件通信。在一个实施例中,分布式文件系统(未示出)的多个节点经由i/o接口(522)或经由网络适配器(520)与主机(502)通信。应当理解,尽管未示出,但是可以结合主机(502)使用其他硬件和/或软件组件。实例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据档案存储系统等。
46.在本文档中,术语“计算机程序介质”、“计算机可用介质”和“计算机可读介质”用于一般地指代诸如主存储器(506)的介质,包括ram(530)、高速缓存(532)和存储系统(534),诸如可移动存储驱动器和安装在硬盘驱动器中的硬盘。
47.计算机程序(也称为计算机控制逻辑)存储在存储器(506)中。计算机程序也可以通过通信接口,例如网络适配器(520)接收。当运行时,这样的计算机程序使计算机系统能够执行如本文所讨论的本实施例的特征。特别地,当运行时,计算机程序使处理单元(504)能够执行计算机系统的特征。因此,这样的计算机程序代表计算机系统的控制器。
48.在一个实施例中,主机(502)是云计算环境的节点。如本领域所公知的,云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理工作或与服务提供商的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。这些特性的示例如下:
49.按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
50.广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和pda)使用的标准机制来访问。
51.资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够指定在较高抽象层(例如国家、州或数据中心)的位置。
52.快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
53.测量服务:云系统通过利用在适于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象层处的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明度。
54.服务模型如下:
55.软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用程序可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
56.平台即服务(paas):提供给消费者的能力是将消费者创建或获取的应用部署到云
基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
57.基础设施即服务(iaas):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
58.部署模型如下:
59.私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
60.社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
61.公共云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
62.混合云:云基础设施是两个或更多云(私有、社区或公共)的组合,所述云保持唯一实体,但是通过使能数据和应用可移植性(例如,用于云之间的负载平衡的云突发)的标准化或私有技术绑定在一起。
63.云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
64.现在参考图6,说明性云计算网络(600)。如图所示,云计算网络(600)包括具有一个或多个云计算节点(610)的云计算环境(650),云消费者使用的本地计算设备可以与所述云计算节点通信。这些本地计算设备的示例包括但不限于个人数字助理(pda)或蜂窝电话(654a)、台式计算机(654b)、膝上型计算机(654c)和/或汽车计算机系统(654n)。节点(610)内的各个节点还可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境(600)提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图6中所示的计算设备(654a-n)的类型仅旨在说明,并且云计算环境(650)可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
65.现在参考图8,示出了由图6的云计算网络提供的一组功能抽象层(800)。应当预先理解,图7中所示的组件、层和功能仅旨在说明,并且实施例不限于此。如所描述的,提供了以下层和相应的功能:硬件和软件层(710)、虚拟化层(720)、管理层(730)和工作负载层(740)。硬件和软件层(710)包括硬件和软件组件。硬件组件的示例包括大型机,在一个示例中为系统;基于risc(精简指令集计算机)架构的服务器,在一个示例ibm系统中;ibm系统;ibm系统;存储设备;网络和联网组件。软件组件的示例包括网络应用服务器软件,在一个示例中为ibm应用服务器软件;以及数据库软件,在一个示例中是ibm d数据库软件。(ibm、zseries、pseries、
xseries、bladecerter、websphere和db2是在全世界许多管辖区注册的国际商业机器公司的商标)。
66.虚拟化层(720)提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器;虚拟存储;虚拟网络,包括虚拟专用网络;虚拟应用和操作系统;以及虚拟客户端。
67.在一个示例中,管理层(730)可以提供以下功能:资源供应、计量和定价、用户门户、服务层管理以及sla规划和履行。资源供应提供了对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户为消费者和系统管理员提供对云计算环境的访问。服务层管理提供云计算资源分配和管理,使得满足所需的服务层。服务层协议(sla)规划和履行提供了云计算资源的预安排和采购,其中根据sla来预计未来需求。
68.工作负载层(740)提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括但不限于:地图绘制和导航;软件开发和生命周期管理;虚拟教室教育传送;数据分析处理;事务处理;以及存储器页去重复。
69.尽管已经示出和描述了本发明的特定实施例,但是对于本领域技术人员来说,基于这里的教导,在不背离本发明及其更广泛方面的情况下,可以进行改变和修改是显而易见的。因此,所附权利要求将在其范围内包括在本发明的真实范围内的所有这样的改变和修改。此外,应当理解,本发明仅由所附权利要求限定。本领域技术人员将理解,如果所引入的权利要求元件的具体数目是有意的,则这样的意图将在权利要求中明确地叙述,并且在没有这样的叙述的情况下,不存在这样的限制。对于非限制性示例,为了帮助理解,所附权利要求包含使用介绍性短语“至少一个”和“一个或多个”来介绍权利要求元件。然而,这种短语的使用不应被解释为暗示通过不定冠词“一”或“一个”引入的权利要求要素将包含这种引入的权利要求要素的任何特定权利要求限制为仅包含一个这种要素的发明,即使当同一权利要求包括引导性短语“一个或多个”或“至少一个”和诸如“一”或“一个”的不定冠词时;这同样适用于定冠词在权利要求中的使用。
70.本发明可以是系统、方法和/或计算机程序产品。另外,本发明的选定方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和/或硬件方面的实施例的形式,这些实施例在本文中可以统称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取在其上具有计算机可读程序指令的计算机可读存储介质(或多个介质)中实现的计算机程序产品的形式,所述计算机可读程序指令用于使处理器执行本发明的各方面。如此实现的所公开的系统、方法和/或计算机程序产品可操作用于通过将活动,并且在一个实施例中是创作活动,指向知识库中的所识别的缺口,来改进信息检索的功能和操作。
71.计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、动态或静态随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、磁存储设备、便携式光盘只读
存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如其上记录有指令的打孔卡或凹槽中的凸起结构之类的机械编码设备、以及上述的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
72.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
73.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如java、smalltalk、c 等,以及常规的过程式编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器集群上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
74.在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
75.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的部件(mean)。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
76.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
77.附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代
实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
78.应当理解,尽管为了说明的目的,在此描述了本发明的具体实施例,但是在不脱离本发明的范围的情况下,可以进行各种修改。具体地,可以修改第一结构(170)和第二结构(180),使得每个条目可以与列表相关联,并且列表中的项目表示具有相同散列值但不同内容的存储器页。因此,本发明的保护范围仅由所附权利要求及其等同物限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献