专利名称:前摄存储器管理的方法和机制的制作方法
技术领域:
本发明一般涉及计算机存储器的管理。
背景技术:
当代计算系统装备有大量的随机存取存储器,即RAM,目前在256兆字节到几个千兆字节的数量级上。然而,目前的存储器管理机制和方法是许多年前设计的,当时RAM是相对稀罕的计算资源。为了为程序进程提供大量虚拟存储器,这种存储器管理机制依赖于诸如按需寻页这样的技术,当另一进程需要某些数量的RAM空间时,实质上是把数据页面从RAM转移至磁盘驱动器,并且,如果该被转移的数据又一次被其相应的进程所需,则从磁盘把该数据读回RAM。
有了这种常规的存储器管理之后,所需页面通常不在存储器中,即使典型使用模式中所引用的代码和数据总量随时间基本一致,并且相对于当前存储器尺寸很小。这主要是两个因素的结果,即系统经受会迫使所需的页面脱离存储器并且/或者快速改变所需的页面集的各种转变,以及侵蚀,其中用其它数据来盖写不在活动使用中的页面。
这种转变的示例包括从电源关闭状态启动,从一个用户切换至另一用户,从待机或休眠模式恢复,使用耗存储器的应用(如,打游戏)然后继续回到典型的系统使用,以及在长延时后返回至计算机。不必说,除了快速常规操作之外,用户高度期望有这种转变后的快速的系统和程序启动。然而,用当前存储器管理,目前这是不可能的。例如,试验已显示在从休眠恢复后,应用启动可能占用长达9至11秒,即使此时大量存储器未被使用。这是由于大多数启动时间消耗在磁盘传输中,而CPU被锁定,等待从磁盘读取必要的代码和数据页面,作为按需寻页的结果,调页基本上每次进行一页。简言之,在这种转变之后,高使用率的页面集通常不在存储器中,导致请求调页,由于慢的输入/输出(I/O)传输时间,这提供了差的用户经验。
尽管某些转变涉及从存储器慎重收回页面,且其它导致对存储器的突然需求,然而仍有其它导致页面变得不活动并且被交换至磁盘。更具体地说,工作集内的存储器页面可能被修整并且与关闭的文件页面一起被放到不在使用中的页面高速缓存中,这里称为待机页面集(如,基于Windows系统的待机列表)。为了减少磁盘读写次数,存储器管理跟踪待机页面集内的哪些页面是最近被存取的,并且当需要存储器时,基本上以先进先出(FIFO)的队列类型,选择那些页面用于转移至磁盘。
尽管该技术可以在某种程度上减少磁盘的传输,但由于它导致由进程最近使用的页面是那些留在存储器内的页面,现代应用具有大的代码和数据需求。结果,在短期内,一般可以从该待机页面集中调用页面。然而在较长期内,用常规的存储器管理,待机页面集的简单FIFO排队造成侵蚀,其中可能用较不重要的(但更近地被使用)页面来盖写有价值的(但非最近使用的)页面。因而,至/自磁盘的大量I/O传输是必要的。即使在功能强大的系统上,这些I/O传输也充当了瓶颈,由此系统未充分使用大量可用的存储器,使CPU在大量时间内闲置。
总而言之,当代程序要求大量随机存取存储器和快速处理能力,这由当代计算装置来提供。然而,目前的存储器管理技术并未恰当地与这些资源匹配,这是由于目前的存储器管理是在缺乏存储器时形成的,并且因为应用程序很小且多任务处理很少,因此用一般观点来设计,该观点认为实质磁盘使用是必然的、且不是繁重的。这样,常规存储器管理不试图限制磁盘使用,超出在存储器内保持最近被访问的页面。从而提供损害实际的和观察到的性能的瓶颈以外,常规的存储器管理并不试图限制磁盘使用。
发明内容
简言之,本发明针对一种改进了的存储器管理结构,包括提供前摄(proactive)、回弹且自调谐存储器管理系统的系统、方法和机制。在实际需要数据之前,存储器管理系统可以通过把可能被需要的数据加载并保持在存储器中而提供存储器管理中实际的和观察到的性能改进。数据页面可以按照各种因素用一个值/分数来优先化,因素包括它们的利用、使用频率、上一次使用时间、时间传输的容易性及其它、基于环境的信息。机制用于预取并且/或者把更有价值的数据保持在存储器内。如果数据需要被交换或被盖写,则数据可能以回弹方式被自动取回,不是因为实际需要,而是因为期望的需要。
通过使存储器在需要那些页面之前被填满,存储器管理系统实质上减少或消除了立即响应的磁盘传输操作,并从而减少或消除了许多重大用户情况下的I/O瓶颈。为此,本发明的实现包括各种机制,针对历史性存储器使用监控、存储器使用分析、用高价值的(如,频繁使用的)页面刷新存储器、I/O预取效率、以及主动磁盘管理。
为了获得为页面分配值所需的信息,通过跟踪和记录技术来跟踪一大组关于每一页面的信息,最好在相对长的时间段上。这个测得的数据被处理成可管理的信息,它作为决策过程的一部分被保持并被存取,决策过程根据对存储器相关的事件的响应和/或在定时基础上再平衡存储器内容,使得更多有价值的数据会被保持并且/或者优先于相对较无价值的数据被预取至存储器。
优先级值能够优先化存储器页面的待机页面集(如,基于Windows@系统的待机列表),使得无论上一次是何时被引用,待机页面集内的页面根据相对于其它页面的值都具有较高优先级,并从而优先于其它页面被保持在存储器中。前摄和回弹的预取以由优先级确定的顺序把有价值的页面从磁盘加载至待机页面集。该加载最好以低优先级、后台I/O传输来进行,从而避免与用户正常操作的干扰,然而它也可在前台操作中进行。
本发明的结果使CPU的利用率大大增加,而不与正常的系统使用干扰。对于许多计算机用户而言,实际使用的整个存储器页面集足够小以保持在存储器中,造成要求故障数(为了从磁盘读取所需数据)被减少到零或接近于零。
在一种实现中,跟踪机制观察存储器相关的活动性,而记录器则记录观察结果。集成器把当前记录的结果与先前的记录组合到页面信息数据库中。挖掘服务访问页面信息数据库内的数据以从中形成情况计划,分析情况计划而把页面优先化到一个列表内。然后,该列表按照为每一页面计算的值被存储,这是基于存储器使用观察和可能的其它因素。
由一事件(如,系统或所产生的时间)触发的再平衡器与I/O计划器一起工作,以每一页面计算的值所确定的顺序把页面加入优先化的待机页面集。该优先化的待机页面集包括与每一页面的值对应的许多子集。这些值可能随时间和/或根据实际使用而变化,从而页面可能在子集间逻辑地移动。当需要存储器时,无论立即响应或者用于后台预取,子集内最低优先级的数据首先被调页输出。这样,由实际使用观察和测量确定的更多有价值页面以及环境和其它信息以无干扰的方式自动输入存储器,并且优先于较无价值的页面趋于留在那里。
结合附图看下列详细说明时,其它优点将变得更加显而易见。附图中
图1是一般表示其中结合了本发明的计算机系统的框图;图2和3包括按照本发明一方面表示系统组件间基本关系的框图;图4A和4B包括按照本发明一方面适用于执行前摄存储器管理的通用结构框图;图5A是示出待机页面集可能保持页面数据的一种方式的框图;图5B是按照本发明一方面表示优先化的待机页面集可能把页面数据保持在优先化的子集内的替代方式框图;图6是按照本发明一方面,为了限制与用户应用的干扰而约束后台活动的约束系统框图。
具体实施例方式
示例性操作环境图1说明了其上可能实现本发明的适当计算系统环境100的一例。计算系统环境100仅是适当计算环境的一例,并且并非试图限制本发明的使用范围或功能。计算环境100也不应被理解为具有与示例性操作环境100中所述的组件的任一或组合有关的任何依赖性或需求。
本发明用于许多其它通用或专用的计算系统环境或配置。可能适用于本发明的著名计算系统、环境和/或配置的示例包括、但不限于个人计算机、服务器计算机、手持或膝上型装置、平板式装置、多处理器系统、基于微处理器的系统、置顶盒、可编程用户电子设备、网络PC、小型计算机、大型计算机、包括任一上述系统或装置的分布式计算环境,等等。
本发明可以用计算机可执行指令的通用环境来描述,譬如由计算机执行的程序模块。一般而言,程序模块包括例程、程序、对象、组件、数据结构等待,它们执行特定的任务或实现特定的抽象数据类型。本发明还可以用分布式计算环境来实现,其中任务由通过通信网相连的远程处理装置执行。在分布式计算环境中,程序模块可能位于本地和/或远程计算机存储媒质中,包括存储器存储装置。
参考图1,用于实现本发明的示例性系统包括形式为计算机110的通用计算设备。计算机110的组件可能包括、但不限于处理单元120、系统存储器130、及把包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可能是多种类型总线结构的任一种,包括存储器总线或存储器控制器、外围设备总线、及使用任一多种总线结构的本地总线。通过示例但非限制,这种结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准联盟(VESA)本地总线、及外围组件互连(PCI)总线(也称为Mezzanine总线)。
计算机110一般包括各种计算机可读媒质。计算机可读媒质可以是能由计算机110访问的任何可用媒质并包括易失性和非易失性的媒质、可移动和不可移动媒质。通过示例但非限制,计算机可读媒质可能包括计算机存储媒质和通信媒质。计算机存储媒质包括易失性和非易失性、可移动和不可移动媒质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现。计算机存储媒质包括、但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CDROM、数字化通用光盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备、或用于存储期望信息并能由计算机110访问的任意其它媒质。通信媒质一般体现为在诸如载波或其它传输机制这样的已调数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递媒质。术语“已调数据信号”意指其一个或多个特性以对信号内信息进行编码的方式被设置或改变的信号。通过示例但非限制,通信媒质包括诸如有线网络或直接线连接这样的有线媒质、以及诸如声音、RF、红外这样的无线媒质及其它无线媒质。上述的任意组合应该包含在计算机可读媒质的范围内。
系统存储器130包括计算机存储媒质,其形式为易失性和/或非易失性存储器,譬如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)一般存储在ROM 131内,它包含例如启动期间帮助在计算机110内的组件间传输信息的基本例程。RAM 132一般包含数据和/或程序模块,它们可以由处理单元120立即访问并且/或者当前对其操作。通过示例但非限制,图1说明了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110可能还包括其它可移动/不可移动、易失性/非易失性计算机存储媒质。仅仅通过示例,图1说明了对不可移动、非易失性磁性媒质进行读写的硬盘驱动器140、对可移动、非易失性磁盘152进行读写的磁盘驱动器151、以及对可移动、非易失性光盘156进行读写的光盘驱动器155,譬如CD RAM或其它光学媒质。示例性操作环境中可用的其它可移动/不可移动、易失性/非易失性计算存储媒质包括、但不限于磁带盒、闪存卡、数字通用盘、数字视频磁带、固态RAM、固态ROM、及其它。硬盘驱动器141一般通过如接口140这样的不可移动存储器接口与系统总线121相连,且磁盘驱动器151和光盘驱动器155一般用如接口150这样的可移动存储器接口与系统总线121相连。
上面讨论并在图1中说明的驱动器和它们的相关计算机存储媒质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,所示的硬盘驱动器141存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意到这些组件或者可与操作系统134、应用程序135、其它程序模块136和程序数据137相同,或者与它们不同。这里为操作系统144、应用程序145、其它程序模块146和程序数据147给出不同数字以说明它们至少是不同的复制物。用户可能通过诸如键盘162和指示设备161这样的输入设备把命令和信息输入到计算机20中,输入设备通常称为鼠标、轨迹球或触板。其它输入设备(未示出)可能包括麦克风、游戏杆、游戏板、卫星式转盘、扫描仪及类似物。这些和其它输入设备经常通过与系统总线耦合的用户输入接口160与处理单元120相连,但也可能用其它接口和总线结构连接,譬如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过诸如视频接口190这样的接口与系统总线121相连。监视器101可能还与触摸屏面板或类似物集成。注意到监视器和/或触摸屏面板可以物理上与一容器耦合,该容器中结合了计算装置110,譬如在平板式个人计算机中。此外,诸如计算装置110这样的计算机可能还包括其它外围输出装置,譬如扬声器和打印机,它们可能通过输出外围接口194或类似物而连接。
计算机110可能工作在网络化环境中,该环境使用与诸如远程计算机180这样的一个或多个远程计算机之间的逻辑连接。远程计算机180可能是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且一般包括上述与计算机110有关的许多或全部元件,尽管图1中仅说明了存储器存储设备181。图1所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,且可能还包括其它网络。这种网络环境在办公室、企业范围计算机网络、企业内部网和互联网中是常见的。例如,在本发明中,计算机系统110可能包括数据从中迁移的源机器,而远程计算机180可能包括目标机器。注意到源和目标机器无须由网络或任何其它装置相连,相反,数据可能通过能被源平台写入并由目标平台读取的任何媒质而迁移。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170与LAN 171相连。当用于WAN网络环境中时,计算机110一般包括用于在诸如因特网这样的WAN 173上建立通信的调制解调器172或其它装置。调制解调器172可能是内部或外部的,它可能通过用户输入接口160或其它适当机制与系统总线121相连。在网络化环境中,关于计算机110所叙述的程序模块或其部分可能存储在远程存储器存储设备中。通过示例但非限制,图1说明了驻留在存储器设备181上的远程应用程序185。可以理解,所示网络连接是示例性的,也可能使用在计算机间建立通信连接的其它装置。
前摄存储器管理本发明的一方面在某种程度上一般针对包括系统、方法和机制的改进的存储器管理结构,这导致用户接口、应用程序和操作系统软件重大方面上的实际且观察到的性能改进。为此,如图2所示,本发明提供了一种前摄、回弹且自调谐的存储器管理系统200,它监控用户的与存储器相关的活动,并且用于确保至少对于相对高的成功率而言,所需数据在它被需要前存在于随机存取存储器202(或简单地说“存储器”)中,而非在需要时从磁盘204(或其它等价的次级存储机制,譬如闪存、网络数据源、磁盘驱动器和/或实质上任何类型的数据存储)被读入存储器202。换言之,前摄和回弹的存储器管理把可能有用的数据带入存储器并且试图把该数据保存在存储器中。如果有用的数据需要被换出或被盖写,则数据可能以回弹方式被自动取回,不是因为实际需要,而是因为预期的需要。
为此,本发明利用了大量目前可用的存储器从而把可能活动的进程维持在存储器内,并且维持系统用来完成前摄和回弹存储器管理的记录保持、数据结构和算法。预期到这种记录保持、数据结构和其它算法会随时间变得越来越优化,然而当前的实现已经造成立即响应的I/O传输的大大减少。
可以容易理解,通过使存储器202在需要那些页面前填满适当的数据(如,以页面排列),本发明的存储器管理系统200实质上减少或消除了立即响应的磁盘传输操作,并从而减少或消除了许多重大用户情况下的I/O瓶颈。注意到如这里所使用的,术语“页面”可能是指存储器管理系统200作为一个单位处理的最小数据量(如,4096字节),然而并非试图限制本发明为任意特定的固定数据量,从而数据的一个“页面”可能是某些其它固定量,或甚至可能是可变数据量(如,小到一字节或其倍数),或甚至流传输。这样,可以读/写/流通任意数据量而非固定大小量或其倍数的存储器管理系统仍旧等价于读和写一页或多页。
如下所述,本发明的实现包括各种机制,包括那些针对历史存储器使用监控、存储器使用分析、用高价值的页面(如,频繁使用的)刷新存储器、I/O预取效率、以及主动磁盘管理。通常,这些机制一起工作作为前摄存储器管理系统200,用于确保所需数据会在需要前在存储器中。为此,通过利用可能被连续地和/或在相对长的时间帧上聚集的各类存储器使用数据以及其它信息,支持数据结构的算法和方法把存储器管理扩展为以前摄方式操作。然而,注意到本发明并不需要这种机制的任意特定组合,但可能用较少和/或用替代的机制提供许多且较好的与存储器相关的好处。例如,通过确定表示哪些页面相对于其它页面更可能被使用的值并且把更有价值的页面留在存储器中,可能获得I/O传输上的减少,而无须任何后台预取页面至存储器中,即使用于确定那些页面值的信息被间歇地聚集并且/或者仅在相对短的时间段上被聚集。
而且,本发明的存储器管理方法和机制可能通过不仅在存储器满且需要作出交换判决时处于活动,而在包括存储器相对为空在内的其它层次的存储器使用时处于活动,从而改进存储器使用。例如,已加载页面被存取的频率可以被测量,无论系统是否处于存储器压力下。此外,本发明全局地管理存储器,包括目前在存储器中以及(最好)应该在存储器中但目前尚在磁盘中的内容(反之亦然),而非仅管理存储器中目前存在的内容。
本发明以许多方式表示存储器状态,包括通过加入关于每个存储器页面目前被保持的信息。这种新信息可能包括每一页面在时间上的使用频率,而非仅暗指或显指关于上一次使用时间的信息。示例性实现还保持与目前不在存储器中的页面有关的信息。如下所述,数据结构用来组织保持或者能保持可能有用的数据的自由存储器,并且用于控制何时该存储器可用于替代使用。
为了获得信息,通过跟踪和记录技术来跟踪关于每一页面的一大组信息,最好在相对长的时间段上。通过观察当在相对长时段上活动时由进程所使用的各种页面,被存取的代码和被读取的数据文件被记录,提供了页面值的重要测量,从而建立了可能的工作集。这个测得的数据被保持并且作为一部分决策进程而被访问,该进程根据存储器相关的事件和/或其它方式(如,周期性地)来再平衡存储器内容。换言之,丰富的数据跟踪产生信息,在分析该信息时允许更多有价值的页面被保持并且/或者优先于较少价值的页面而被预取入存储器,无论值是由最可能被需要的数据、数据传输的容易性、环境还是其它标准所确定。
通常,为了获得每一页面的相关值,本发明保持每存储器页面的非传统的丰富信息,既用于标识高值页面又用于标识低值页面,无论该页面目前在存储器中还是在另一存储器中。对于存储器中的页面以及对于不再在存储器中(如,目前在硬盘或软盘、CD媒质、DVD媒质、网络、闪存等上)或从未在存储器中的页面而言,该丰富信息(包括模式/频率/编组/环境数据)被保持(也是持续的)在存储器中。该信息用来把不在存储器中的有价值页面预载入(预取)存储器,并且/或者用于优先于较少价值的页面而保持更有价值的页面。实现方式之一是通过一工作集补充机制来保持工作集项目,这些项目包含了不再在存储中但在工作集地址空间内有效的页面的丰富使用信息。另一种方式是通过扩展的待机页面集,(如,不在使用中的页面高速缓存,譬如基于Windows@系统中的待机列表),这是根据文件页面历史机制建立的,其中比有物理存储器时分配了更多物理页面描述符和项目,且这些用来保持与离开存储器的页面有关的使用模式、频率、分组和/或环境信息。
跟踪各种统计量以导出确定所需页面的似然性的引用模式和/或使用频率,这些统计量如下所述使用的周期计数、建立时间、上一次存取时间等等。这些类型的统计量可能把能用来导出引用模式、使用频率等的每个页面项目或范围/组保持在存储器内。这种统计量可能是文件的已保持项目和/或对象、存储器映射对象或其它页面分组。此外,状态机可能按照具有除时期比特外状态的页面或页面组被排列,譬如用于在从存储器移去页面以及取回页面时进行覆盖。这个变化的信息可能用来优先化子集内存储器中的页面,并且保护有价值的页面不被重新使用,譬如当程序一次或两次引用大量页面时。优先化可能是明显的,并且不是从列表上的位置推断出来的。该优先级可能从被捕获的使用模式、频率、环境、分组等等中周期性地或偶尔地重新计算出来。
而且,把特定页面取入存储器的费用可能是确定其值的一个因素,如,是否页面以小文件方式返回的页式文件,或者在的顺序存取的/流通的页面之中可用来建立该费用因素。这种评估可能是按页的,但也可能变得更紧凑,譬如通过仅对页面子集保持某些或全部丰富信息,获得并/或保持统计量并且对文件对象、对区/映射等的页面组进行计数。而且,可能获得状态数据并将其用作扩展的页面信息的一部分。
例如,通过观察环境,可能考虑不是在存储器管理判决中普通考虑到的因素,包括功率状态和磁盘状态。还考虑到所观察的事件,用于为从已知对大存储器有影响的程序的待机/恢复、休眠/恢复、和执行/终止的快速恢复采取适当的行动。
除了记录这样的状态信息之外,其它机制也可用于便于本发明的前摄存储器管理。例如,应用程序可以宣布某些数据比其它数据较不(或更加)有用,如,处理罕见错误所需的数据可被宣布为不可能被再次使用,借此这种数据就是用较低值分配或加权的较好候选物。用户还可以指明某些较低的或较高的优先级数据,例如,难得使用应用程序帮助文件的用户可以手动地提供一种设置来表明它对应用程序和/或操作系统的低优先级,或反之亦然,如,如果可能的话总是把帮助数据保存在存储器中。为此,可能提供与应用相连的应用编程接口(或类似的功能),以允许程序对系统存储器管理作出贡献,譬如通过指定页面(如,一页面区域)不再有价值,或者指定另一页面集是有价值的。应用程序可能还指定存储器管理器可以用于跟踪和分组那些在操作中所引用的页面的值的环境和操作。这样,应用程序可以标记应用程序相信对于存储器使用为重要的操作,譬如显示文件打开/保存对话框或者示出任务窗格。
页面值还可能用于以其它方式改进存储器管理。例如,当程序通过使用过一次或两次的大量文件页面时,仅重新使用相似的页面,而较高值的页面得以保护。而且,某些页面的压缩也是可行的,譬如通过使低和/或中间值的页面被压缩在存储器中而非被交换至磁盘。例如,应用或发现机制可能指明了它可能期望压缩某些大块(如,中间或较低值)数据,而非把它写入磁盘以释放空间。
跟踪和记录技术用于提供新的能力,用于记录超出目前所已知的存储器使用数据。新算法可以挖掘该数据并且产生指令或情况计划,用于以高效方式把数据从磁盘预取过来,并且用于根据值优先级而保持存储器内的数据。例如,由于该丰富信息,因此存储器页面的待机页面集可能被优先化,而非简单地排列在其中没有量化优先级的FIFO型队列中。根据本发明,无论上一次何时被引用,待机页面集内的页面可以相对其它页面具有较高的优先级,从而优先于其它页面被保持在存储器中,其它页面包括工作集存储器内的页面。例如,某一活动进程的页面可能不再被使用,即使那些页面最近被使用过,借此,这种页面比很长时间不用但可能继续被使用的页面具有更低的值。
而且,除了诸如实际使用频率、上一次使用时间和其它测得结果等观察到的状态数据和测得的结果之外,也可能用其它准则来确定页面值。例如,可以用替换处罚的概念来确定存储器内页面的值,如,随机散布的数据(在磁盘上不连续)比连续顺序的数据在磁盘间传输时更昂贵,从而在存储器内维持随机散布的数据并且传输顺序数据可能更有价值,譬如如果突然需要大量存储器时。这样,页面的效用可以由其I/O传输费用来确定,以及其使用的历史跟踪以及机器和诸如功率和磁盘状态考虑等其它环境。还可以使用其它因素,譬如实体(如,应用程序或用户)可能分配给某数据的权重。
在一种实现中,在机器上跟踪程序的存储器使用,如,按用户,并且对磁盘和存储器上页面的可能使用性进行分类。从这个跟踪和分类可能确定存储器预算,且后台I/O机制根据该预算用可用的最高利用率页面来填充存储器,这些页面是由每一页面的量化值来确定的。因而,存储器页面可能是回弹的,如,根据需要被移去,但当空间再次变得可用时自动被恢复。注意到该方法与存储器管理的通用方法相反,后者依赖于往复需求调页(具有有限的群集或预取),用于仅在第一次使用时从磁盘取出页面,并以FIFO方式保存它们。根据本发明,当页面驻留时,存储器结构优先化地把页面保存在存储器内,这可能随着它们被使用的时间而改变,使得较高利用率的页面留在存储器内,除非且直到其它当前活动需要存储器为止。
为了识别高(以及低)值页面,页面值和/或存取模式数据被传送至并保持在非驻留永久存储器中,借此该信息(如,包括模式、频率、环境和/或分组数据)被持续保持在引导程序上。注意除了把页面数据写入文件之外,它们也被保持,包括解译数据、建立新的值、以及/或者挖掘数据以丢弃冗余或不必要的数据,使得保存在永久存储器中的内容不仅包括页面使用数据,还包括可辨明的模式数据。如下所述,通过跟踪以及/或者采样页面参考以及其它环境和事件(如下所述),可以捕获由存储器管理所保持并使用的页面值和存取模式数据。为与本发明一致,跟踪和采样操作超出简单地把计数和少量的每页状态保持在存储器中。为此,跟踪和采样机制包括PTE(页面表格项)存取的比特跟踪,它记录了何时存取比特被重置。注意到通过测量并保持存取数据被移动和重置的速率限制了被记录的数据量,如,对于频繁被引用的页面,信息不是在每次存取时被记录,而是可能保持PTE存取比特被重置的速率。而且,可能记录页面出错(硬错误和软/转移出错)以及读和写文件请求。快拍过程工作集的机制也可能获得页面值数据,就像跟踪页面的机制在它们离开存储器或在它们从工作集被修剪时所能够的一样。
根据该信息,页面可能被分组,信息可能被挖掘,用于永久储存器和存储器两者内的数据,用它们上一次存取事件、使用模式、使用频率、虚拟或物理的位置、页面被修剪的时间、等等。然后,这些分组可能用来有效地同时交换出页面区域,并且可能用于安排目的地,譬如页面文件。例如,如果使用少量页面时,可能有效地取入整个组。机制还可以通过使用永久的文件/页面历史而进行“智能群集”,譬如同时取入整个文件,等等。页面可以进一步被分组是根据哪些进程使用它们、页面使用了进程存续期(如,启动、关闭)的哪部分、在一时段内哪些页面有硬错误(如,磁盘边界操作)。其它分组页面的方式包括围绕任务切换引用的页面、鼠标点击、盘旋、聚焦、及其它用户输入、基于时间的使用,譬如特定的日时和/或周日、用特定用户的进程、以及其它环境,包括应用专用环境。
通常,按照本发明的存储器管理可能在一丰富事件和环境组上进行跟踪并采取行动,包括任务切换、窗口建立、对话、聚焦变化、鼠标盘旋及点击、及其它用户输入事件。其它事件和环境包括应用程序启动和关闭、系统引导、登录、关闭、待机/休眠和恢复、切换用户、视频、音频和/或类似的媒体播放事件(如,开始和结束)、视频时偏、与系统(包括远程台式机、远程通信网等等)的远程连接、以及应用专用环境。
按照本发明一方面,不仅较有价值的页面可能优先于较无价值的页面而保持在存储器中,而且较有价值的页面可能优先于较无价值或不使用的页面被载入(预取)存储器中(存储器自动被分配),即使不实际需要那些页面。该分配和/或再平衡可能在各种时间和以各种方式来完成,包括在重启后、在释放了大量存储器后、或甚至有点连续或至少有规律性地、最好作为后台操作。存储器管理器所使用的分配机制最好是不醒目的、并且根据空闲优先级I/O和空闲检测机制。如下所述,这不仅是调度算法,但通过观察进入的正常I/O模式并且在后台I/O不会与正常I/O重叠或造成搜索正常I/O时调度后台I/O,从而可能工作在节流方式。空闲检测机制(如,作为空闲任务排队)通过观察用户输入、CPU和磁盘来确定系统何时为空闲,一边以不醒目的方式执行存储器平衡。然而存储器的前台传送有时也是有价值的,因而某些或全部存储器的预加载的优先级可能为高。
在预取期间,可能管理I/O操作,从而用限制活动应用程序和进行后台工作的程序之间干扰的机制来提供效率。例如,可以分类I/O传输以减少搜索时间,并且可能优先化I/O传输,使得后台(如,预取)操作不会延迟前台操作并且不与用户的正常系统使用发生干扰。而且,可能提供机制来分类I/O请求并把该信息通过驱动器堆栈传递,使得低级别机制能够用适当的优先级来调度I/O。这允许用低优先级来分类I/O以便不与较高优先级的分类干扰,这可能当在不同分类下多次请求给定的操作时要求避免可能的优先级反转。来自不同分类的I/O可能用算法来分派,这些算法设法认出流行的使用模式并且使干扰最小。
I/O操作的一方面是利用欠使用的资源而不损害其它用户和系统活动的性能,然而在从磁盘读取高利用率文件页面而不与用户前台应用干扰时可能出现问题。一个这样的问题是需要从用户已经专用的打开的文件中预取,譬如注册表文件和临时因特网文件高速缓存索引。在文件已被专用打开的情况中,文件不能被正常地打开以从中预取。类似地,如果存储器管理机制成功地打开用于预取的文件,并且要求对文件专用访问的应用程序试图打开它,则应用程序会失败,导致所观察到的随机应用程序差错。这个问题可以通过调用特别的API以非典型方式打开文件而被绕过,该方式中文件系统不更新该文件的共享信息。
另一I/O相关的问题是针对以不与系统上较高优先级I/O请求干扰的方式发出I/O请求。这可以部分地通过如果磁盘从上一次正常I/O起未空闲足够长时间(例75ms)则不开始低优先级I/O而完成。然而,这导致优先级反转问题,它可能通过发出具有I/O堆栈下的特别标志的读取的哑元而解决。注意到哑元读取分组的发送是与I/O堆栈通信的一种方式,用于通知它优先级反转,即使当实际请求分裂为散布在堆栈内的许多子请求时,它也有效,使得它们不能全部都通过原始请求句柄来达到。当滤波器驱动器看到相应的IRP(I/O请求分组)时,它提高与该范围重叠的所有其未解决的I/O的优先级,然后不进行任何实际工作就完成哑元读取IRP。然而,即使根据这种修补,发出低优先级调页I/O的一个大列表会堵塞正常或高优先级的线程。这样,这可以通过仅发出少量低优先级的预取调页I/O来避免,一次一个单独文件,这会大大减少优先级反转的可能性,并缩短其持续时间。根据这些改进,一旦识别了磁盘上的高利用率文件页面和存储器内的低利用率页面,请求就可以立即被排队,而不用担心与用户当前的活动干扰。
作为本发明这个方面的结果,CPU的利用率大大增加,而不与正常系统使用干扰。对于许多典型用户而言,实际使用的整个返回文件的页面集小得足以保持在存储器中。这些所需页面可能在引导程序后被预加载,并且如果发生对存储器的暂时高需求则这些所需页面还被恢复并且那些页面必需被交换入磁盘。注意到如果所需存储器的聚集工作集对于给定应用程序和系统而言太大时,则工作集的子集可能被保持在存储器中,而本发明仍然争取为页面的平衡而提供I/O效率。
然而,在测试许多公共用户场景时,已经示出,即使在相对复杂的工作负荷中引用的总页面数适合当今的存储量。例如,如通过许多实验所确定的,RAM的某些非常重要工作负荷所需的页面能够适合带有384兆字节RAM的机器存储器内,而许多则进入256兆字节的RAM内。由于存储器比所需的大,因此本发明可能预加载适当的页面并消除寻页面错误,并从而允许用户应用程序根据用户输入以全CPU使用率运行。
作为寻页错误消除的结果,本发明允许比目前所做的更主动地管理磁盘。例如,在许多情况下,可能消除一种情况,其中从因磁盘加速旋转而延迟的待机状态中恢复。这样,本发明的前摄和扩展存储器管理的一个重要好处在于,诸如平板式计算装置、笔记本和其它这种装置这样的便携式装置可能运行长时间段而不从磁盘读取。保持磁盘在电池功率下不旋转代表移动用户的重大功率节约进步,这是因为磁盘停止旋转延伸的时间段增加了便携式机器上的电池寿命,并且通常增加了磁盘寿命。
没有磁盘读取,保持磁盘旋转的唯一理由是满足写入。然而,典型的写活动包括向同一磁盘扇区的重复写入,在长时间段上被写入的不同扇区数一般是适度的。因此,如图3所示,使用电池备份的存储器或其它非易失性NVRAM的简单磁盘扇区高速缓存一般能处理写入,其中相对少量任选的(如虚线框所示)非易失性随机存取存储器(NVRAM)302可以成为整个非易失性存储系统300的一部分,这个该系统允许磁盘在不能避免或期望某些写入时仍保持停止旋转,如,当用户保存文档时。在一种实现中,32兆字节的NVRAM启用的测试系统在相对长时间段内脱离这种磁盘相连的写入,该期间内磁盘能够低速停止旋转,而进行像读取电子邮件、浏览网页、编辑并保存文档等这样的普通任务。注意到非易失性随机存取存储器304可以由任选前摄存储装置管理系统304(它可能有些类似于这里所述的前摄存储器管理系统200)前摄地管理,以便在磁盘旋转时把较低值的已存储页面从NVRAM 302交换入磁盘204,从而当磁盘稍后停止旋转时释放空间。
尽管使磁盘停止旋转对第一要求的磁盘存取强加了严重的处罚,然而小心的存储器和扇区高速缓存管理会避免大多数情况下的同步延时。然后,这不会总是可行的,因此操作系统将必需作出关于何时最有利于停止并重启磁盘的策略性判决,在某些情况下,将来的应用也许能够帮助跨越磁盘重启问题。
总而言之,本发明针对一种存储器管理技术,它实质上减少在正常系统使用期间把最慢的组件磁盘用作要素的需求。本发明通过对存储器管理的新的前摄和回弹的方法,用于即使在引导、快速用户切换、或者退出诸如游戏程序这样的大型应用程序后,也交付关于重大存储器相关操作的一致的响应性。本发明还引起从待机足够快的恢复,这在磁盘加速旋转时未受到延时,以及对大且昂贵操作减少了的响应时间,目前这由于所需调页是磁盘相关的。其它好处从自调谐存储器高速缓存和磁盘上的自动文件布置产生,它适于系统使用模式并且提供了改进的总性能。还有其它好处包括大大减少的媒质假信号,通过保护由媒质应用程序所使用的磁盘带宽,保护来自后台活动,譬如防病毒扫描、文件索引器以及会削弱交互应答的登录脚本、以及移动装置延长的电池寿命、低噪声和低振动,这从在长时间段上保持磁盘停止旋转而产生。本发明还导致媒质和eHome型应用改进了的流通性能,它们具有多个后台流。
下列部分描述了各种示例实现,应该注意可以要求仅对某些使用信息的方式来管理存储器。
示例实现下述本发明的至少一种示例实现是在运行微软视窗XP SP1操作系统和WindowsNTFS文件系统的修改了的系统上实现的。然而,并不试图把本发明限制为任意特定的操作系统或存储器管理类型,相反,本发明试图与具有存储器管理系统所管理的存储器的任意计算机一起工作并提供好处,这是由于本发明包括一种推理性且智能的高速缓存管理方案。此外,尽管用磁盘驱动器作为次级存储装置安排了一示例实现,其中存储器从次级存储装置加载,然而显而易见,次级存储装置不必要是磁盘驱动器,并且包括替代物,譬如闪存、网络数据源、磁带驱动器、或实际上任意类型的数据存储,事实上完全无磁盘的计算机系统会大大受到本发明的好处。
按照本发明的一方面,且如图4A和4B的示例实现400所示,已经研发了实现本发明方法的各种机制,用于前摄、回弹且自调谐的存储器管理。这种机制为所引用页面、保护更多有价值页面不受侵蚀、转移后把这些页面预取并恢复至存储器提供了跟踪和记录。这些机制在必要时作为部分内核而运行,但可能还包括用户模式(无特权的)服务。
如上所述,为了跟踪并记录存储器使用及其它环境数据,本发明聚集信息以获得丰富数据,包括哪些页面为当前用户的频繁活动而被存取。例如,可能记录由单独进程或者在专有时间段内整个系统上进行的对页面的每次存取。为此,如图4A所示,在示例存储器管理实现400中,跟踪机制402,即跟踪器,通过监控页面相关的活动404,包括监控对应于被存取页面的存取比特,以及通过在页面错误地被取入存储器时进行观察而跟踪页面索引。
还如图4A所示,跟踪信息由记录器406持续记入数据结构(如,包括一个或多个先前记录408和原始记录410,如下所述),把每一页面标识为文件偏置对,或者对于诸如堆那样私有页面,是工作集虚拟地址对。更具体地说,在一种实现中,跟踪机制402在内核缓冲器(未示出)内记录进程相关的虚拟存储器事件,从内核缓冲器中稍后汇编出原始记录410。可能由跟踪机制402获得的另一有用的信息跟踪页面(当被引用时)是否是存储器驻留的或者是否必需是来自磁盘的硬错误。虚拟存储器事件包括对地址空间和存取计数器的特定页面的初始存取,它们记录页面被重新存取的速率。还包括关于机器状态的信息,以及跟踪时识别的活动环境。对于每一页面而言,可能保持附加的信息,譬如引用每一这种页面的上一次场景的启动,以及类似的系统状态信息。
这样,本发明存储器管理方法的重要基础是记录系统上观察到的存储器管理事件,即,特定进程对虚拟地址空间部分的存取的表示。记录每次存取可能是不可行的,因此在所述实现中以页面粒度来实现该项工作,用于记录第一存取以及与随后存取频率有关的信息。
记录器406通过采用内核跟踪并且把它们格式化为原始记录410而工作。记录器的责任包括确保考虑到资源限制,使得原始记录不会填满用户的磁盘。因而,跟踪被记录在原始记录410中,表示进程的特定实例在某合理短的间隔上的存取模式。例如,可能在单次引导或从休眠的恢复、在诸如引出控制面板等某些用户事件后的时段、在前台应用程序的应用程序时段、在未被标记为特定事件的某时间间隔等等采集记录。
在所述实现中,记录包括标题,它可能包含环境、存储器状态、以及时间信息,并且包括一<源,偏置,硬错误>项目的表格,其中源是在给定偏置处存取的文件或进程地址空间,而硬错误指明了数据是否从磁盘被读取,这提供了对费用的粗略测量。
除了为各种环境跟踪页面使用之外,也可能保持存储器内关于存取模式和单独页面存续期的信息,提供作出关于工作集内页面利用率的更好判决。例如,当代操作系统仅保持每页两比特的寿命信息,借此对于存储器管理器而言,最近(如,在前面几分钟)未被引用的所有页面看上去都是一样的。本发明中,存储器管理器系统已经存取的信息可以包括其中使用每一页面的时段(如,分钟)数,以及其中创建并上一次存取每一页面的时段。为了与本发明保持一致,即使当那些页面被调出磁盘时,机制也保存关于页面的这个信息。换言之,页面不仅在存储器内被跟踪,而当页面在磁盘上时也保持该信息。这个附加的信息提供了关于页面怎样在其存续期内被存取的更准确的形象。
跟踪机制402可以同时工作在多个活动轨迹上。这些轨迹可能包括连续轨迹,例如,可能在它们达到特定大小(如,100000记录点)前或者在它们代表特定期间前(如,五分钟的时间间隔)被依次地组装。注意到一种所实现的跟踪机制具有相对很慢的开销,(如,450MHz处理器的0.1%CPU,加上用于记录一天页面使用的存储器的几兆字节),使得这种连续跟踪关于被引用的页面,而不给系统增加负担。跟踪也可以作为间歇的、采样型操作来进行,譬如自动触发或者响应为测试或训练目的通过GUI工具的请求,这允许采集将与特定活动和转变相关的页面信息,譬如应用程序装载、快速用户切换或待机恢复。
注意到可能执行某些量的预先训练(如,对于其它用户和系统),而非开始对用户/系统从头开始跟踪/记录。这允许在启动时间或者其它适当时间拷贝某些预建立文件以及页面值和信息数据库,譬如当按装应用程序时。这个静态解决方式帮助加速学习曲线,否则,该曲线会在加入新用户、新系统、新操作系统版本和/或新程序时被要求。这样,本发明通过基于值的选择性或总体存储器加载提供了好处,其中至少部分根据预先观察而确定值,无论通过跟踪使用历史,以及/或是通过训练(包括仿真、代码分析、在不同机器上运行、等等)。为了保持该数据,建立、使用并存储与页面使用和值有关的永久性信息存储库,它可能在任意文件内,包括可执行文件、文档、以及专用数据文件和数据库。而且,注意到这种先知知识还提供了立即响应I/O传输中的显著减少,甚至无须通过记录和跟踪来执行动态信息聚集。例如,立即响应I/O传输可以通过简单地提供预建立页面分组文件来减少,如,当用户在第一页面上出错以显示控制面板时,其它相关页面有效地从磁盘被取入存储器。
通过跟踪机制402和这里所述的进一步处理,存储器管理系统建立并保持场景计划(如,文件)422(图4B),它包含可以用于建立文件页面的一个或多个可测量值的数据,譬如使用频率。为此,各种组件可能把数据处理成用于作出存储器管理判决的适当形式,包括集成器412,它基本地把前面的记录408和原始记录410组合成页面信息数据库414。
图4A所示的集成器是一项服务,它可能运行在用户层的进程中,它读取原始记录410、处理它们并且把它们包含的信息与已存储在系统上(如,在前面的记录408内)的类似环境的页面信息集成。最初,可能没有先前信息,但系统会迅速地搜索一状态,其中原始轨迹主要用于为特定环境的在前出现更新并精炼已知的信息。已经实现的一个直接集成器412在给定环境类别的轨迹中为每个所提及的页面保持一个历史比特向量。为了对每个新的实例进行集成,历史比特向量被移位,并且添加新的比特,代表最近的时间段。出现在新记录内的页面具有“1”作为新比特,而其它具有“0”。第一次出现的页面被加入页面信息数据库414,而最近未被使用的页面可能从数据库414被移除。
这样,通过集成器412,覆盖特定事件或间隔的原始记录410与在前记录408集成,后者包含关于类似事件的先前实例的已知信息,譬如同一程序的先前运行,用于提供页面信息数据库414。页面信息数据库414基本上毁坏包含在记录内的信息,以减少跟踪该数据所需的存储器数量,同时重新组织该信息,使得适当地组合类似事件,并且识别原始记录410和先前记录408间文件和页面内的共性。
如图4A和4B所示,可能采用(如,通过挖掘服务420)页面信息数据库414内的信息来产生场景计划422,场景计划指明将来虚拟地址空间的可能组成以及对在特定环境内虚拟空间内页面存取的似然性。如下所述,这些场景计划422由再平衡器424用来预测系统的将来存取,并且允许再平衡器424根据由系统观察到的事件来创建新的存储器管理计划。例如,场景计划可能从页面信息文件的固定集合中建立,该集合包括关于对系统重要的已知场景的信息,譬如启动和关闭系统,以及从休眠恢复。特定的消息用于建立环境。为此,数据可能被加入来自用户所选场景的信息,如,通过交互式的图形工具,而不同的场景可能是可以通过交互式工具修改的给定缺省优先级。
当场景计划422变化时,场景页面优先级器426(如,结合在挖掘服务420内或与其相关的用户模式服务)处理场景计划422以产生一列页面,它们应被取入存储器并且被保护。这种再生成也可能根据自上一次执行起的最大流逝时间而触发,譬如用于确保计划至少每十五分钟重新生成一次。在一种实现中,为了完成优先化,每一页面分配到计算的优先级分数。当确定了分数时,页面然后用它们计算出的分数来排列,从而建立优先化的页面列表428。
对基于频率的使用计分的一种因素是按照数据场景文件通过对页面在最近时间间隔中使用多少次数的计数而确定的,譬如在最近一小时内、最近八小时内、最近一天、最近一周、等等。为此,页面优先化器426保持跟踪各时隙的页面使用频率,譬如一小时、八小时、一天、三天、一周和三周记录。根据在这些记录中每个中页面被使用的次数,页面可能分配到一分数,譬如在0和127之间。
每个场景计划还可能用每次装载的时间信息来跟踪页面最近几次(如,32次)被使用的情况。对页面的最近使用给出较大的权重。而且,可能提高已知场景计划内的页面(譬如为开始菜单保持的场景计划)的分数,从而赋予它们较高的优先级。
页面的分数可能还考虑到其中页面被视作被使用的环境。这样,分数可能是伴随关于机器状态、运行中的应用程序、或最近用户行为而发生的。页面优先级的这种复杂方法可能随时间被精炼。注意到由于每个场景计划保持关于页面被存取的最近运行次数(如,32)的时间和历史信息,因此可能确定特定的文件页面相对于信息被记录的其它页面在场景上被存取的频率。
为了产生事件,如图4B所示,提供了一观察器430。观察器430最好在操作系统内核中包含一监控系统状态的线程,包括物理存储器使用中宣告的变化。此外,当执行某些行动时,可能作出明确的调用来触发状态评估,譬如开始关闭或休眠。而且,应用程序可以调用内核以通知系统潜在关注的状态变化,其中可以应用应用程序选择的标签。
在一种实现中,被跟踪的事件包括应用程序启动和识别的被传递至内核的加窗消息。窗口消息的钩接允许系统检测应用程序或系统组件可能执行重大存储器相关操作的迹象,譬如开始菜单的装载、或者文件打开、打印、或控制面板对话或窗口的创建。直观推断可能用来避免对频繁或接近分组事件的冗余跟踪。根据这些事件,内核通过使用页面的页面表格项上被存取的比特来跟踪单独进程的页面使用。这些比特在跟踪开始时被清除,并且在跟踪结束时被选中。跟踪期间的任何移除或被存取比特的重置也被记录。通过读文件(ReadFile)被存取的页面以及其中执行磁盘读的硬错误被记录。
当观察到系统状态内的变化或者调用指示重要事件时,产生事件432,并且可能用状态评估和更新服务434来更新系统状态。如图4B所示,跟踪可能被启用或终止,以及/或者状态数据(以及其它系统存储器信息)436被传递至那里,再平衡可能被触发。状态包括活动环境以及工作集、零列表、玷污列表、待机页面集之间存储器的当前分布。系统存储器信息包括虚拟地址尺寸和工作集尺寸、进程快拍数据、硬和软的错误、硬件支持的存储器存取比特、由操作系统导出的每页使用信息、以及可以用来确定上述页面值的其它测得或可观察的数据、环境和状态。
如上一般所述,内核或者连续地或者在跟踪结束时产生跟踪缓冲,它包括各种文件、以及各种内部存储器管理计数器所需的特定页面列表,譬如系统和待机页面集组成上有多少零/自由页面。如上所述,跟踪缓冲通过用户层的服务来收集,并且用来更新场景文件,如,保持在预取目录内的文件。场景文件可能根据被跟踪的环境来命名,譬如AppLaunch.WMPlayer.exe-...pfx,或Shell.StartMenuCreate...pfx。
这样,系统事件引起系统状态的再评估,并且可能触发存储器内容的再平衡。环境由标志器来指示,标志器在执行特定系统代码时被激发,环境还通过API等的应用程序来指定。应用程序可能提供UI,用户通过该UI可以指定并标记他或她自身、个性化的环境。可能造成再评估的其它系统事件包括大存储器分配和再分配、进程的启动、或者用户已成为空闲或已恢复工作的检测。这样,存储器管理器和再平衡器424可以对触发/事件/环境采取行动,譬如对当前环境中对哪些可能较需要的页面进行优先化并且相对于其它页面赋予较高的值,以及根据这个新的优先化来预加载存储器。这些环境可以由轨迹处理器用来对被跟踪的页面使用数据进行分类和分组。当被标识后,页面和页面分组在存储器内被重排,譬如把它们交换出,当其中之一出错时同时取入所有相关页面,等等。
存储器再平衡器424在存储器管理系统的预取政策的用户模式和内核模式元件之间相接。如下所述,再平衡器424主要依赖于内核,用以识别并在待机页面集上排列页面、识别低值页面、以及保护高值的页面。除了较高值页面的维持之外,存储器再平衡器424的主要目的在于用场景页面优先化器426已选择的页面来填充存储器,如优先级分数所确定的那样,这通过用较高值页面代替较低值页面来完成。为此,再平衡器424观察场景页面优先化器426和内核存储器内容计数器,以确定它是否需要采取任何行动。注意到来自内核的存储器内容计数器给出关于有多少可用的自由/零页面的信息,以及每个待机页面子集(下述)的统计量,以及譬如已经有多少页面是由于存储器压力而重新产生的。
因而,再平衡器424观察存储器的当前配置,并且可能调用例程来修剪工作集。然后,再平衡器424从该信息确定用于存储预取数据的存储器预算。通过识别提供低利用率的页面而确定在推理性管理的控制下的页面组合,譬如在为系统建立的某边界上具有零值内容的页面。低利用率页面可能还包括具有不在工作集内的有效内容的页面,并且在相对长的时间内未被使用。通过场景页面优先化器426,再平衡器424用场景计划422内的信息在其预算内为存储器建立更理想的内容集合。它可能询问(如,通过API)以确定多少内容在存储器内并且然后修改计划422。
如果存在自由或低值页面,再平衡器424要求系统内核在较高值页面被取入存储器之前使用低优先级预取I/O用较高值页面来填充它们。为此,一旦再平衡器424已建立了按照预算的一页面列表,要加载(并且调出)的一列期望页面就被传递至I/O计划器440。这些I/O指令最好在磁盘队列中排列以使搜索最小化,导致较高的磁盘吞吐量。如果再平衡器424不能取入和它想要取入存储器一样多的页面,则再平衡器424记住它在其列表中的位置以及更多页面何时可用,然后从该点继续预取。
只要当场景页面优先化器426建立一新的页面列表时,或者当被取入存储器的任一预取(回弹)页面由于存储器压力而被重新使用时,存储器再平衡器424就开始从列表开始处进行预取。在再平衡器424预取新的一批页面之前,它清除先前预取的页面上的优先权以使它们可用。
注意到存储器再平衡器424可能被编程,从而相对于它想取入存储器的页面而守恒,以便避免与用户活动的干扰。为此,设置再平衡器用于通过I/O计划器410执行低优先级I/O操作,并且当系统在存储器压力下时可能避免采取行动。例如,可能设置再平衡器424仅替换在相对长的时间内未被使用的页面、以及不是频繁被使用的页面,且如果系统内没有某阈值量时(如,16兆字节)就不采取任何行动,系统的某些较小量(如,6兆字节)是自由、零值或其它低效用页面。
I/O计划器440用以通过发出I/O而取入期望的存储器内容,但受到需要避免由系统引起的其它I/O干扰的限制。这完成的一种方法是等待相对轻I/O活动的时间并且把任务分成相当小的传输尺寸。然而,系统可能通过实现优先级方案来提供这类非干扰。这样,如上所述,周期性的和/或触发时的再平衡器424根据预期的使用、效率等来决定哪些页面应该在存储器内,I/O计划器控制I/O传输,以企图使与其它I/O操作干扰最小的方式根据期望来调节存储器内容。
如图5A所示,在传统的存储器管理中,要被调出的页面首先被加入待机页面列表500,它是一个简单的FIFO列表。作为FIFO列表,所有被加入该列表500的页面都被同等地对待,不考虑它们的重要性。这导致曾为有价值页面的一个页面在不可能使用另一页面时被重新使用,但碰巧稍后落到列表500上。
按照本发明的一方面且如图5B所示,为了以保护更有价值页面的方式来改进该方案,提供了一优先化的待机页面集,即高速缓存502,它考虑到页面的相对值,如通过基于跟踪的优先级计分所确定的。如图5B所示,这种优先化的待机页面集包括子集5020-50215,每个子集都包含分配到一特定优先级的一个或多个页面。注意到图5B仅示出一些(十六个)这样的子集,然而可以容易地理解,任何特定量的这种子集都是可行的,且子集可能为各种尺寸。子集5020是未保护的子集,它的作用就象图5A的现有待机页面集500;未充分被跟踪的页面可能进入该列表。当需要从优先化的待机页面集502中重新使用页面时,该页面就从最低优先级的、非空的子集中被取出。
这样,当关闭文件或修剪工作集时,它的页面进入待机页面集502,根据存储在页面的存储器管理器的PFN数据库项目内的附加扩展的使用信息来确定页面应被放入哪个子集。除了页面存续期和存取频率字段外,还有允许根据来自场景数据库和系统当前环境的信息来设置页面的优先级的字段。
系统的存储器管理政策线程不时地再平衡(如,通过调用再平衡器424,图4B)优先化的待机页面集502,譬如每秒一次。被放入高优先级子集的页面随后在长时间段内未被使用,它们被转入较低优先级子集。
在一种实现中,某些页面被放入最高的优先级子集50215,那些页面不再被重新使用。这提供了一种机制,即使在存储器压力下也能把这些页面锁定在存储器内。注意到这种机制比虚拟锁定(VirtualLock)强,因为需要它们的进程可以离开并回来(实际上可能仍然被创建)。
这样,与本发明一致,这些机制能够选择期望被保持在存储器内的页面。通过把相关优先级分配给场景,更多重要的页面不会在较不重要的页面前被普通地重新使用。而且,可以作出判决,确定可以用来自磁盘的更有价值页面来替换低值或无值页面的集合。
在一种实现中,存储器管理系统把待机页面集分成十六个子集,用来分类页面的不同类别,并且通过对子集排序而允许对某些页面类别较大程度有保护。如上所述,保护有用数据但不再在任一工作集450(图4B)中的页面(譬如文件页面、或用于运行进程的一堆页面)根据存储器再平衡器424在其上设置的优先级、以及/或者根据它在存储器内时的使用模式而被放置在优先化待机页面集502内的特定子集内。如上所述,时间记录可能用来跟踪页面的使用,如,在十秒单位上,对由自从其创建而被存取入的页面周期数、以及为了存取其寿命而存取的页面的上一周期进行计数。
再平衡器424周期性地(譬如每秒一次)通过部分待机页面集502并且重新评估哪个子集是特定页面应放入的子集。通常,长时间未使用的页面被移入适当的较低优先级子集。
表1显示了一种实现怎样确定页面的适当子集。如果应用程序需要存储器且没有可用的自由或零值页面,则待机页面集就会从最低下标的子集起被重新使用表1-待机子集优先化
而且,二十分钟未使用的工作集页面从工作集存储器450被赶入待机页面集502,以使它们可用于优先化的管理。如图4B所示,如在传统分时系统中那样,留下工作集管理器452来管理当前使用的页面,而待机页面集管理通过存储器再平衡器424在较长时间段上管理页面。
概念上地,如表1所示,在这个示例实现中,子集管理系统为待机页面集管理使用基于上一次使用时间和基于频率的分类,分别称为时间筛选和再使用阶梯。时间筛选(如包含在子集5020-5028中)和再使用阶梯(如包含在子集50210-50214中)的概念是最近未使用的页面应该在其它页面前从待机页面集502中被重新使用,但应该对未被频繁使用的页面提供额外保护,即使最近不必要。因而,待机页面集502上的页面被组织成一系列子集,且根据其随时间的缺乏使用或实际使用,那些页面会从更受保护的子集中周期性地被移入较未受保护的子集,或反之亦然。这样,假定稍后不需要未使用的页面,则该未使用的页面会从“5分钟未使用的”子集被移入“10分钟未使用的”子集,到“30分钟未使用的”子集,等等,直到它到达“3天未使用的”子集(或任何最低的子集)。然而,在至少在某合理间隔上有点频繁使用的页面会跳过这些连续层的初始部分,或者可能在较长时间段内停止在某些子集内。
时间筛选和再使用阶梯分类所完成的是把仅被使用了一小段时间的页面与较频繁被使用的页面分开,然后把这些页面优先化到它们相应分类的子集内。时间筛选工作在基于最小最近使用的梯度上,而再使用阶梯工作在基于频率的梯度上。当然,梯度无须被限制为任意特定时间或频率,实际上,它可能根据实际条件而改变,使得页面在子集间移动并且对于给定系统适当地从待机页面集被移除。
注意到第一次从磁盘读取的页面必需放置在待机页面集502的子集上。页面的类别包括预取页面(子集50212)、与普通错误群集的页面(子集5029)、以及通过群集内插至预取的页面(子集5025)。这些页面类别以该顺序被优先化,预取页面放置在再使用阶梯页面中间,内插的预取页面放置在时间筛选页面中间,而普通错误页面放置在再使用阶梯和时间筛选页面之间。
总言之,存储器内所需的较高效用页面被取入待机子集,以保护它们不受正常的存储器压力,造成性能中的大大增益,以及适当地对识别和优先化关键场景作出判决。例如,在256MB系统上,在外壳、组件和应用程序内的许多共同操作中提供了一致响应,即使在转变之后,譬如启动、快速用户切换以及来自大型应用程序的存储器压力。已经一致地实现从待机的快速恢复(如,在两秒之内),而没有重大的磁盘I/O延时。而且,根据这些机制,可能实现能连续处理被捕获场景信息的自调谐政策和一组规则,以确定哪些页面应该在存储器中。
从上述说明中可以理解,由于所需数据的绝对尺寸和需要存取的大量磁盘存储单元,因此从刚巧即时方式的预取中得到的效率增益不能提供接近瞬时的用户体验。相反,为了提供大大改进的体验,本发明认出用户最偏爱的页面以及需要事先被取入存储器的频繁场景。这样,一旦政策管理器已经识别出应该被取入存储器的一组页面,则这些页面应该利用磁盘的空闲周期被预取。然而,把大量(如,几百)推理性异步调页I/O排成队列是高度资源密集型的;例如,如果前台应用程序此时需要来自磁盘的某些东西,则应用程序的请求会被阻塞在磁盘队列中,可能导致非常慢(如,几秒)的不响应时间。单独的空闲检测不能可靠地避免这种情况,这是由于就在当决定把推理性的I/O排队至看似空闲磁盘的磁盘时,用户应用程序总是会出现错误。
如上所述,本发明通过为优先化的I/O提供支持而避免了这个问题,借此如果推理性的预取被发布至低优先级磁盘队列,则它不会引起从以较高优先级队列的前台应用程序中调页请求的巨大延时。
此外,如果高优先级I/O一次发出一个,它们可能与低优先级预取I/O交织。所产生的搜索模式会大大影响磁盘带宽并损害响应时间。因而,为了实际上限制推理性预取I/O的开销,对优先化I/O的支持可能需要与快速且自调谐的空闲检测组合,空闲检测可从其失败和变化模式中得知。当优先化的I/O支持与机制组合以识别并优先化所引用的存储器时,系统能够保护一进程的操作不受到系统上其它进程的干扰。传统上这通过改变进程CPU优先级来实现,但这种优先化不转入磁盘队列或存储器管理,至少不是在通用操作系统中。
图6示出一用于约束的系统,其中为了限制与用户应用程序的干扰,约束框602约束后台活动,譬如防病毒扫描器、文件索引器和登录脚本。约束框602还可以保护媒质应用程序不受磁盘和存储器的干扰,这是音频和视频流中假信号的成因之一,还确保了即使在繁重系统负载下与前台应用程序的交互应答。
存储器管理改进与优先化I/O支持的整合提供了高度响应和可预测的系统的基础。注意到约束框602自身不提供颗粒精细的(如,在100ms之下)资源保证,该保证是更复杂的资源管理器可能提供的,但是约束框限制了对响应时间干扰的负面影响,使得系统总是能响应的。
如上所述,预取是一种机制,页面集根据该机制能从磁盘有效地被读入存储器并且放入特定的待机子集。预取通过对存储器中没有的页面集的异步调页I/O进行排列而进行工作。在本发明中,支持目录页面和其它文件元数据、以及页面-文件页面的预取。根据改进了的预取机制,本发明可以有效地把轨迹中识别的任意页面取入存储器,包括文件页面、页面-文件内的私有(进程堆、内核组合)页面、注册表页面、或者诸如MFT(主文件表)或目录这样的文件系统元数据。
从上述可见,各种前摄存储器管理机制通过确保数据将总是事先在存储器中而为带有大存储器的新机器提供了大大改进的用户体验,机器包括移动设备,譬如平板式电脑、以及台式机和笔记本。方法和机制是前摄的,通过获得丰富信息而处理全局存储器管理(存储器内和磁盘上皆有),并且管理所用使用级别的存储器。还提供了I/O效率以及I/O分类,从而试图实体优化I/O传输同时使干扰最小。更智能管理的、优先化的待机页面集便于优先于较无价值的页面而维持较有价值的页面,还成为利用率估计概念中的因素。跟踪确定了较优化的存储器使用和环境,其中环境包括用户定义的、应用程序定义的、以及系统定义的环境。因而,本发明的综合存储器管理系统和方法提供了当代计算中所需的重大优点和好处。
虽然本发明易受到各种修改和替代结构的影响,然而其中某些所述实施例已在附图中示出并且在上面详细描述。然而,应该理解,并非试图把本发明限制为所公开的特定形式,相反,替代的结构及其等价物也在本发明的精神和范围内。
权利要求
1.计算机系统中,一种方法包括跟踪多个页面的页面使用;根据所跟踪的该页面的使用把一个优先级值与每个被跟踪的页面相关联;以及根据与每个页面集相关的优先级值对存储器中的至少某些页面,相对于另一储存器上的其它页面指定优先级。
2.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括根据与所选页面相关的优先级值而选择其它存储装置上的一个页面,以及把所选页面加载至存储器。
3.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括根据与所选页面相关的优先级值选择存储器中的页面来传输至其它存储装置。
4.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括根据与第一页面相关的优先级值选择其它存储装置上的第一页面,根据与第二页面相关的优先级值选择存储器中的第二页面来传输至其它存储装置,把第二页面从存储器传输至其它存储装置以及把第一页面从其它存储装置加载至存储器。
5.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括选择存储器内的页面集合,以及把该页面集压缩到存储器内较少量的空间中。
6.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括记录页面使用数据的频率。
7.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括记录相应于最后一页使用的时间数据。
8.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括对某时间段内的页面使用进行计数。
9.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括维持相应于页面创建时间的数据。
10.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括维持相应于最后访问页面时间的数据。
11.如权利要求1所述的方法,其特征在于,把优先级值与每个所基于的跟踪页面相关联还包括使至少一个被跟踪页面的优先级值基于该页面的I/O传输的费用。
12.如权利要求1所述的方法,其特征在于还包括,选择对计算机系统可用的至少一个页面子集作为被跟踪的页面。
13.如权利要求12所述的方法,其特征在于,所述一个页面子集包括相应于特定文件的页面。
14.如权利要求12所述的方法,其特征在于,所述一个页面子集包括相应于存储器内特定区段的页面。
15.如权利要求12所述的方法,其特征在于,所述一个页面子集包括相应于存储装置内特定区段的页面。
16.如权利要求1所述的方法,其特征在于,把优先级值与每个被跟踪页面相关联包括把所选页面一起分组页面组,以及维持一个值与该组相关联。
17.如权利要求1所述的方法,其特征在于还包括,根据至少一个准则把所选页面一起分组页面组。
18.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据它们的最后访问时间而组合页面。
19.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据使用模式组合页面。
20.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据使用频率组合页面。
21.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据虚拟位置组合页面。
22.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据物理位置组合页面。
23.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据页面从存储器被修剪的次数而组合页面。
24.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据I/O传输效率组合页面。
25.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据使用页面的进程而组合页面。
26.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据进程生命期信息而组合页面。
27.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据一段时间内的出错信息而组合页面。
28.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据至少一个事件而组合页面。
29.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据使用时间而组合页面。
30.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据指定用户的进程而组合页面。
31.如权利要求17所述的方法,其特征在于,所述把所选页面组成在一起包括根据环境数据而组合页面。
32.如权利要求31所述的方法,其特征在于,所述环境数据是从应用程序中接收到的。
33.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括记录与页面的使用相关的环境数据。
34.如权利要求33所述的方法,其特征在于,所述记录环境数据包括记录功率状态信息。
35.如权利要求33所述的方法,其特征在于,所述记录环境数据包括记录磁盘状态信息。
36.如权利要求33所述的方法,其特征在于,所述记录环境数据包括记录事件信息。
37.如权利要求36所述的方法,其特征在于,所述记录事件信息包括记录与存储器相关的事件。
38.如权利要求37所述的方法,其特征在于,所述记录与存储器相关的事件包括记录与计算机系统的休眠状态有关的信息。
39.如权利要求37所述的方法,其特征在于,所述记录与存储器相关的事件包括记录与计算机系统的待机状态有关的信息。
40.如权利要求37所述的方法,其特征在于,所述记录与存储器相关的事件包括记录与计算机系统上计算机程序的执行有关的信息。
41.如权利要求1所述的方法,其特征在于还包括,根据多个页面使用因数计算所选页面的优先级值。
42.如权利要求41所述的方法,其特征在于,所述计算优先级值包括数学上组合页面使用频率数据与所选页面的最后一页使用时间的信息。
43.如权利要求41所述的方法,其特征在于,所述根据多个页面使用因数计算优先级包括相对于另一因数而加权一个页面使用因数。
44.如权利要求1所述的方法,其特征在于还包括根据它们分别的优先级值而对页面进行排序,其中对存储器内至少某些页面指定优先级包括根据排序以预取顺序把页面从另一存储装置中预取至存储器。
45.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括根据与每个所选页面相关的优先级值把所选页面从其它存储装置读入存储器内的待机页面集。
46.如权利要求45所述的方法,其特征在于,所述待机页面集包括多个子集,该方法进一步包括,根据为该页面检测到的使用数据而把页面从待机页面集的一个子集逻辑上移动到另一子集。
47.如权利要求46所述的方法,其特征在于,所述把页面从待机页面集的一个子集逻辑上移动到另一子集包括把该页面从基于频率的子集移至基于上一次使用时间的子集。
48.如权利要求46所述的方法,其特征在于,所述把页面从待机页面集的一个子集逻辑上移动到另一子集包括把页面从基于上一次使用时间的子集移至基于频率的子集。
49.如权利要求1所述的方法,其特征在于还包括,把与至少某些页面相关的值保存至永久存储器中。
50.如权利要求1所述的方法,其特征在于还包括,把与至少某些页面的被跟踪页面使用相对应的数据保存至永久存储器中。
51.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括评估页面访问信息。
52.如权利要求51所述的方法,其特征在于,所述评估页面访问信息包括读取页面表格项目访问比特。
53.如权利要求51所述的方法,其特征在于,所述评估页面访问信息包括在重置页面访问信息时进行评估。
54.如权利要求51所述的方法,其特征在于,所述评估页面访问信息包括确定重置页面访问信息的速率。
55.如权利要求54所述的方法,其特征在于还包括记录该速率。
56.如权利要求51所述的方法,其特征在于,所述评估页面访问信息包括确定页面被访问的速率。
57.如权利要求56所述的方法,其特征在于还包括记录该速率。
58.如权利要求51所述的方法,其特征在于,所述评估页面访问信息包括检测页面出错。
59.如权利要求58所述的方法,其特征在于,所述检测页面出错包括检测硬出错。
60.如权利要求58所述的方法,其特征在于,所述检测页面出错包括检测软转换出错。
61.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括检测文件读和写请求。
62.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括读取进程工作集信息。
63.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括当页面被传出存储器时记录数据。
64.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括当页面从工作集被修剪时记录数据。
65.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括响应事件或环境而记录数据。
66.如权利要求65所述的方法,其特征在于,所述数据是响应所交换的任务而被记录。
67.如权利要求65所述的方法,其特征在于,所述数据是响应所创建的窗口而被记录。
68.如权利要求65所述的方法,其特征在于,所述数据是响应所检测的活动而被记录。
69.如权利要求65所述的方法,其特征在于,所述所检测的活动包括其中窗口具有焦点的变化。
70.如权利要求68所述的方法,其特征在于,所述所检测的活动包括用户输入事件。
71.如权利要求65所述的方法,其特征在于,所述数据是响应计算机系统的与休眠相关的事件而被记录。
72.如权利要求65所述的方法,其特征在于,所述数据是响应计算机系统的与待机相关的事件而被记录。
73.如权利要求65所述的方法,其特征在于,所述数据是响应计算机系统的与系统启动相关的事件而被记录。
74.如权利要求65所述的方法,其特征在于,所述数据是响应程序启动而被记录。
75.如权利要求65所述的方法,其特征在于,所述数据是响应程序关闭而被记录。
76.如权利要求65所述的方法,其特征在于,所述数据是响应用户登录而被记录。
77.如权利要求65所述的方法,其特征在于,所述数据是响应网络连接事件而被记录。
78.如权利要求65所述的方法,其特征在于,所述数据是响应与媒体相关的事件而被记录。
79.如权利要求65所述的方法,其特征在于,所述数据是响应与程序专用的环境而被记录。
80.如权利要求1所述的方法,其特征在于,所述对至少某些页面指定优先级包括根据与所选页面相关的优先级值选择其它存储装置上的页面,以及把所选页面载入背景操作中的存储器中。
81.如权利要求80所述的方法,其特征在于,所述把所选页面载入背景操作中的存储器中包括获得空闲优先级数据。
82.如权利要求80所述的方法,其特征在于,所述把所选页面载入背景操作中的存储器中包括观察I/O模式以确定传输时间。
83.如权利要求82所述的方法,其特征在于,所述传输时间是根据传输不会与前台I/O传输重叠的似然性而确定的。
84.如权利要求82所述的方法,其特征在于,所述传输时间是根据传输不会导致搜索的似然性而确定的,该搜索会减慢前台I/O传输。
85.如权利要求82所述的方法,其特征在于,所述传输时间根据处理器使用来调度。
86.如权利要求80所述的方法,其特征在于,所述把所选页面载入背景操作中的存储器中包括产生哑报文分组以避免优先级倒置。
87.如权利要求80所述的方法,其特征在于,所述把所选页面载入背景操作中的存储器中包括根据当前用户输入、当前处理器使用、以及当前磁盘使用而确定系统为空闲。
88.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括把页面使用数据记录到日志中。
89.如权利要求1所述的方法,其特征在于,所述跟踪页面使用包括把当前页面使用数据与先前的页面用户使用数据合并。
90.如权利要求1所述的方法,其特征在于,所述先前的页面使用数据包括从把页面使用记录为在至少一个其它计算机系统上受训所获得的数据。
91.如权利要求1所述的方法,其特征在于,所述先前的页面使用数据包括与其它页面数据分组后的预先建立的页面数据。
92.一种具有用于执行权利要求1所述方法的计算机可执行指令的计算机可读媒质。
93.计算环境中,一种系统包括跟踪机制,用于跟踪多个页面的存储器页面使用;优先化机制,至少部分根据为该页面而跟踪的存储器页面使用而把一个得分数与每个被跟踪的页面相关联;以及再平衡器,用于根据与每个被跟踪页面相关的得分数确定哪些页面在存储器中。
94.如权利要求93所述的系统,其特征在于,所述再平衡器根据所选页面的得分数而把存储器外的所选页面传输至另一存储装置。
95.如权利要求93所述的系统,其特征在于,所述其它存储装置包括非易失性随机存取存储器。
96.如权利要求93所述的系统,其特征在于,所述其它存储装置包括磁盘。
97.如权利要求93所述的系统,其特征在于,所述再平衡器根据所选页面的得分数把该所选页面从另一存储装置中取来至存储器中。
98.如权利要求93所述的系统,其特征在于还包括与跟踪机制相连的登录机制,所述登录机制用于把跟踪机制的输出排列成格式化日志。
99.如权利要求93所述的系统,其特征在于,所述格式化日志包括标题和项目表。
100.如权利要求99所述的系统,其特征在于,所述标题包括与存储器页面使用相关的环境信息。
101.如权利要求99所述的系统,其特征在于,所述标题包括与存储器页面使用相关的存储器状态信息。
102.如权利要求99所述的系统,其特征在于,所述标题包括与存储器页面使用相关的时间信息。
103.如权利要求99所述的系统,其特征在于,每个项目包括文件或过程地址空间的源数据和偏移数据。
104.如权利要求99所述的系统,其特征在于,每个项目还包括指示该页面是从磁盘读取的数据。
105.如权利要求98所述的系统,其特征在于还包括集成器,用于格式化日志与前面所获数据集成在集成数据内。
106.如权利要求105所述的系统,其特征在于,所述集成器把集成数据保存在页面信息数据库内。
107.如权利要求106所述的系统,其特征在于还包括一挖掘服务,根据页面信息数据库内的集成数据形成至少一种场景计划。
108.如权利要求107所述的系统,其特征在于,所述优先化机制存取场景计划以把得分数与每个被跟踪的页面相关联。
109.如权利要求93所述的系统,其特征在于,所述跟踪机制为多个页面的每一页记录页面使用频率的数据。
110.如权利要求93所述的系统,其特征在于,所述跟踪机制记录与上一页面使用时间相对应的基于时间的数据。
111.如权利要求93所述的系统,其特征在于,所述跟踪机制记录与页面使用相关联的环境数据。
112.如权利要求111所述的系统,其特征在于,所述环境数据对应于计算机系统的状态。
113.如权利要求93所述的系统,其特征在于,所述优先化机制根据页面的相应得分数相对地排列页面,而再平衡器根据该排列把页面预先取至存储器中。
114.如权利要求93所述的系统,其特征在于还包括存储器内的待机页面集,其中再平衡器从其它存储装置把所选页面读入待机页面集。
115.如权利要求114所述的系统,其特征在于,所述待机页面集包括多个子集,其中再平衡器根据为页面检测到的使用数据把该页面从空闲页面集的一个子集逻辑地移至另一子集。
116.如权利要求115所述的系统,其特征在于,所述把页面从待机页面集的一个子集逻辑地移至另一子集包括把基于上一次使用时间子集间的页面移至基于频率的子集。
117.如权利要求93所述的系统,其特征在于还包括观察器,用于产生与存储器有关的事件。
118.如权利要求117所述的系统,其特征在于还包括更新机制,它从观察器接收事件并且触发再平衡器。
119.如权利要求118所述的系统,其特征在于,所述事件之一包括任务切换事件。
120.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于窗口创建的事件。
121.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于所提供对话框的事件。
122.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于窗口焦点改变的事件。
123.如权利要求118所述的系统,其特征在于,所述事件之一包括用户输入事件。
124.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于程序启动的事件。
125.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于程序关闭的事件。
126.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于系统引导的事件。
127.如权利要求118所述的系统,其特征在于,所述事件之一包括登录事件。
128.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于系统关闭的事件。
129.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于进入待机模式的事件。
130.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于从待机模式恢复的事件。
131.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于进入休眠模式的事件。
132.如权利要求118所述的系统,其特征在于,所述事件之一包括从休眠模式恢复的事件。
133.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于不同用户操作系统的的事件。
134.如权利要求118所述的系统,其特征在于,所述事件之一包括媒质开始的事件。
135.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于正在播放的媒质的结束的事件。
136.如权利要求118所述的系统,其特征在于,所述事件之一包括视频时移的事件。
137.如权利要求118所述的系统,其特征在于,所述事件之一包括与系统远程连接的事件。
138.如权利要求118所述的系统,其特征在于,所述事件之一包括对应于程序指定的环境的事件。
139.如权利要求117所述的系统,其特征在于还包括一更新机制,它从观察器接收事件并把状态数据提供给跟踪机制。
140.如权利要求139所述的系统,其特征在于,所述状态数据包括与文件有关的请求。
141.如权利要求139所述的系统,其特征在于,所述状态数据包括与过程的存储器使用有关的数据。
142.如权利要求117所述的系统,其特征在于还包括与再平衡器相连的I/O计划器机制,用于在存储器和次级存储装置之间传输页面。
143.如权利要求93所述的系统,其特征在于,所述I/O计划器机制在后台操作中传输页面。
144.如权利要求143所述的系统,其特征在于,所述I/O计划器机制观察I/O模式以确定可能不会与前台I/O传输干扰的传输时间。
145.如权利要求143所述的系统,其特征在于,所述I/O计划器机制确定可能不会造成会减慢前台I/O传输的搜索的传输时间。
146.如权利要求143所述的系统,其特征在于,所述I/O计划器机制产生哑分组以避免优先级倒置。
147.如权利要求143所述的系统,其特征在于,所述I/O计划器评估当前处理器使用和当前磁盘使用以确定空闲计算状态。
148.如权利要求93所述的系统,其特征在于,所述I/O计划器机制在前台操作中传输页面。
149.一种其上存储有数据结构的计算机可读媒质,其特征在于包括待机页面集,用于逻辑地存储存储器的页面;待机页面集内的多个子集,每个子集对应于与其中页面相关的值;以及根据为页面测得的使用信息再平衡待机页面集而在子集间移动页面。
150.如权利要求149所述的数据结构,其特征在于,所述待机页面集包括待机页面集内的至少一个基于频率的子集,用于按照页面已被存取的频度来存储页面。
151.如权利要求149所述的数据结构,其特征在于,所述待机页面集包括待机页面集内的至少一个基于上一次使用时间的子集,用于按照页面已被存取离现在的时间而存储页面。
152.如权利要求149所述的数据结构,其特征在于,所述待机页面集包括待机页面集内的至少一个基于频率的子集,用于按照页面已被存取的频度来存储页面;以及待机页面集内的至少一个基于上一次使用时间的子集,用于按照页面已被存取离现在的时间而存储页面,所述待机页面集根据时间数据在基于上一次使用时间的子集和基于频率的子集间移动页面而被再平衡。
153.如权利要求149所述的数据结构,其特征在于,所述待机页面集包括待机页面集内的多个基于频率的子集,所述待机页面集根据时间数据在基于频率的子集间移动页面而被再平衡。
154.如权利要求153所述的数据结构,其特征在于,所述至少一个基于频率的子集对应于每时间周期的使用计数。
155.如权利要求154所述的数据结构,其特征在于,所述至少一个其它的基于频率的子集对应于每另一时间周期的使用计数。
156.如权利要求155所述的数据结构,其特征在于,所述时间周期长度不等。
157.如权利要求149所述的数据结构,其特征在于,所述待机页面集包括待机页面集内的多个基于上一次使用时间的子集,待机页面集根据时间数据在基于上一次使用时间的子集之间移动页面而被再平衡。
158.如权利要求149所述的数据结构,其特征在于,所述至少一个子集存在于用于用从次级存储装置预先取来的页面填充的待机页面集内。
159.如权利要求149所述的数据结构,其特征在于,所述至少一个子集存在于用于存储被锁入存储器的页面的待机页面集内。
160.如权利要求149所述的数据结构,其特征在于,所述至少一个子集存在于用于存储没有相关得分数的页面的待机页面集内。
161.一种计算机实现的方法,其特征在于包括根据与每个被标识页面相关的页面值数据而标识存储器内的页面和次级存储装置内保持的页面;以及用来自次级存储装置的至少某些页面填充存储器,包括在接收到对具有较高值的至少某些页面的需求之前,用来自次级存储装置的具有相对较高值的至少某些页面替换存储器中具有相对较低值的至少某些页面。
162.如权利要求161所述的方法,其特征在于,所述标识页面的值包括根据当前环境建立一个值。
163.如权利要求161所述的方法,其特征在于,所述标识存储器内页面的值以及次级存储装置内所保持的页面的值包括标识低值页面和高值页面。
164.如权利要求161所述的方法,其特征在于还包括,在接收到对具有较高值的至少某些页面的需求之前,压缩存储器内具有相对较低值的至少某些页面,从而为来自次级存储装置的具有相对较高值的至少某些页面提供空间。
165.如权利要求161所述的方法,其特征在于还包括确定页面值数据。
166.如权利要求165所述的方法,其特征在于还包括,所述确定页面值数据包括来自文件的至少部分页面值数据。
167.如权利要求166所述的方法,其特征在于还包括,所述文件包括从测量另一计算机系统上页面使用获得的训练数据。
168.如权利要求165所述的方法,其特征在于,所述确定页面值数据包括跟踪页面使用以确定至少一部分页面值数据。
169.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括跟踪存取图形。
170.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括跟踪存取频率。
171.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括记录相应于上一次页面使用的时间数据。
172.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括对某一时间段内的页面使用进行计数。
173.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括维持相应于页面建立时间的数据。
174.如权利要求168所述的方法,其特征在于还包括,把相应于至少某些页面被跟踪的页面使用的数据保存至永久存储中。
175.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括评估页面存取信息。
176.如权利要求175所述的方法,其特征在于,所述评估页面存取信息包括读取页面表格项目存取比特。
177.如权利要求175所述的方法,其特征在于,所述评估页面存取信息包括在重置页面存取信息时进行评估。
178.如权利要求175所述的方法,其特征在于,所述评估页面存取信息包括确定重置页面存取信息的速率。
179.如权利要求178所述的方法,其特征在于还包括,记录该速率。
180.如权利要求175所述的方法,其特征在于,所述评估页面存取信息包括确定页面被存取所用的速率。
181.如权利要求180所述的方法,其特征在于还包括,记录该速率。
182.如权利要求175所述的方法,其特征在于,所述评估页面存取信息包括检测页面出错。
183.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括检测文件读和写请求。
184.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括至少下列之一读取过程工作集信息,在页面被传出存储器时记录数据,以及在从工作集修剪页面时记录数据。
185.如权利要求168所述的方法,其特征在于,所述跟踪页面使用包括响应事件或环境而记录数据。
186.如权利要求185所述的方法,其特征在于,数据对至少下列之一响应而被记录交换的任务、建立的窗口、检测到的行为、窗口已聚焦的变化、用户输入事件、与计算机系统的休眠相关事件、与计算机系统的待机相关事件、与计算机系统的系统引导相关事件、程序启动、程序关闭、系统用户的变化、登录、以及网络连接事件、与媒质相关事件。
187.如权利要求186所述的方法,其特征在于,所述数据响应于程序特定的环境被记录。
188.如权利要求165所述的方法,其特征在于,所述确定页面值数据包括确定至少一个页面的I/O传输的费用。
189.如权利要求165所述的方法,其特征在于,所述确定页面值数据包括根据多个页面使用因子为所选页面计算优先级值。
190.如权利要求189所述的方法,其特征在于,所述根据多个页面使用因子计算优先级值包括相对于另一因子加权一个页面使用因子。
191.如权利要求165所述的方法,其特征在于,所述确定页面值数据包括为所选页面数学上把页面使用频率数据与上一次页面使用信息的时间相组合。
192.如权利要求165所述的方法,其特征在于,所述标识存储器内负面包括,选择计算机系统可用的一个页面子集。
193.如权利要求192所述的方法,其特征在于,所述页面子集包括相应于特定文件的页面。
194.如权利要求193所述的方法,其特征在于,所述页面子集包括相应于存储器内特定区段的页面。
195.如权利要求193所述的方法,其特征在于,所述页面子集包括相应于存储装置内特定区段的页面。
196.如权利要求161所述的方法,其特征在于还包括,把所选择的页面组合到一个页面组,并且保持页面值数据与该组相关联。
197.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据它们上一次存取时间分组页面。
198.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括使用图形分组页面。
199.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据使用频率分组页面。
200.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据虚拟位置分组页面。
201.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据使用时间分组页面。
202.如权利要求196所述的方法,其特征在于,所述使用时间包括星期几的信息。
203.如权利要求196所述的方法,其特征在于,所述使用时间包括日时信息。
204.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据物理位置分组页面。
205.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据页面从存储器中被修剪的次数来分组页面。
206.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据I/O传输效率来分组页面。
207.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据哪个进程使用该页面来分组页面。
208.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据进程的生命周期信息分组页面。
209.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据出错信息分组页面。
210.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据至少一个事件分组页面。
211.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据指定用户的进程分组页面。
212.如权利要求196所述的方法,其特征在于,所述把所选页面分组在一起包括根据环境数据分组页面。
213.如权利要求212所述的方法,其特征在于还包括,从应用程序接收环境数据。
214.如权利要求212所述的方法,其特征在于还包括,记录与页面使用相关的环境数据。
215.如权利要求214所述的方法,其特征在于,所述记录环境数据包括记录功率状态信息。
216.如权利要求214所述的方法,其特征在于,所述记录环境数据包括记录磁盘状态信息。
217.如权利要求214所述的方法,其特征在于,所述记录环境数据包括记录事件信息。
218.如权利要求217所述的方法,其特征在于,所述记录事件信息包括记录与存储器相关的事件。
219.如权利要求161所述的方法,其特征在于还包括,根据所标识页面相应的页面值数据排列所标识的页面,且其中填充存储器包括以基于排列的顺序把页面加载至存储器。
220.如权利要求161所述的方法,其特征在于,所述填充存储器包括从次级存储装置把所选页面加载至存储器内的待机页面集。
221.如权利要求220所述的方法,其特征在于,所述待机页面集包括多个子集,并且还包括,根据为页面检测到的使用数据把页面从待机页面集的一个子集逻辑地移至另一个子集。
222.如权利要求221所述的方法,其特征在于,所述逻辑地移动页面包括把页面从基于频率的子集移至基于上一次使用时间的子集。
223.如权利要求221所述的方法,其特征在于,所述逻辑地移动页面包括把页面从基于上一次使用时间的子集移至基于频率的子集。
224.如权利要求161所述的方法,其特征在于还包括,把与至少与某些页面相关的页面值数据保存至永久存储器中。
225.如权利要求161所述的方法,其特征在于,所述填充存储器包括在后台操作中把页面加载至存储器。
226.如权利要求225所述的方法,其特征在于,所述在后台操作中把页面加载至存储器包括获得空闲优先级数据。
227.如权利要求225所述的方法,其特征在于,所述在后台操作中把页面加载至存储器包括观察I/O模式以确定传输时间。
228.如权利要求227所述的方法,其特征在于,所述传输时间是根据传输不会与前台I/O传输重叠的似然性而确定的。
229.如权利要求227所述的方法,其特征在于,所述传输时间是根据传输不会造成减慢前台I/O传输的搜索的似然性而确定的。
230.如权利要求225所述的方法,其特征在于,所述在后台操作中把页面加载至存储器包括评估当前处理器使用和当前磁盘使用。
231.如权利要求161所述的方法,其特征在于,所述组装存储器包括在前台操作中把页面加载至存储器。
232.一种计算机可读媒质,具有用于执行权利要求61的方法的计算机可执行指令。
233.一种计算机实现的方法,包括观察对存储器页面的需求;根据观察到的需求确定页面的值;以及根据页面值加载至少一部分存储器。
234.如权利要求233所述的方法,其特征在于,所述加载至少一部分存储器包括根据值来选择页面。
235.如权利要求233所述的方法,其特征在于,所述加载至少一部分存储器包括加载整个存储器。
236.如权利要求233所述的方法,其特征在于,所述观察对存储器页面的需求包括跟踪实际的页面使用。
237.如权利要求233所述的方法,其特征在于,所述观察对存储器页面的需求包括训练以确定可能需要的页面。
238.如权利要求237所述的方法,其特征在于,所述训练以确定可能需要的页面包括模拟页面使用。
239.如权利要求237所述的方法,其特征在于,所述训练以确定可能需要的页面包括分析代码。
240.如权利要求237所述的方法,其特征在于,所述训练以确定可能需要的页面包括在训练计算机系统上运行程序,并且把这些值用在另一计算机系统上。
241.如权利要求233所述的方法,其特征在于还包括,建立包括值在内的信息永久存储库,并把永久存储库存储在文件中。
242.如权利要求233所述的方法,其特征在于,所述加载至少一部分存储器包括加载空闲的存储器。
243.如权利要求233所述的方法,其特征在于还包括,标识存储器内的低值页面,其中加载至少一部分存储器包括替换至少某些低值页面。
244.一种计算机可读媒质,具有用于执行权利要求243的方法的计算机可执行指令。
245.一种计算机实现的方法,包括标识低值页面;以及把存储器管理信息保持在存储器中,包括关于低值页面的信息。
246.如权利要求245所述的方法,其特征在于,所述保持存储器管理信息包括保持丰富使用信息,所述信息包括模式、频率、分组和环境信息中的至少一种。
247.如权利要求245所述的方法,其特征在于,所述保持存储器管理信息包括为曾经在存储器中但现在不在存储器中的页面、以及为未曾在存储器中的页面保持数据。
248.如权利要求245所述的方法,其特征在于,所述保持存储器管理信息包括保持丰富使用信息,所述信息包括模式、频率、分组和环境信息中的至少一种,还包括为曾经在存储器中但现在不在存储器中的页面、以及为未曾在存储器中的页面保持数据。
249.如权利要求248所述的方法,其特征在于,所述保持丰富使用信息包括保持包含对于页面的丰富使用信息的工作集项目,这些丰富使用信息属于不再在存储器中但在工作集的地址空间内有效的页面。
250.如权利要求248所述的方法,其特征在于,所述保持丰富使用信息包括分配物理页面描述符和项目,用于为离开存储器的页面保持丰富使用信息。
251.如权利要求245所述的方法,其特征在于,所述保持存储器管理信息包括在存储器中保持统计量,从该统计量可能导出由模式、频率、分组和环境信息中的至少一种组成的丰富使用信息。
252.如权利要求251所述的方法,其特征在于,所述保持统计量包括保持每页面项目。
253.如权利要求251所述的方法,其特征在于,所述保持统计量包括保持页面组的项目。
254.如权利要求245所述的方法,其特征在于,所述保持统计量包括保持文件的项目。
255.如权利要求245所述的方法,其特征在于,所述保持统计量包括保持关于至少一个页面的状态数据。
256.如权利要求255所述的方法,其特征在于,所述状态数据包括关于页面何时从存储器中被移去的数据。
257.如权利要求255所述的方法,其特征在于,所述状态数据包括关于页面何时被加载入存储器的数据。
258.如权利要求245所述的方法,其特征在于还包括,用存储器管理信息把存储器内的页面优先级化为子集。
259.如权利要求245所述的方法,其特征在于还包括,用存储器管理信息来防止重新使用更有价值的页面。
260.如权利要求245所述的方法,其特征在于还包括,根据丰富使用信息重新优先级化存储器内的页面,丰富使用信息包括模式、频率、分组和环境信息中的至少一种。
261.一种计算机可读媒质,带有用于执行权利要求245所述方法的计算机可执行指令。
262.一种计算机实现的方法,包括捕获关于存储器使用的丰富信息,所述丰富信息包括模式、频率、分组和环境信息中的至少一种,以及持续把丰富信息放入文件。
263.如权利要求262所述的方法,其特征在于,所述捕获丰富信息包括对实际页面使用进行采样。
264.如权利要求262所述的方法,其特征在于,所述捕获丰富信息包括跟踪实际页面使用。
265.一种计算机可读媒质,带有用于执行权利要求262所述方法的计算机可执行指令。
266.在带有存储器和次级存储装置的计算环境中,一种方法包括接收与环境有关的事件;以及响应于该事件优先级化存储器,使得更可能在环境中被使用的页面的值高于较不可能被使用的页面值。
267.如权利要求266所述的方法,其特征在于,所述优先级化存储器包括把子集改变为存储器页面被分类的子集。
268.如权利要求266所述的方法,其特征在于,所述优先级化存储器包括把至少一个页面从次级存储装置加载至存储器。
269.如权利要求266所述的方法,其特征在于,所述优先级化存储器包括用来自次级存储装置的页面代替存储器中的页面。
全文摘要
一种前摄、回弹且自调谐的存储器管理系统和方法,它在实际需要数据之前,通过把可能被需要的数据加载入存储器而造成存储器管理中实际且观察得到的性能改进。系统包括针对历史存储器使用监控、存储器使用分析、用高的值(如,频繁使用的)页面刷新存储器、I/O预取效率、以及主动磁盘管理的机制。根据存储器使用信息,页面用相关值来优先级化,且机制用于预取并且/或者把更有价值的值保持在存储器内。页面被预取并保持在优先级化的待机页面集内,该待机页面集包括许多子集,借此更有价值的页面优先于较无价值的页面留在存储器内。被调页的有价值数据可能以回弹方式自动被取回。好处包括大大降低或甚至消除由存储器页面出错产生的磁盘I/O。
文档编号G06F9/30GK1510579SQ0314340
公开日2004年7月7日 申请日期2003年9月29日 优先权日2002年10月4日
发明者S·塞克雷斯特, S 塞克雷斯特, M·R·福尔廷, 福尔廷, M·伊伊根, 粮, C·埃尔甘 申请人:微软公司