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

内存重删方法、装置及存储介质与流程

2022-03-01 18:18:34 来源:中国专利 TAG:


1.本技术实施例涉及计算机技术,尤其涉及一种内存重删方法、装置及存储介质。


背景技术:

2.在非一致性内存访问(non-uniform memory access,numa)架构中,每一个节点都有处理器和内存,并且不同节点间通过高速互联部件进行连接。对于一个处理器来说,其所在节点的内存称为本地内存,其他节点中的内存称为远端内存。因此,在numa架构中,内存访问时间取决于内存相对于处理器的位置,处理器访问其本地内存的速度快于其访问远端内存的速度。若对numa架构的计算机系统(例如服务器)进行内存重删(memory deduplication),可能导致一个处理器所处理的数据被映射到远端内存中,从而造成大量的跨节点的内存访问,使得内存访存性能下降。


技术实现要素:

3.本技术实施例提供一种内存重删方法、装置及存储介质,以在有效提升内存重删率的同时,保证内存访存性能。
4.第一方面,本技术实施例提供一种内存重删方法,应用于numa架构的计算机系统,该计算机系统包含多个节点,其中多个节点中每个节点包含各自的内存和处理器。此方法包括:确定待去重进程间的相似度,也就是确定需要进行内存重删的进程的相似度,其中,内存重删是指将计算机系统中重复内存数据进行删除,并只保留一个副本在节点之间进行共享;根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点,目标节点包含于计算机系统的多个节点;对多个节点的内存中页面进行重删,即删除重复的内存页面,具体可以是节点内部重复内存页面的去重,或者,节点之间的重复内存页面的去重。由于相似度较高的待去重进程,其对应的数据重复概率较大,也即重复页面较多,因此通过将满足预设相似度条件的待去重进程迁移至目标节点来减少内存重删引起的跨节点内存访问,从而在有效提升内存重删率的同时,保证内存访存性能。
5.通过将相似度高的虚拟机/容器进程迁移到目标节点后,可以使得大部分重复内存处于少量节点内,节点间通常还存在少量重复数据,如何进一步对这些重复数据进行重删也是一个亟待解决的问题。这里,本技术通过新增冷热感知重删机制。
6.具体地,对多个节点的内存中页面进行重删,可以包括:监测内存中页面的被访问频率;根据被访问频率,对多个节点的内存中页面进行重删。通过监测内存中页面的被访问频率来获取内存中页面的冷热程度,进而基于页面的冷热程度对多个节点的内存中页面进行重删。将访问频率低且重复的页面进行跨节点内存重删,而访问频率高且重复的页面只在节点内重删。通过该机制可以在保证内存访存性能的前提下,进一步提升去重效果,获取更多的可用内存
7.一种可能的实施方式中,根据被访问频率,对多个节点的内存中页面进行重删,可以包括:对被访问频率大于第一预设频率的页面进行节点内重删,也就是说,对被访问频率
大于第一预设频率的页面,仅进行其所在节点内部重复页面的去重;或者,对被访问频率小于第二预设频率的页面进行跨节点重删,第一预设频率大于或等于第二预设频率。跨节点重删指的是删除其它节点上的重复页面,该其它节点指的是除该页面所在节点之外的节点。可以理解的是,本技术并不限制跨节点重删一定要删除其它所有节点上的重复页面。
8.根据实际需求或历史经验设置第一预设频率和第二预设频率,通过比较被访问频率与第一预设频率和第二预设频率,来确定对应该被访问频率的页面的重删方式:节点内重删或跨节点重删。
9.进一步地,对被访问频率大于第一预设频率的页面进行节点内重删,具体为:对被访问频率大于第一预设频率的页面,确定该页面所在节点的内存中是否存在与该页面相同的相同页面;若存在相同页面,则将被访问频率大于第一预设频率的页面的页表指向相同页面。或者,对被访问频率小于第二预设频率的页面进行跨节点重删,具体为:对被访问频率小于第二预设频率的页面,确定其在所在节点之外的节点的内存中是否存在相同页面;若存在相同页面,则将该页面的页表指向所述相同页面;或者反过来,既将该相同页面的指针执行该页面。前述这种重删方式也可以被称为合并页面或页面合并。
10.在上述基础上,监测内存中页面的被访问频率的一种具体实现为:监测候选页面的被访问频率,候选页面为预设时间段内未发生改变的页面。该实现方式的目的是预先挑选出进行内存重删的页面,即候选页面,只有当页面中的内容相对固定时,才考虑将其作为候选页面,对于哪些更新频率较高的页面,不在内存重删考虑的范围内。
11.对于确定待去重进程间的相似度,其可以通过多种方式实现。示例地,可以包括以下至少一种实现方式:
12.实现方式一、根据待去重进程间的页面相似度,确定待去重进程间的相似度;
13.实现方式二、根据待去重进程间的进程访存特征(characteristics of memory accessing),确定待去重进程间的相似度;
14.实现方式三、根据待去重进程间的输入输出信息,确定待去重进程间的相似度。
15.具体地,对于实现方式一,可以进一步包括:针对每一待去重进程,计算待去重进程的页面的页面哈希值;根据页面哈希值,获得待去重进程间的页面相似度为待去重进程间的相似度。其中,页面相似度为根据页面哈希值相同的个数与预设总页数确定的,预设总页数大于待去重进程的页面总数。
16.对于实现方式二,可以进一步包括:根据进程内存访问热点分布、内存和io带宽使用情况中至少一种信息,确定待去重进程间的相似度。可以理解,信息种类的数目越多,所得到的相似度的精度越高。例如,根据进程内存访问热点分布和io带宽使用情况所确定的待去重进程间的相似度,是要优于仅根据进程内存访问热点分布或io带宽使用情况所确定的待去重进程间的相似度的。
17.对于实现方式三,可以进一步包括:根据进程所属用户组信息、链接动态库信息和访问相同文件信息中至少一种信息,确定待去重进程间的相似度。与实现方式二类似,确定待去重进程间的相似度所用到的信息种类越多,得到的相似度的精度越高。
18.可选地,根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点,可以包括:针对满足预设相似度条件的待去重进程的第一页面,确定目标节点的内存中是否存在与第一页面相同的页面;若存在与第一页面相同的页面,则将第一页面
的页表指向目标节点的内存中存在的相同页面。考虑到相似度较高的待去重进程,其对应的数据重复概率较大,因此,对于待去重进程间的重复数据,仅需保留一份即可。具体地,确定目标节点的内存中是否已存在与待去重进程的页面的相同页面,若存在说明将该页面迁移至目标节点就会导致目标节点的内存中至少存在两份该页面,降低内存利用率,因此,若目标节点的内存中存在与第一页面相同的页面,则只需将第一页面的页表指向目标节点的内存中存在相同页面即可,通过不迁移重复页面,来减少迁移开销。
19.另外,为保证待去重进程迁移后各节点的负载相对均衡,在确定目标节点时需考量上述信息。示例地,进行待去重进程迁移时需要考虑目标节点上处理器是否被占满,是否有空闲的处理器供使用,否则会产生处理器的竞争。因此,在根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点之前,上述内存重删方法还可以包括:根据以下至少一种信息,确定目标节点:
20.计算机系统的可用处理器和可用内存空间、满足预设相似度条件的待去重进程占用的处理器和内存空间、满足预设相似度条件的待去重进程的个数等。
21.第二方面,本技术实施例提供一种内存重删装置,应用于numa架构的计算机系统,计算机系统包含多个节点,多个节点中每个节点包含各自的内存和处理器。该内存重删装置包括:
22.进程相似度探测模块,用于确定待去重进程间的相似度;
23.进程分组与迁移模块,用于根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点,目标节点包含于所述多个节点;
24.冷热感知重删模块,用于对多个节点的内存中页面进行重删。
25.上述第二方面所提供的内存重删装置具有实现上述第一方面或第一方面的各可能的实施方式的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
26.第三方面,本技术实施例提供一种内存重删装置,包括:存储器和处理器。
27.其中,存储器上存储有可供处理器执行的计算机程序;
28.当处理器读取并执行计算机程序时,使得处理器执行如第一方面中任一项所述的方法。
29.需要说明的是,上述第三方面的信息分配装置,可以是交换设备或线卡设备,也可以是可用于交换设备的芯片或线卡设备的芯片。
30.第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由处理器执行,实现如第一方面中任一项所述的方法。
31.第五方面,本技术实施例提供一种芯片,该芯片上存储有计算机程序,在计算机程序被处理器执行时,执行如第一方面中任一项所述的方法。
32.第六方面,本技术实施例提供一种程序,在程序被处理器执行时,执行如第一方面中任一项所述的方法。
33.本技术的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
34.图1为numa结构的一示例图;
35.图2为本技术一实施例提供的内存重删方法的流程图;
36.图3为本技术另一实施例提供的内存重删方法的流程图;
37.图4为本技术又一实施例提供的内存重删方法的流程图;
38.图5为本技术一实施例提供的内存重删装置的结构示意图;
39.图6为本技术一实施例提供的内存重删装置的产品实现形态示意图;
40.图7为本技术一实施例提供的内存重删装置的产品应用示意图;
41.图8为本技术另一实施例提供的内存重删装置的结构示意图。
具体实施方式
42.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。“/”表示“或”的关系。
43.为便于理解,首先,对本技术涉及的部分术语进行解释说明。
44.numa架构,是一种为多处理器设备设计的架构,内存访问时间取决于内存相对于处理器的位置。
45.本地内存与远端内存,在numa架构的计算机系统中,计算机系统中的内存和处理器被划分给不同的节点,每一个节点都包含各自的处理器和内存,并且不同节点间通过高速互联部件进行连接。对于一个处理器来说,其所在节点的内存称为本地内存,其他节点中的内存称为远端内存。
46.示例性的,图1为numa结构的一示例图。如图1所示,该numa结构包括:至少一个处理器,这里示出了三个处理器,分别为处理器11、处理器12、处理器13,这三个处理器分别包含于不同的节点;每个处理器对应一内存,即本地内存,处理器11、处理器12和处理器13分别对应的本地内存为内存21、内存22和内存23;处理器与处理器之间、内存与处理器之间通过内部总线连接。但需明确的是,节点可以包含至少一个处理器,这里为便于理解,仅以节点包含一个处理器为例进行说明。
47.内存重删(memory deduplication),指将计算机系统中的重复内存数据进行删除,并只保留一个副本在节点之间进行共享。
48.内存访存(characteristics of memory accessing)性能,进程访问主机系统内存的延迟。
49.内存重删率,被删除的重复数据占被删除前总数据的比例,即内存重删率等于内存重删节省的内存与内存重删前的总内存的比值。
50.由于在虚拟机/容器通常运行着相同或相似的操作系统和应用,导致虚拟机/容器间存在大量重复内存数据,因此,内存重删是云计算等虚拟化环境中增加可用内存的一种常用手段。目前的内存重删通常是通过比较系统中的页面内容以找到重复的页面,然后通过将重复的页面的页表指向同一个页面,并且释放冗余的页面来达到内存重删的目的。通过内存重删可以大大节省重复内存数据的内存占用,提高了内存利用率。
51.但是对于numa架构的计算机系统,上述内存重删技术会严重降低内存访存性能。
因为在numa架构中,内存访问时间取决于内存相对于处理器的位置,处理器访问其本地内存的速度快于其访问远端内存的速度。因此,在numa架构的计算机系统中进行内存重删时,可能会导致一个处理器所处理的内存数据被映射到其他处理器所拥有的内存中,造成大量的跨节点内存访问,导致内存访存性能下降。如图1所示例,若处理器11访问内存22或内存23中存储的内存数据,即跨节点内存访问。
52.而如果关闭跨节点内存重删,只进行节点内的内存重删,这种方式可能会导致不同节点的内存中仍旧存在大量重复数据,因此,该方式内存重删率较低,但是该方式可以有效避免跨节点内存访问,对内存访存性能基本没有影响。
53.目前,linux内核的内存去重机制(kernel samepage merging,ksm)支持numa架构下的内存重删。但是ksm只允许用户进行跨节点内存重删或节点内内存重删,其中,跨节点内存重删允许系统中所有重复内存页面进行跨节点的重删,而节点内内存重删只允许节点内的重复内存页面相互进行重删。
54.ksm在numa架构下进行内存重删时,如果只进行节点内内存重删,则内存重删率低,但不影响内存访存性能;如果只进行跨节点内存访问,则内存重删率高,但内存访存性能有较大影响。即,现有技术不能兼顾高的内存重删率和好的内存访存性能。
55.基于上述问题,针对numa架构的计算机系统,示例地,numa架构的计算机系统可以具体为服务器,本技术提供一种基于相似进程迁移的内存重删方法、装置及存储介质,其技术构思为:通过将相似度高的进程迁移到同一节点上,以尽可能的减少跨节点内存重删,达到在有效提升内存重删率的同时,保证内存访存性能的目的。
56.下面,通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
57.图2为本技术一实施例提供的内存重删方法的流程图。本技术实施例提供一种内存重删方法,应用于如图1所示的numa架构的计算机系统,例如基于numa架构的服务器等。其中,该计算机系统包含多个节点,多个节点中每个节点包含各自的内存和处理器。
58.如图2所示,该内存重删方法包括:
59.s201、确定待去重进程间的相似度。
60.对于一进程,是否需要去重是由用户或应用自行设定的。因此,待去重进程可以是计算机系统中的所有进程,也可以是用户设定的其中的部分进程。
61.实际应用中,相似度高的虚拟机/容器进程通常散布在多个节点上,要将相似度高的虚拟机/容器进程迁移到同一节点,首先,需要解决如何筛选出相似度高的进程的问题。因此,在内存重删之前,要确定待去重进程间的相似度。
62.其中,进程间相似度的确定有多种实现方式,例如,通过计算相似页面的多少(即页面相似度)、进程访存特征、输入输出(i/o)信息、所属用户等特征信息来确定。以页面相似度为例,待去重进程之间相同页面的比例越高,表示进程间的相似度越高。可以理解,对于相似度高的待去重进程,其对应的访存数据等相同的概率也较大。具体确定待去重进程间的相似度的实现方式,在后续实施例中描述。
63.可选地,本步骤在后台周期性执行。
64.需明确的,通常情况下,相似度是两个待去重进程间的相似度。当待去重进程的个
数多于2时,可以以其中一待去重进程为参考,分别计算其他待去重进程与该作为参考的待去重进程间的相似度,或者,随机计算两两待去重进程之间的相似度,也就是说,本技术不限制确定相似度的待去重进程间的结合方式。
65.s202、根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点。
66.其中,目标节点包含于计算机系统的多个节点。在计算机系统所包含的多个节点中选择少量节点作为目标节点,例如,选择其中一个为目标节点,将相似度满足预设相似度条件的待去重进程迁移至目标节点。
67.至于预设相似度条件,可以具体为一判断条件,例如,相似度大于80%,此时,将相似度大于80%的待去重进程迁移至目标节点;或者,可以具体为一分组标识,例如,所在分组的标识为预设标识的进程,此时,将标识为预设标识的分组中的待去重进程迁移至目标节点,等等,此处不再一一赘述。
68.s203、对多个节点的内存中页面进行重删。
69.在s202完成待去重进程迁移之后,相似度较高的待去重进程聚集在目标节点中,这样,再对多个节点的内存中页面进行内存重删,不仅可保证内存重删率,还可以避免内存重删后的跨节点内存访问的增多,从而保证内存访存性能。
70.本技术实施例,首先,确定待重删进程间的相似度,并根据待重删进程间的相似度,将满足预设相似度条件的待重删进程迁移至目标节点,其中目标节点包含于计算机系统的多个节点;之后,对多个节点的内存中页面进行重删。由于相似度较高的待去重进程,其对应的数据重复概率较大,也即重复页面较多,因此,通过将满足预设相似度条件的待去重进程迁移至目标节点,可大幅减少内存重删引起的跨节点内存访问,降低由于内存重删引起的内存访存性能损失,从而在有效提升内存重删率的同时,保证内存访存性能。
71.在上述实施例的基础上,进一步地,s201、确定待去重进程间的相似度,可以包括以下至少一种实现方式:
72.实现方式一:根据待去重进程间的页面相似度,确定待去重进程间的相似度;
73.实现方式二:根据待去重进程间的进程访存特征,确定待去重进程间的相似度;
74.实现方式三:根据待去重进程间的输入输出信息,确定待去重进程间的相似度。
75.对于实现方式一,可以进一步包括:针对每一待去重进程,计算待去重进程的页面的页面哈希值;根据页面哈希值,获得待去重进程间的页面相似度;根据待去重进程间的页面相似度,确定待去重进程间的相似度。其中,页面相似度为根据页面哈希值相同的个数与预设总页数确定的,预设总页数大于待去重进程的页面总数。
76.示例地,为每一个进程都创建一个所有位都为0的位数组,且位数组中的每一位代表一个页面;扫描待去重进程的所有页面,并计算页面哈希值;根据页面哈希值,设置该页面所属待去重进程的位数组相应位为1;逐位比较各个待去重进程的位数组,计算位数组间相同位为1的个数占位数组总位数的百分比,以此百分比代表待去重进程间的相似度。即,待去重进程间的相似度等于相同位都为1的位数与位数组总位数的比值。
77.对于实现方式二,可以进一步包括:根据进程内存访问热点分布、内存、io带宽使用情况中至少一种信息,确定待去重进程间的相似度。
78.对于实现方式三,可以进一步包括:根据进程所属用户组信息、链接动态库信息和
访问相同文件信息中至少一种信息,确定待去重进程间的相似度。
79.可选地,在得到待去重进程的相似度之后,根据各待去重进程的相似度的结果,还可以对待去重进程进行分组,将相似度超过一定阈值的待去重进程分到同一个分组,同分组的各个待去重进程间相似度类似。其中,阈值的个数可以为多个,不同阈值对应不同的分组。在进程迁移时,可以以分组为单位,例如先迁移相似度较高的分组,或者,根据每一分组中进程的数目,同分组中位于相同节点的进程的个数,进程占用的处理器和内存,计算机系统当前处理器和内存等情况,确定各分组钟待去重进程应该迁移的目标节点,并尽可能保证迁移完成后各个节点的负载相对均衡。其中,分组方法可以包括但不限于聚类算法、决策树方法、距离分类法等。
80.另外,考虑到相似度较高的待去重进程,其对应的数据重复概率较大,因此,对于待去重进程间的重复数据,仅需保留一份即可。具体地,在待去重进程迁移过程中,可以通过内存重删来降低迁移开销,提高迁移效率。
81.图3为本技术另一实施例提供的内存重删方法的流程图。如图3所示,本技术实施例的内存重删方法,可以包括:
82.s301、确定待去重进程间的相似度。
83.s302、针对满足预设相似度条件的待去重进程的第一页面,确定目标节点的内存中是否存在与第一页面相同的页面。
84.s303、若存在与第一页面相同的页面,则将第一页面的页表指向目标节点的内存中存在的相同页面。
85.s304、对多个节点的内存中页面进行重删。
86.与图2所示流程相比,s301与s201相同;s202包括s302和s303,即本技术实施例将s202进一步细分为两个步骤:s302和s303;s304与s203相同。对于s301和s304,此处不再赘述。
87.对于s302和s303,本技术实施例在待去重进程迁移过程中,先确定目标节点的内存中是否已存在与待去重进程的页面的相同页面,若存在说明将该页面迁移至目标节点就会导致目标节点的内存中至少存在两份该页面,降低内存利用率,因此,若目标节点的内存中存在相同页面,则只需将第一页面的页表指向目标节点的内存中存在的相同页面即可,通过不迁移重复页面,来减少迁移开销。
88.一些实施例中,在s202、根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点之前,上述内存重删方法还可以包括:
89.根据以下至少一种信息,确定目标节点:
90.计算机系统的可用处理器和可用内存空间、满足预设相似度条件的待去重进程占用的处理器和内存空间、满足预设相似度条件的待去重进程的个数,等等。
91.为保证待去重进程迁移后各节点的负载相对均衡,在确定目标节点时需考量上述信息。示例地,进行待去重进程迁移时需要考虑目标节点上处理器是否被占满,是否有空闲的处理器供使用,否则会产生处理器的竞争。
92.通过将相似度高的虚拟机/容器进程迁移到目标节点后,可以使得大部分重复内存处于少量节点内,节点间通常还存在少量重复数据,如何进一步对这些重复数据进行重删也是一个亟待解决的问题。这里,本技术通过新增冷热感知重删机制,将访问频率低且重
复的页面进行跨节点内存重删,而访问频率高且重复的页面只在节点内重删。通过该机制可以在保证内存访存性能的前提下,进一步提升去重效果,获取更多的可用内存。接下来通过具体实施例进行说明。
93.图4为本技术又一实施例提供的内存重删方法的流程图。如图4所示,本技术实施例的内存重删方法,可以包括:
94.s401、确定待去重进程间的相似度。
95.s402、根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点。
96.s403、监测内存中页面的被访问频率。
97.s404、根据被访问频率,对多个节点的内存中页面进行重删。
98.与图2所示流程相比,s401与s201相同;s402与s202相同;s203包括s403和s404,即本技术实施例将s203进一步细分为两个步骤:s403和s404。对于s401和s402,此处不再赘述。
99.一些实施例中,s403、监测内存中页面的被访问频率,可以具体为:监测候选页面的被访问频率,候选页面为预设时间段内未发生改变的页面。考虑到实时更新的页面没必要删除,该实施例只对上一个扫描周期未发生变化的页面或更新频率较低的页面进行内存重删。
100.一种具体实现中,s404、根据被访问频率,对多个节点的内存中页面进行重删,可以包括:对被访问频率大于第一预设频率的页面进行节点内重删;或者,对被访问频率小于第二预设频率的页面进行跨节点内存重删,第一预设频率大于或等于第二预设频率。
101.其中,对被访问频率大于第一预设频率的页面进行节点内重删,可以包括:对被访问频率大于第一预设频率的页面,确定该页面在所在节点的内存中是否存在相同页面;若存在相同页面,则将该页面的页表指向所述相同页面。
102.对被访问频率小于第二预设频率的页面进行跨节点内存重删,可以包括:对被访问频率小于第二预设频率的页面,确定该页面在其所在节点之外的节点的内存中是否存在相同页面;若存在相同页面,则将该页面的页表指向所述相同页面。
103.具体地,首先,获取计算机系统中节点的个数,并为每一个节点初始化红黑树和布隆过滤器(bloom filter)数组,其中,红黑树存储扫描过的页面的索引,用于查找重复页面;布隆过滤器数组保存了整个节点内存的哈希信息,用于判断一个页面是否在该节点中存在重复页面。然后,扫描待去重进程对应的页面并计算页面哈希值及被访问频率,根据页面哈希值填充布隆过滤器数组。之后,将候选页面根据阈值和被访问频率分为冷页(被访问频率低)和热页(被访问频率高)。如果页面为冷页,则根据其他节点的布隆过滤器数组判断该页面是否在其他节点中存在相同页面,若存在则搜索其他节点的红黑树以寻找相同页面。如果页面是热页,则搜索该页面所在节点的红黑树以寻找相同页面。进一步地,如果找到相同页面则将该页面的页表指向相同页面,找不到相同页面则将该页面添加到该页面所在节点的红黑树中。
104.其中,布隆过滤器可以加速重复页面的判断。
105.本技术实施例,在将满足预设相似度条件的待去重进程迁移至目标节点之后,对内存中所有页面的被访问频率进行监测。对于访问频率高的页面只在节点内进行重删,对
于访问频率低的页面,可以使用布隆过滤器快速判断是否在其他节点中存在重复页面,若存在则进行跨节点内存重删,从而可以解决内存重删会引起大量跨节点内存访问的问题,达到同时获取高内存重删率和高内存访存性能的目的。
106.采用相同测试配置,比较本技术提供的基于相似进程迁移的内存重删方案,以及跨节点内存重删方案、节点内的内存重删方案和基于处理器亲和性的内存重删方案,比较结果如表1所示。其中,测试配置为主机和虚拟机中都运行ubuntu16.04和linux 3.14.69,每个虚拟机有1个vcpu和4gb ram。每一个节点中运行两个虚拟机(virtual machine,vm)且这两个vm中分别运行streamcluster和npb-cg测试用例。
107.表1
108.重删方案虚拟机的内存访存性能内存重删率跨节点内存重删方案0.8250.5%节点内的内存重删方案123%基于处理器亲和性的内存重删方案0.8550.3%基于相似进程迁移的内存重删方案0.9849.5%
109.其中,内存访存性能是归一化后结果。基于处理器亲和性的内存重删方案是根据页面特征对内存中的页面计算与所在处理器间的亲和性,并根据亲和性结果对重复页面进行排序,删除亲和性低的页面,保留亲和性最高的页面。
110.表1表明,现有的跨节点内存重删方案可以达到最高的内存重删率,但是会造成虚拟机18%的内存访存性能下降;节点内的内存重删方案不会造成内存访存性能下降,但是只能达到23%的内存重删率;基于处理器亲和性的内存重删方案同样也会造成很严重的内存访存性能损失,这是因为很多重复页面对很多处理器都有很高的亲和性,而将页面放置在亲和性最高的节点中同样会造成大量的跨节点内存访问;基于相似进程迁移的内存重删方案,可以达到接近跨节点内存重删方案的内存重删率,并且只造成很小的内存访存性能损失,2%。
111.经过上述比较易知,本技术实施例提供的内存重删方案是最优的。
112.需要说明的是,上述任一实施例可以单独实施,也可以是上述各实施例中至少两个任意结合来实施,对此不做限定。
113.可以理解的是,上述各个实施例中,由服务器实现的操作和步骤也可以由可用于服务器的部件(例如芯片或者电路)实现,本技术实施例对此不作限定。
114.图5为本技术一实施例提供的内存重删装置的结构示意图。该内存重删装置可以通过软件和/或硬件的方式实现。示例地,该内存重删装置可以具体为服务器或服务器内置的电路或芯片。如图5所示,本实施例的该内存重删装置50包括:进程相似度探测模块51和进程分组与迁移模块52和冷热感知重删模块53。其中:
115.进程相似度探测模块51,用于确定待去重进程间的相似度。
116.进程分组与迁移模块52,用于根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点。其中,目标节点包含于多个节点。
117.冷热感知重删模块53,用于对多个节点的内存中页面进行重删。
118.本技术实施例提供的内存重删装置,可用于执行上述的方法实施例,其实现方式和技术效果类似,本实施例此处不再赘述。
119.可选地,冷热感知重删模块53包括:
120.监测单元(未示出),用于监测内存中页面的被访问频率;
121.重删单元(未示出),用于根据被访问频率,对多个节点的内存中页面进行重删。
122.一些实施例中,重删单元可具体用于:对被访问频率大于第一预设频率的页面进行节点内重删;对被访问频率小于第二预设频率的页面进行跨节点重删,第一预设频率大于或等于第二预设频率。
123.进一步地,重删单元对被访问频率大于第一预设频率的页面进行节点内重删,可以具体为:对被访问频率大于第一预设频率的页面,确定其所在节点的内存中是否存在相同页面;若存在相同页面,则将该页面的页表指向所述相同页面。
124.重删单元对被访问频率小于第二预设频率的页面进行跨节点重删,可以具体为:对被访问频率小于第二预设频率的页面,确定其它节点的内存中是否存在相同页面;若存在相同页面,则将该页面的页表指向所述相同页面。
125.在上述基础上,监测单元可具体用于:监测候选页面的被访问频率,候选页面为预设时间段内未发生改变的页面。
126.可选地,进程相似度探测模块51可以用于以下至少一种:
127.根据待去重进程间的页面相似度,确定所述待去重进程间的相似度;
128.根据待去重进程间的进程访存特征,确定待去重进程间的相似度;
129.根据待去重进程间的输入输出信息,确定待去重进程间的相似度。
130.一种实现方式中,进程相似度探测模块51在根据所述待去重进程间的页面相似度,确定待去重进程间的相似度时,具体为:针对每一待去重进程,计算待去重进程的页面哈希值;根据页面哈希值,获得待去重进程间的页面相似度为待去重进程间的相似度,页面相似度为根据页面哈希值相同的个数与预设总页数确定的,预设总页数大于待去重进程的页面总数。
131.另一种实现方式中,进程相似度探测模块51在根据进程访存特征,确定待去重进程间的相似度时,具体为:根据进程内存访问热点分布和/或内存/io带宽使用情况,确定待去重进程间的相似度。
132.又一种实现方式中,进程相似度探测模块51在根据输入输出信息,确定待去重进程间的相似度时,具体为:根据进程所属用户组信息、链接动态库信息和访问相同文件信息中至少一种信息,确定待去重进程间的相似度。
133.其中,进程分组与迁移模块52可具体用于:针对满足预设相似度条件的待去重进程的第一页面,确定目标节点的内存中是否存在与第一页面相同的页面;若存在与第一页面相同的页面,则将第一页面的页表指向目标节点的内存中存在的相同页面。
134.一些实施例中,进程相似度探测模块51还可以用于:在进程分组与迁移模块52根据待去重进程间的相似度,将满足预设相似度条件的待去重进程迁移至目标节点之前,根据以下至少一种信息,确定目标节点:
135.计算机系统的可用处理器和可用内存空间、满足预设相似度条件的待去重进程占用的处理器和内存空间、满足预设相似度条件的待去重进程的个数。
136.示例地,在实际应用中,将该内存重删装置应用于服务器中,服务器中其他软件/硬件部分与内存重删装置的关系如图6所示。
137.参考图6,示出本技术的产品实现形态,即服务器4001,是包含在主机操作系统(operating system,os)内核中,并部署在服务器硬件上的程序代码。以图6所示的结构为例,本技术的程序代码存在于主机os内核4011中的进程调度模块4012、内存管理模块4015内部,以及现有模块(包括比较&合并模块4017)外部。运行时,本技术的程序代码主要作用于主机内存4021上,能够在numa架构4022中保证进程内存访存性能的前提下大幅提升内存重删效果。
138.图6给出了本技术在服务器及平台软件中的实现形态,其中虚线框所示部分为本技术在现有平台软件基础上新增加的模块。在进程调度模块4012内部,本技术设计了进程相似度探测模块4013和进程分组与迁移模块4014;在内存管理模块4015内部,本技术设计了冷热感知重删模块4016。
139.图7为本技术一实施例提供的内存重删装置的产品应用示意图。如图7所示,在开源的linux内核5011中,基于linux进程调度模块5012和ksm 5015实现的基于相似进程迁移的内存重删装置。其中,ksm 5015作为linux中的内存重删模块。在服务器5001的硬件中,本实施例涉及到的组件包括主机内存5021和numa架构5022。图7中虚线框所示部分为本实施例在现有linux内核5011基础上新增加的模块。在linux进程调度模块5012内部,本实施例设计了进程相似度探测模块5013和进程分组与迁移模块5014;在ksm 5015内部,比较&合并模块5017之外,本实例设计了冷热感知重删模块5016。
140.图8为本技术另一实施例提供的内存重删装置的结构示意图。例如,内存重删装置80可以被提供为一服务器。如图8所示,本实施例所述的内存重删装置80可用于实现上述方法实施例中描述的方法,具体参见上述方法实施例中的说明。
141.内存重删装置80可以包括一个或多个处理器81,处理器81也可以称为处理单元,可以实现一定的控制或者处理功能。处理器81可以是通用处理器或者专用处理器等。例如可以是基带处理器、或中央处理器。基带处理器可以用于对通信协议以及通信数据进行处理,中央处理器可以用于对内存重删装置进行控制,执行软件程序,处理软件程序的数据。
142.在一种可能的设计中,处理器81也可以存有指令或者数据(例如中间数据)。其中,指令83可以被处理器81运行,使得内存重删装置80执行上述方法实施例中描述的方法。
143.在一种可能的实现方式中,内存重删装置80中可以包括一个或多个存储器82,其上可以存有指令,所述指令可在处理器81上被运行,使得内存重删装置80执行上述方法实施例中描述的方法。
144.内存重删装置80还可以包括一个电源组件83被配置为执行内存重删装置80的电源管理,有线或无线的网络接口84被配置为将内存重删装置80连接到网络,和输入输出(i/o)接口85。内存重删装置80可以操作基于存储在存储器82的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
145.在一种可能的实现方式中,存储器82中也可以是存储有数据。处理器81和存储器82可以单独设置,也可以集成在一起。
146.其中,处理器81的具体实现过程可以参见上述各实施例的相关描述,此处不再赘述。
147.本技术中描述的处理器81可实现在集成电路(integrated circuit,ic)、模拟ic、射频集成电路(radio frequency integrated circuit,rfic)、混合信号ic、专用集成电路
(application specific integrated circuit,asic)、印刷电路板(printed circuit board,pcb)、电子设备等上。该处理器和收发器也可以用各种1c工艺技术来制造,例如互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)、n型金属氧化物半导体(nmetal-oxide-semiconductor,nmos)、p型金属氧化物半导体(positive channel metal oxide semiconductor,pmos)、双极结型晶体管(bipolar junction transistor,bjt)、双极cmos(bicmos)、硅锗(sige)、砷化镓(gaas)等。
148.虽然在以上的实施例描述中,内存重删装置80以服务器为例来描述,但本技术中描述的内存重删装置的范围并不限于上述服务器,而且内存重删装置80的结构可以不受图8的限制。内存重删装置80可以是独立的设备或者可以是较大设备的一部分。
149.本技术实施例还提供的一种计算机系统,该计算机系统可以具体为:服务器或其他用于执行上述任一实施方式所述的方法的通信设备。
150.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由处理器执行,实现如上述任一方法实施例的技术方案。
151.本技术实施例还提供一种芯片,所述芯片上存储有计算机程序,在所述计算机程序被处理器执行时,执行如上述任一方法实施例的技术方案。
152.本技术实施例还提供一种程序,在所述程序被处理器执行时,执行如上述任一方法实施例的技术方案。
153.需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本技术的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
154.所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
155.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或
数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献