依需合并具有相同内容的页面的方法和系统与流程

文档序号:12595677阅读:143来源:国知局
本发明有关于内存(memory)管理,且尤其有关于具有相同内容的内存单元的依需(on-demand)共享。
背景技术
::在现代计算系统中,多个进程可能使用具有同样(identical)内容的内存页面(memorypage)。计算系统可能是非虚拟化的(non-virtualized),如进程可运行在相同的操作系统(OperatingSystem,OS)上。计算系统也可能是虚拟化的,如进程可运行在各虚拟机中的各客户操作系统(guestoperatingsystem)上,其中各虚拟机由主操作系统(hostoperatingsystem)管理。一般来说,操作系统(或主操作系统)利用内存管理技术来降低内存内容中的重复(duplication),使得内存的利用更高效。在计算系统中,一个页面(通常4K字节大小)是基本内存单元。一个页面占据连续的内存地址块。物理地址空间中的页面被称为物理页面(physicalpage),且进程的虚拟地址空间中的页面被称为虚拟页面。页面表(pagetable)用来将虚拟页面的虚拟地址映射到物理页面的物理地址。当两个物理页面具有相同的内容时,两个页面可合并(merge)为一个页面,使得另一页面原本占据的物理内存空间可被释放(freed)和再使用(reused)。映射到两个物理页面的两个虚拟页面可保持其虚拟地址不变。两个页面合并之后,页面表可随之改变,以将两个虚拟页面映射到同一物理页面。计算系统可能包含大量具有相同内容的页面。然而,识别(identify)和合并这些页面的操作可能会造成大量系统开销(overhead)。因此,需要一种机制,来高效进行合并操作。技术实现要素:有鉴于此,本发明提供一种依需合并具有相同内容的页面的方法,包括:检测到指示在内存中合并候选页面的事件;基于该候选页面的当前数目、合并页面的当前数目以及代表合并页面与候选页面比值的合并比,预测合并增益;以及当确定该合并增益大于阈值时,进行扫描和合并操作,以将具有相同内容且未被合并的候选页面集合合并为具有该相同内容的单个页面。本发明另提供一种系统,用来依需合并具有相同内容的页面,该系统包括:内存;以及一个或多个处理装置,耦接至该内存,该一个或多个处理装置用来检测指示在内存中合并候选页面的事件;基于该候选页面的当前数目、合并页面的当前数目以及代表合并页面与候选页面比值的合并比,预测合并增益;以及当确定该合并增益大于阈值时,进行扫描和合并操作,以将具有相同内容且未被合并的候选页面集合合并为具有该相同内容的单个页面。通过利用本发明,可改善系统性能。如下详述本发明的最佳实施例。阅读完以下描述和附图后,本领域技术人员可轻易理解本发明的精神。附图说明图1是根据一实施例的系统的示意图。图2是根据本发明一实施例的合并和分离操作的示范性示意图。图3是根据本发明一实施例的扫描和合并操作的示范例的时间轴示意图。图4是根据本发明一实施例的系统高效共享内存的方法的流程图。图5是根据本发明一实施例的依需合并具有相同内容的页面的方法的流程图。具体实施方式在本专利说明书及权利要求当中使用了某些词汇来指称特定的组件。所属领域中具有通常知识者应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本专利说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及请求项当中所提及的“包含”或“包括”为开放式的用语,故应解释成“包含但不限定于”;“组件”、“系统”和“设备”意指与计算机有关的实体,可为硬件、软件或硬件以及软件的组合。另外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电气连接于该第二装置,或透过其他装置或连接手段间接地电气连接至该第二装置。本发明的实施例提供依需合并具有相同内容的页面的系统和方法。运行时(atruntime)的系统持续监测系统的状态,以检测指示进程间需要共享内存的事件。当检测到上述事件时,系统基于已知合并比(mergeratio)预测合并增益(mergegain)。当所预测合并增益超过阈值时,可对候选页面(candidatepage)进行扫描和合并操作。扫描和合并操作首先扫描候选页面,以识别具有相同内容且未被合并的页面;并在随后合并这些识别出的页面。若所预测合并增益未超过阈值,系统将推迟(holdoff)扫描和合并操作,直到所预测合并增益超过阈值时的下一事件发生。在一实施例中,内存被划分为具有固定尺寸(如4K字节)的物理页面。一些物理页面可能具有相同的内容,并可被合并以节省内存。举例来说,假定物理页面PG1和PG2具有相同的内容。PG1和PG2分别映射到虚拟页面VPG1和VPG2。也就是说,VPG1具有指向PG1的指针(pointer)P1,VPG2具有指向PG2的指针P2。虚拟页面是存在于进程或程序的虚拟地址空间中的页面。当操作系统将虚拟页面映射到物理页面时,虚拟页面被分配内存,如可通过给该虚拟页面指定(assign)指向所分配物理页面的指针。当PG2合并到PG1时,其指针P2被修改为指向PG1。如此一来,指针P1和P2均指向PG1。合并后,PG1被称为共享页面(sharedpage),其合并计数(mergecount)为2,且PG2的4K字节空间可从其当前进程中释放,并可被另一进程再使用。因此,扫描和合并进程允许同一物体页面被多个进程共享,因而可改善内存利用率。除非明确指示,以下段落中术语“页面”指“物理页面”。在一实施例中,作为合并候选的页面被称为候选页面。在一实施例中,候选页面为匿名页面(anonymouspage),其已被分配给进程或程序。LinuxTM系统中的匿名页面并非文件系统中任何文件的一部分,并可位于程序的数据或堆栈空间。在另一些实施例中,扫描和合并操作也可用于其他页面类型。尽管LinuxTM的一些技术可在此用作示范例,应可理解,本发明中的扫描和合并操作可适用于任何系统。图1是根据一实施例的系统100的示意图。系统100包括一个或多个处理装置110,其中处理装置110耦接至内存130和显示器(display)150。处理装置的示范例包括但不限于中央处理单元(CentralProcessingUnit,CPU)、图形处理单元(GraphicsProcessingUnit,GPU)、数字信号处理器(DigitalSignalProcessor,DSP)、通用处理器(general-purposeprocessor)和特殊用途处理器(special-purposeprocessor)。应可理解,其他系统元件省略,以简化说明。在一实施例中,系统100以及/或者处理装置110可作为片上系统(system-on-a-chip,SoC)实现。在一实施例中,系统100可为移动计算以及/或者通信装置(如智能手机、平板电脑、笔记本电脑等)的一部分。在另一实施例中,系统100可为服务器的一部分。在一实施例中,内存130可为动态随机存取内存(DynamicRandomAccessMemory,DRAM),或者可为其他易失性或非易失性随机存取内存。显示器150可具有由周期性VSYNC信号标记的固定刷新频率(如60Hz)。不过本领域技术人员应可理解,显示器150并非系统100中的必要装置。在一实施例中,系统100执行OS120,其中OS120管理系统资源(如内存130)的分配和使用。OS120包括页面管理器125,其中页面管理器125负责保持追踪系统中的候选页面,并确定何时触发扫描和合并操作。在另一实施例中,页面管理器125可通过硬件、固件、软件或上述的组合实现。图2是根据本发明一实施例的合并和分离(demerge)操作的示范性示意图。为了简化说明,本示范例显示了十个候选页面(如P1到P10),这十个候选页面占据了连续内存空间210(如图1中的内存130)。然而,应可理解,内存空间210可包括任意数目的候选页面,且候选页面可位于内存130中的任何地方,并可占据非连续的(如分片的)内存空间。此外,一些候选页面可彼此相邻,而其他一些候选页面可能并不相邻(由未按比例绘示的点划空间表示)。在本示范例中,具有三个页面(P1、P2和P3)的第一组211具有相同的内容,并可合并为第一页面P1。具有四个页面(P6、P7、P8和P9)的第二组222具有相同的内容,并可合并为第二页面P6。相同组中的页面可能位于内存空间210的任何地方。在另一实施例中,一组中的页面可能与其他组中的页面穿插(interspersed)。P1和P6被称为共享页面。被合并为一个页面的每组页面被称为合并页面(mergedpage)。在图2所示的示范例中,两个组211和222进行合并操作后,候选页面的数目仍为10,而合并页面的数目为7。在系统运行时,合并页面可被修改。为了允许合并页面被修改,可进行写时拷贝(copy-on-write,COW)操作,以将共享页面(如P1)的内容写入另一页面(如P3),P3的内容可被修改。因此,COW操作将P3从共享页面P1分离。分离操作之后,合并页面的数目降为6。当新的页面分配给程序或进程,或现存页面被解除分配(deallocate)时,候选页面的数目也可在系统运行时改变。图3是根据本发明一实施例的扫描和合并操作的示范例的时间轴(timeline)示意图。应可理解,图3中的时间轴并非按比例绘示。图3中所示的操作可由内存管理单元或进程执行,如可由图1中的页面管理器125执行。在本示范例中,在时刻T1,页面管理器125检测到事件。在一实施例中,事件可为下述事件的一个或多个:可用内存的数目降到或被预测降到低于第一阈值时,已改变内存内容的数目升到或被预测升到高于第二阈值时等。换句话说,事件在可用内存的数目降到或被预测降到低于第一阈值时,以及/或者事件可在已改变内存内容的数目升到或被预测升到高于第二阈值时被检测到。一经检测到该事件,页面管理器125基于合并比R、候选页面的当前数目C以及合并页面的当前数目M,在时间310预测合并增益G。在一实施例中,合并比为候选页面C预估有多少比例可被合并为一个或多个页面。换句话说,合并比代表合并页面与候选页面的比值(merged-to-candidatepageratio),即进行扫描和合并时合并页面的数目与候选页面的数目的比值。在系统运行时,合并页面的数目以及/或者候选页面的数目可以改变。如此一来,在某个运行时间点的M与C的比值可从R偏离。给定候选页面的当前数目C,若另一扫描和合并操作在这些候选页面上进行,则可预测乘积N=CxR将接近合并页面的数目。合并增益G是系统可从此次扫描和合并操作(即上述另一扫描和合并操作)中得到的合并页面增加数目。也就是说,G=N–M。在一些实施例中,合并增益可表示为合并页面增加数目与N的比值或百分比。在一实施例中,从运行时在多个硬件平台和多个内存应用场景上收集的分析数据(profilingdata),可以看到合并比一般落入窄数值范围(numericalrange),如12%-17%。因此,在一实施例中,数值范围由分析数据确定,并且数值范围的均值(mean)或均数(average)被预定为合并比。换句话说,可基于在内存应用场景集合以及/或者硬件平台集合上收集的分析数据确定合并比。随后,合并增益可由合并比和系统中的页面分配和共享信息确定。请参照回图3。假定在本实施例中,所预测合并增益G1比阈值TH大(G1>TH)。因此,页面管理器125在时间320进行扫描和合并操作。扫描所有的候选页面且合并具有相同内容的那些页面之后,页面管理器125不再进行扫描和合并操作,直到检测到下一事件。在一实施例中,页面管理器125运行一持续追踪合并页面数目和候选页面数目的进程。这两个数目被追踪是因为他们的改变会引起合并增益随之改变。在时刻T2,页面管理器125检测到另一事件。内存管理器预测合并增益G2,其中所预测合并增益G2不大于TH(G2≤TH)。因此,页面管理器125不在此时进行扫描和合并操作。图4是根据本发明一实施例的系统高效共享内存的方法400的流程图。在一实施例中,系统可为图1中的系统100。系统从初始状态410开始。当在步骤420检测到事件时,系统在步骤430确定其是否有能力进行扫描和合并操作(系统需求是否满足),如系统是否有足够内存来支持扫描和合并操作时可能要建立的内部数据架构。若没有足够的可用内存用于扫描和合并操作,系统返回初始状态410,直到检测到下一事件。若有足够的可用内存用于扫描和合并操作,系统在步骤440预测合并增益,并在步骤450确定所预测合并增益是否大于阈值TH。阈值可静态分配(staticallyassigned)或动态计算。若合并增益大于阈值,系统在步骤460进行扫描和合并操作,并在操作完成后返回初始状态410。若合并增益不大于阈值,系统返回初始状态而不进行扫描和合并操作。系统可在多个场景下调整合并比以及/或者阈值TH。在一实施例中,合并比以及/或者阈值可在运行时进行调整。举例来说,若合并增益小于TH的连续次数超过重试限制,或检测到的事件指示扫描和合并操作需要更频繁或更少地进行等等。在一实施例中,若合并增益不大于阈值,则合并比以及/或者阈值可被调整。在运行期间,系统运行一追踪候选页面数目和合并页面数目的进程。合并页面数目在步骤470中更新,以在页面被合并时记录增加值,并在合并页面分离时记录降低值。其中合并页面分离如步骤480中进行COW操作,以使能(enable)合并页面被拷贝到另一页面。图5是根据本发明一实施例的依需合并具有相同内容的页面的方法500的流程图。方法500可由系统(如图1中的系统100,或者更具体地,如页面管理器125)进行。在另一实施例中,方法500可通过硬件(如电路、专用逻辑、可编程逻辑、微码等)、软件(如运行在处理装置上的指令)或上述组合实现。在一实施例中,当检测到指示在内存中合并候选页面的事件时(步骤510),方法500开始。基于候选页面的当前数目,合并页面的当前数目以及代表合并页面与候选页面比值的合并比,合并增益得以预测(步骤520)。当确定合并增益大于阈值时,进行扫描和合并操作,以将具有相同内容且未被合并的候选页面集合合并为具有该相同内容的单个页面(步骤530)。根据一些实施例,页面合并可在检测到事件且合并增益大于阈值时,依需进行。这种从需求出发的方法可有效改善系统性能,因为无法为系统产生太多增益的合并操作可被跳过以节省系统资源。图4和图5流程图中的操作参照图1所示的示范性实施例进行描述。然而应可理解,图4和图5流程图中操作可由本发明其他实施例进行,且图1所示实施例可进行与图4和图5流程不同的操作。图4和图5中显示了本发明某些实施例执行操作的特定顺序,应可理解图示顺序只是本发明的一些实施例,其他实施例可以按照不同顺序执行操作,合并某些操作,重复某些操作等。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1