用于支持存储器压缩的操作系统的方法

文档序号:6558430阅读:173来源:国知局
专利名称:用于支持存储器压缩的操作系统的方法
技术领域
本发明涉及对主存储器内容进行硬件压缩的计算系统,更具体的是涉及对硬件主存储器压缩造成的动态改变存储器尺寸进行的管理。
数据压缩技术被广泛用于计算机系统以节省存储空间或带宽。基于硬件和软件的压缩方案被用来在磁介质上存储数据或通过网络链路发送数据。大量应用的存储器使用轨迹表明主存储器内容可以被压缩到2比1,并且在多数情况下可以压缩得更多。只有少量已经被压缩或加密的应用数据不能进一步被压缩。2比1压缩以相同费用有效倍增了存储器数量,也可以在费用敏感的应用中以1/2的费用提供相同数量的存储器。
主存储器压缩是一种通过对数据访问进行透明,实时,运行时压缩以减少物理存储器需求或扩充物理存储器使用的技术。由于压缩数据块或页面导致的变长记录问题,随机访问压缩数据页面直到最近仍然被认为是不现实的。然而美国专利5729228中描述的并行压缩解压缩算法的进展和硅密度与速度的改进现在使主存储器压缩成为可能。


图1中示出了一个支持基于本发明的主存储器压缩的计算机系统。该系统由一个或多个通过总线101与存储器控制器112通信的CPU构成,其中每个CPU均具有相关的高速缓冲存储器100。压缩存储器体系结构将常规存储器层次提高了一个等级。"实"地址和"物理"地址被区分开来。实地址104是处理器芯片的外部总线看到的常规存储器地址。物理地址105被用来寻址压缩物理存储器。存储器控制器通常包含/控制一个L3高速缓冲存储器106,CPU将L3高速缓冲存储器看成类似的存储器。存储器控制器还控制I/O设备103寻址。下列术语在本文中可以互换使用由于压缩增加了有效存储器尺寸,用"扩充存储器"表示"实存储器",而"压缩存储器"表示这种扩充存储器背后的"物理存储器"。
在这种系统中,操作系统管理实存储器空间并且忽略了物理存储器本身。存储器控制器芯片内部的压缩引擎107在存储一条高速缓冲存储器线时压缩这个高速缓冲存储器线并且在加载一条高速缓冲存储器线对其进行解压缩。通过进行实地址-物理地址转换访问被压缩存储在物理存储器102中的各种变长数据记录,上述数据记录处于压缩状态108。我们希望系统,尤其是存储器控制器提供一组允许操作系统监视110物理存储器利用率的利用率寄存器109。可选地,存储器控制器可以具有一组阈值寄存器109,其中可以设置阈值寄存器并且在物理存储器利用率超出阈值时存储器控制器会产生一个中断。
在任意规定时间t在操作系统控制下的数据可压缩度CR(t)确定在不耗尽固定数量物理存储器PM的前提下系统在该时刻可以继续提供多少实存储器RM(t)。标准操作系统通过一组页面帧描述符描述其实存储器。这通常是一个安装号码。在不具有主存储器压缩支持的普通系统中,实存储器等价于物理存储器。然而在具有主存储器压缩支持的系统中,通过下列等式指导存储器管理RM(t)=CR(t)*PM(Eq-1)有效实存储器尺寸,即OS为应用和OS专用任务(例如文件系统高速缓冲)提供的页面数量取决于当前压缩比CR(t),其中可以根据各种应用状态经常改变当前压缩比。
标准操作系统没有根据经常改变的运行时刻状态,即这里的压缩比CR(t)动态调整其实存储器尺寸的装置。由于在存储器内必须始终能够访问页面结构描述符,多数OS在启动时为页面结构描述符分配一个固定编号并且使用这种编号管理存储器。因此,如果用一个固定比率配置系统,则必须保证压缩比不会低于这个固定比率,否则物理存储器会耗尽并且系统会出现故障。
为了充分利用主存储器压缩系统,需要一种在操作系统内部进行有效虚拟存储器管理的方法,该方法根据一个有关规定时间物理存储器利用率的函数动态调整操作系统为其操作准备的扩充实存储器尺寸,使得物理存储器从不会耗尽。换言之,物理存储器利用率应当从不超过100%。
在现有技术中,有若干专利和出版物提出了使用软件压缩技术增加空闲物理存储器可用性而不是进行换页操作的方法。它们与本发明有一定的关系,虽然其系统既不涉及主存储器压缩并且也不会遇到使用主存储器压缩的系统所特有的动态实存储器调整和物理存储器耗尽问题。
美国专利5,559,978号描述了一个通过有选择地压缩RAM存储器内容提高虚拟存储器系统效率的方法。具体地,这个专利识别出非临界存储器区域(例如最少访问存储器页面),组合这些页面并且通过众所周知的软件压缩技术对其进行压缩。组合部分占用次要的物理存储器资源,因而扩大了可用存储器资源容量。从一个应用虚拟存储器转换表中解除对压缩页面的映射,在访问虚拟地址时虚拟存储器系统必须把压缩页面解压缩成新页面并且把解压缩页面重新映射成访问虚拟地址。通过压缩非临界页面并且增加物理存储器可用性来避免换页操作。
美国专利5,544,349号描述了一个通过把存储器分成两个区域,即活跃列表部分和空闲列表部分来减少页面调度活动的方法。当从一个进程得到收回一个页面时,清除该页面在进程的页表中的映射,该页面被压缩到一个不同容器中并且被放到空闲列表中。在进程对数据的后续访问过程中,页面故障处理器搜寻空闲列表,在其发现压缩页面时将该页面解压缩成新页面并且重新映射该页面。本质上,这个专利是美国专利5,559,978号的一个更受限制的特例,其中一个非临界区域被定义成空闲列表上的一个页面。
Wilson等人在"虚拟存储器系统中的压缩高速缓冲实例"中描述了一个不同的软件方案,其中使用压缩减少页面调度活动,但不需要修改操作系统。其基础是一个压缩虚拟分页文件系统。这需要为压缩分页文件系统专门预留一部分物理存储器。操作系统的虚拟管理系统(VMM)决定哪些页面被换出并且通过页面调度模块交换这些页面。不是向磁盘发送页面,而是在分页文件系统内部压缩页面,并且只在页面调度模块耗尽其专用存储器时才会开始换出压缩页面,从而有可能减少换出/换入操作的数量。
注意,现有技术不提供动态改变压缩比的解决方案,其中操作系统可以在某个状态上结束,在该状态中压缩比的减少可以导致物理存储器耗尽和灾难性的系统崩溃。
本发明的一个目标是在当前的操作系统中提供一个通过硬件主存储器压缩改进存储器管理的方法。
本发明的另一个目标是监视物理存储器利用率并且在物理存储器接近耗尽时将存储器强制换出从而释放出实存储器页面。
本发明涉及一个在当前的操作系统中通过硬件主存储器压缩进行存储器管理的方法。对主存储器内容的压缩为操作系统提供了比物理可用存储器容量更大的扩充实存储器。由于压缩比根据存储器的具体内容而发生改变,所以为操作系统及其应用有效提供了扩充实存储器容量。本发明涉及一个根据压缩比随时间变化的函数对扩充实存储器这种动态特性进行有效管理,使得物理存储器从不会被耗尽的方法。
本发明的方法监视物理存储器利用率并且在物理存储器接近耗尽时将存储器强制换出从而释放出实存储器页面。接着这些页面被清零,因而这些页面的压缩比很高,因此减少了物理存储器利用率。因物理存储器利用率较高而被强制换出的页面是不可分配的。在允许改变操作系统的系统中,本发明动态控制空闲页面组的最小尺寸并且在释放时对页面进行清零。当物理存储器利用率低于一个临界阈值时,上述机制减少空闲页面组的最小尺寸以便允许进行进一步的分配。在不可以改变操作系统的系统中,通过一个模块(例如设备驱动程序)分配页面并且进行清零。当物理存储器利用率低于一个临界阈值时,该方法释放某些明确预留的页面。在两种情况下(隐含或明确)预留的页面数量是一个有关在使用的活跃页面数量和当前物理存储器利用率的函数。
通过下面结合附图所进行的详细描述可以理解本发明的其它好处和优点,上述附图确定并示出了本发明的最优实施例。
图1是一个计算机系统的模块图,该系统支持基于本发明的主存储器压缩。
图2示出一个有关部件及其与现有技术虚拟存储器管理系统的交互的模块图。
图3示出了在硬件主存储器压缩形式下管理空闲页面的控制机制的流程图。
图4一个通过实存储器管理控制物理存储器利用率的目标功能的图形描述。
图5示出一个有关部件及其在增强虚拟存储器管理系统中的交互的模块图,其中可以改变操作系统。
图6示出一个有关部件及其在增强虚拟存储器管理系统中的交互的模块图,其中不可以改变操作系统。
图7示出在具有存储器压缩支持的情况下保留交换空间的图例。
引入存储器压缩要求保证物理存储器利用率从不超出100%,如果超出则数据不能回写到物理存储器,这通常会导致系统崩溃。通过下述数据压缩比CR(t)规定在规定时间tOS可以提供的有效实存储器RM(t)的数量RM(t)=CR(t)*PM。当压缩比减少时,操作系统可能会因向应用分配页面而过度使用物理存储器,因而在存储器控制器向OS指示其存储器利用率达到临界水平时操作系统必须准备采取行动以减少物理存储器利用率。不幸的是,无法直接对数据可压缩性或物理存储器利用率作出任何假定或控制。
等式Eq-1表明有两个减少物理存储器利用率的基本思路,(1)增加可压缩性,(2)减少有效实存储器尺寸。本发明依赖上述两种技术我们通过增加零页面的数量来提高有效压缩率。我们通过限制可以分配给应用的空闲页面的数量来减少所使用的存储器,从而避免使用空闲页面所造成的附加存储器压力。我们通过明确或隐含地预留页面来实现上述处理。如果不能预留足够的页面,则本发明会强制换出额外的页面,这些页面后来会被清零。零页面的压缩比非常高,因而这两个动作增加了压缩比并且减少了物理存储器利用率。
在更详细地描述最优实施例之前,将所使用的变量列举如下
根据定义max_pg=nr_fp+nr_up。这个最优实施例基于下列对图2中示出的虚拟存储器和空闲页面管理的描述。本领域的技术人员可以理解,其它类似的存储器管理装置和本发明内描述的方法同样适用。通过精心设计的算法,例如伙伴算法或列表在空闲池201内部维护空闲页面。针对空闲池的接口200被抽象定义成分配若干连续物理页面的分配_页面()202和释放一组物理页面的释放_页面()203。nr_fp204指示空闲池中未分配空闲页面的数量。这些接口被页面故障处理程序用来消除页面故障。在这个页面帧管理功能的顶端,操作系统通常提供一个内核malloc()接口为其自身的内部数据结构分配较小的块或对象SLAB分配符。
为了保证执行进度,OS总是保持最小数量的空闲页面(min_fp)205并且在其数量低于临界阈值206时必须开始增加空闲页面的数量(nr_fp)204。通常通过函数尝试释放页面()207实现这种操作,该函数通过刷新缓冲区高速缓冲存储器,从页面高速缓冲存储器(只读存储器映射文件)中丢弃页面并且换出一段时间内未被访问的用户页面以便通过释放页面()向空闲池补充这些页面来尝试释放页面。例如,只读映射文件缓冲区可以被丢弃并且稍后根据需要重新加载。以后再通过内核交换守护程序kswap208调用相同的任务。
本发明依靠图3中示出的传统控制环路(监视,计算,调整)控制物理存储器利用率使之从不超过100%。为此,一个目标物理存储器利用率被定义成低于100%并且消除诸如待完成的I/O和高速缓冲存储器回写的操作导致的副效应。控制被实现成一个OS模块(设备驱动程序/内核扩展/内核进程)并且此后被标记成“被压缩的”。当超出一个预置激活阈值时必须激活309“被压缩的”的控制环路。通过中断机制110可以实现这种操作。一旦进入这种状态,“被压缩的”必须通过一个定时器机制或其它临界点(例如调度器)进行循环,直到控制达到其目标,即把物理存储器利用率降到低于基本个临界水平。如果没有中断机制,则“被压缩的”必须根据某个定时器经常执行循环,尽管该定时器可以取决于观察的物理存储器利用率。“被压缩的”250执行下列任务,下面会更详细地描述这些任务。
在进入控制环路时,“被压缩的”从存储器控制器112的存储器使用寄存器获得281当前存储器利用率mu。如果mu高于一个激活水平282,则“被压缩的”会使用一个选用Eq-1(RM(t)=CR(t)*PM)的目标函数主动控制实存储器的尺寸,下面会更详细地描述该函数。这个目标函数计算283出实页面的最优数量opt_fp,其中opt_fp可以被看成关于当前物理存储器利用率mu和当前使用的实页面帧的数量nr_up的函数。根据最优数量opt_fp可以确定必须保留284,即从空闲页面池和操作系统可能分配给应用的页面中取出多少页面,从而减少了有效实存储器尺寸nr_max_pg284。
接着“被压缩的”隐含或明确地预留所确定的页面并且加以清零285,后面会更详细地描述上述操作,其中可能需要换出页面。如果mu低于激活水平286并且此前预留了页面但尚未释放287,则“被压缩的”确定实页面的最优数量288并且据此确定可以释放的的页面数量289。接着释放页面290。在两种情况下“被压缩的”均在若干延迟291之后返回到281。延迟取决于物理存储器利用率。必须考虑到系统可能经历的最坏利用率变化情况。在最常见的情况下,我们简单地在一个固定时间执行循环。然而在可选实施例中,一旦超过了重要的阈值可以通过存储器控制器发出的中断强制进行这种操作。如果最坏情况下的变化速度太快以致无法确定OS中定时器的时间,则OS可以临时阻止或减缓造成快速压缩恶化的应用的运行,直到达到不太紧急的存储器利用率水平。
更详细地,如下所述确定要预留多少页面,并且在图4中图解了这个确定过程。定义一个目标函数306规定指定物理利用率可以消耗多少附加物理存储器。目标函数306在目标利用率307处与当前值=目标值曲线304相交。目标最大物理存储器利用率tmu307通常被设置成低于100%以消除压缩比改变造成的非线性特性和通过定时器或中断调用压缩控制机制造成的延迟。
在当前利用率mu312低于目标利用率tmu307时,其差值tmu-mu规定了可用于分配的物理数量308。在当前利用率mu312大于目标利用率tmu307时,差值tmu-mu为负,因而结果305表示必须从进程收回并且加到空闲页面池中的物理数量。在指定当前物理存储器利用率mu312和使用的页面数量nr_up并且假定对增加的页面数量进行分段线性压缩的情况下,我们估计在目标物理存储器利用率tmu下可以承受的最大实页面数量nr_max_pg为nr_max_pg=(tmu/mu)*nr_up。
我们将OS在没有换页活动的情况下仍然可以分配的可分配页面数量计算成可分配数量=nr_fp-min_fp。根据opt_fp=nr_max_pg-nr_up=(tmu/mu-1)*nr_up确定OS和压缩机制应当保持的空闲页面最优数量opt_fp。一旦我们确定了opt_fp,本发明把0pt_fp强制成OS仍然可以分配的空闲页面的最大数量。根据系统的情况,可以或不可以改变操作系统,这需要针对本发明的方法提供不同的方案以便把实存储器尺寸减少成nr_max_pg个页面。
下面的实施例对于系统而言是最优的,其中可以改变操作系统。我们通过把空闲池中的空闲页面数量nr_fp动态增加(可分配数量-opt_fp)来保留/预留页面。借此,如果nr_fp低于min_fp,则激活换页守护程序kswapd以开始换页。这样就释放出了页面,因而减少了有效实存储器尺寸。然而仅仅减少实存储器尺寸并不能减少物理利用率,就象如此并不能改变系统中的任何数据内容那样,因此压缩比仍然相同。所以本发明至少清零压缩模块释放的所有页面,从而增加了压缩比CR(t),因而也减少了物理存储器利用率PM。尽管这个条件是充分的,但在最优实施例中当页面被释放时我们总是清零所有的页面,而不是在分配时清零,这是由于在释放时清零的方式简化了管理(不需要跟踪清零的页面)并且因所有未使用页面均被清零使得物理存储器利用率保持最小。
图5示出了除动态维护nr_fp之外压缩控制“被压缩的”与分配机制的交互作用。然而在页面分配时如果(nr_fp<min_fp)206,则页面分配器会尝试释放页面207,而不是通过减少文件高速缓冲存储器,写缓冲区高速缓冲存储器或换出用户页面来立即尝试释放页面,系统则会通过调用压缩释放()220首先检查存储器利用率是否允许分配页面,压缩释放()会查询“被压缩的”的状态并且在可能的情况下会增加min_fp,从而避免换页活动。例如,由于通过一个及时机制调用“被压缩的”,存储器利用率在其最后调用之后可能已经降低。由于我们在分配页面()时同步进行调用,我们不必主动释放页面,这是因为这种机制总是首先尝试在实际调用尝试释放页面()之前释放更多的未使用页面,只要不与opt_fp冲突。
在一个针对不允许改变操作系统的系统而裁剪的可选实施例中,通过增加OS内部变量而实现的"未使用页面"机制是不可能的。在这种情况下,参照图6,一个动态加载“被压缩的”250是一个设备驱动程序或内核扩展,“被压缩的”会明确分配页面并且把它们放在一个压缩备用池270中。如图6所示,“被压缩的”确定opt_fp数量并且据此确定必须预留多少页面。接着明确分配那些页面,清零页面并且把它们放到压缩备用池270中。如果诸如nr_fp和min_fp的OS变量不可用,则“被压缩的”必须重复调用分配页面()并且监视mu以保证物理存储器利用率降低到期望的水平。当压缩比低于另一个期望水平时,“被压缩的”可以通过释放页面()开始释放页面到空闲池。
上述机制描述了强制换页使得物理存储器利用率不超过预置限制的方法。另外,必须修改换页或交换空间利用率。由于我们在物理存储器利用率较高时依赖换出页面帧的能力,所以我们必须保证交换空间可用。原则上我们在管理通常由物理存储器和换页或交换空间构成的虚拟存储器。在图7中图解了这种情况。在具有存储器压缩的系统中,换页空间被用作必须强制换出的页面的备份设备。在任意规定时间我们均可以假定PM<RM(t)<RM并且我们在压缩比降到1时必须能够换出RM-PM个存储器。因此我们把交换空间分成一个普通交换空间S700和尺寸为RM-PM的交换空间S701以保证在由于存储器压力必须强制换出页面时有足够的交换空间可用。另外,在内核中可以固定或锁定的页面的数量必须被限制成PM。
显然这里公开的本发明是为达到上述目标而精心准备的,应当理解本领域的技术人员可以导出许多修改和实施例,并且所附权利要求书试图覆盖所有这种符合本发明真实宗旨和范围的修改和实施例。
权利要求
1.一个管理具有硬件主存储器压缩的计算机系统中的存储器的方法,上述方法包括的步骤有i)从上述系统获得物理存储器利用率;ii)确定一个目标实存储器尺寸;iii)维护若干不能被用于通用系统操作的预留页面;iv)确定不能被用于通用系统操作的预留页面的目标数量以便达到上述目标实存储器尺寸;v)确定一个对上述预留页面数量的调整值;vi)保留对上述预留页面数量的调整并且将上述预留页面调整数量清零;和vii)释放上述调整数量的保留预留页面。
2.如权利要求1所述的方法,其中上述目标实存储器尺寸基于测量的上述物理存储器利用率在某个预置目标物理存储器利用率上对当前实存储器利用率的一个插值。
3.如权利要求1所述的方法,其中上述预留页面的目标数量是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
4.如权利要求1所述的方法,其中对预留页面数量的调整值是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
5.如权利要求1所述的方法,其中对上述预留页面调整数量的保留步骤包含增加操作系统维护的最小空闲页面数量的步骤。
6.如权利要求5所述的方法,其中对通过增加操作系统维护的上述最小空闲页面数量来释放的页面进行清零。
7.如权利要求1所述的方法,其中对上述预留页面调整数量的释放步骤包含减少操作系统维护的最小空闲页面数量的步骤。
8.如权利要求1所述的方法,其中对上述预留页面调整数量的保留步骤包含从操作系统明确分配页面并且清零上述页面的步骤。
9.如权利要求1所述的方法,其中对上述预留页面调整数量的释放步骤包含从以前预留的上述页面中明确释放页面的步骤。
10.如权利要求1所述的方法,其中在至少一个交换设备上保留交换空间以保存因高物理存储器利用率被强制换出的页面的内容。
11.如权利要求10所述的方法,其中上述保留的交换空间是一个关于最大实存储器尺寸和物理存储器尺寸之间的差值的函数。
12.一个管理具有硬件主存储器压缩的计算机系统中的存储器的系统,上述存储器管理系统包括ⅰ)从上述计算机系统获得一个物理存储器利用率的装置;ⅱ)确定一个目标实存储器尺寸的装置;ⅲ)维护若干不能用于通用系统操作的预留页面的装置;ⅳ)确定不能被用于通用系统操作的预留页面的目标数量以便达到上述目标实存储器尺寸的装置;ⅴ)确定一个对上述预留页面数量的调整值的装置;ⅵ)保留对上述预留页面数量的调整并且将上述预留页面调整数量清零的装置;和ⅶ)释放上述调整数量的保留预留页面的装置。
13.如权利要求12所述的存储器管理系统,其中上述目标实存储器尺寸基于测量的上述物理存储器利用率在某个预置目标物理存储器利用率上对当前实存储器利用率的一个插值。
14.如权利要求12所述的存储器管理系统,其中上述预留页面的目标数量是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
15.如权利要求12所述的存储器管理系统,其中上述对预留页面的调整是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
16.一个机器可读的程序存储设备,实际包含一个指令程序,该程序可被机器用来执行管理具有硬件主存储器压缩的计算机系统中的存储器的方法步骤,上述方法步骤包括ⅰ)从上述系统获得物理存储器利用率;ⅱ)确定一个目标实存储器尺寸;ⅲ)维护若干不能被用于通用系统操作的预留页面;ⅳ)确定不能被用于通用系统操作的预留页面的目标数量以便达到上述目标实存储器尺寸;ⅴ)确定一个对上述预留页面数量的调整值;ⅵ)保留对上述预留页面数量的调整并且将上述预留页面调整数量清零;和ⅶ)释放上述调整数量的保留预留页面。
17.如权利要求16所述的程序存储设备,其中上述目标实存储器尺寸基于测量的上述物理存储器利用率在某个预置目标物理存储器利用率上对当前实存储器利用率的一个插值。
18.如权利要求16所述的程序存储设备,其中上述预留页面的目标数量是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
19.如权利要求16所述的程序存储设备,其中上述对预留页面的调整是一个关于当前实存储器利用率和上述目标实存储器尺寸之间的差值的函数。
全文摘要
在一个具有硬件主存储器压缩的系统中,本发明的方法监视物理存储器利用率并且在物理存储器接近耗尽时将存储器强制换出从而释放出实存储器页面。接着这些页面被清零,因而这些页面的压缩比很高,因此减少了物理存储器利用率。因物理存储器利用率较高而被强制换出的页面是不可分配的。在允许改变操作系统的系统中,本发明动态控制空闲页面组的最小尺寸并且在释放时对页面进行清零。在不可以改变操作系统的系统中,通过一个模块分配页面并且进行清零。
文档编号G06F12/12GK1327197SQ0112082
公开日2001年12月19日 申请日期2001年5月29日 优先权日2000年5月30日
发明者休伯图斯·弗兰克, 布伦特·阿柏利, 洛兰·赫格, 丹·E·波夫, 罗伯特·A·小萨康尼, T·巴塞尔·史密斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1