用于创建低功率区域的动态存储器分配和重新定位的制作方法

文档序号:6440279阅读:160来源:国知局
专利名称:用于创建低功率区域的动态存储器分配和重新定位的制作方法
用于创建低功率区域的动态存储器分配和重新定位
背景技术
计算机存储器是消耗能量并且生成热的硬件组件之一。对于大型数据中心,能量消耗和热是操作数据中心的总成本的两个主要组成。在这样的数据中心中,大量的冷却系统可能消耗操作数据中心的成本的一半以上。一些计算机系统可以具有在不同模式中操作存储器组件的能力,其中每个模式可能需要不同量的功率。在这样的计算机系统中,存储器组件的能量消耗可以与存储设备的响应时间、性能或者其它度量有关。例如,以高功率模式操作的存储器组件可以容易用于访问、因此具有很快的响应时间。在减少的功率模式中的存储器组件可能更慢操作或者可以通过返回到高功率状态来操作以对访问请求做出响应,这可能不利地影响响应时间。

发明内容
可以在计算机系统内分配和重新分配存储对象以将不频繁使用的存储对象合并到可以在更低功率操作的存储区域。在存储对象的初始分配期间,对象可以放置于高功率区域内。在后续定期分析期间,在高功率区域中的不频繁使用的存储对象可以被重新定位至更低功率区域,而在低功率区域中的频繁使用的存储对象可以移到高功率区域。各种试探或者逻辑可以用来操纵不可移动对象、在过程之间共享的对象和其它类型的对象。提供这一发明内容以简化形式介绍下文在具体实施方式
中进一步描述的概念的选择。这个发明内容并非为了标识要求保护的主题的关键特征或者实质特征、也并非为了用来限制要求保护的主题的范围。


在附图中
图1是示出了具有存储管理器的系统的一个实施例的示意图解。图2是示出了用于正常操作存储管理器的方法的一个实施例的示意流程图解。图3是示出了用于为新对象分配存储器的方法的一个实施例的示意流程图解。图4是示出了用于对存储器中的对象重新定位的方法的一个实施例的示意流程图解。
具体实施例方式根据存储对象的访问频率来放置存储对象可以允许在维持可接受的性能水平之时在低功率状态下操作一些存储区域。计算机系统可以具有多个存储区域,每个区域可独立控制成在不同功率水平操作。在高功率水平,存储区域可以具有最快响应时间和最高性能,而在更低功率水平,存储区域可以具有减少的性能、但是可以消耗更少能量并且生成更少热。存储对象可以在存储区域之间移动以将不那么频繁访问的对象合并到可以在更低功率水平操作的功率区域中,并将更频繁访问的对象合并到可以在更高功率水平操作的功率区域中。可以基于工作量以及针对性能和能量消耗的目标向各种功率水平分配存储区域。 可以定期比较存储区域的实际性能与所需性能。当实际性能与所需性能不匹配时,可以对存储器中的对象重新定位以优化性能或者能量消耗或者可以让更多存储区域在更高功率水平操作。当分配或者重新定位存储对象时,可以放置对象以便平衡存储器的负荷。例如,当将高度访问的存储对象放置到在高功率水平操作的一组存储区域中时,对象可以放置于该组的最少使用的存储区域中。这样的机制可以在存储区域之间分散工作量,这可以导致性能或者能量消耗方面的益处。在本说明书全文中,分别使用术语“热”和“冷”作为用于表明频繁或者不频繁访问的项目的简化表示。该术语可以应用于存储对象,其中可以很频繁地访问热对象而不频繁地访问冷对象。该术语也可以应用于存储区域,其中热存储区域可以是在高功率水平操作的存储区域并且可以对存储器访问恰当响应。相反,冷存储区域可以在低功率水平操作并且可以对存储器访问更少响应。该术语还可以应用于比较不同存储区域或者存储对象, 其中可以比更冷区域或者对象更频繁地访问更热区域或者对象。在本说明书和权利要求全文中,术语“存储对象”表明存储于存储器中的项目。在一些实施例中,存储对象可以是可以被分配用来存储部分信息的个别存储器页面或者区段,并且许多存储对象或者存储器页面可以用来存储单个数据项目、可执行图像或者其它信息。术语“存储对象”旨在于作为用于存储于存储器中的信息单位的通用术语。在一些实施例中,存储对象可以大小不同。在本说明书和权利要求全文中,术语“存储区域”表明可以具有独立可控功率设置的一组存储器。功率设置可以限定存储区域相对于该区域的性能可能需要多少功率。在一些情况下,存储区域可以包括多个硬件存储设备。在本说明书全文中,相似标号在对附图的描述全文中表示相同元件。当元件称为“连接”或者“耦合”时,元件可以直接连接或者耦合在一起或者也可以存在一个或者多个居间元件。对照而言,当单元称为“直接连接”或者“直接耦合”时无居间元件存在。本主题可以实施为设备、系统、方法和/或计算机程序产品。因而可以用硬件和/ 或用软件(包括固件、常驻软件、微代码、状态机、门阵列等)实施一些或者所有主题。另外, 主题可以采用计算机可用或者计算机可读存储介质上的计算机程序产品这一形式,该介质具有收录于介质中用于由指令执行系统使用或者与指令执行系统结合使用的计算机可用或者计算机可读程序代码。在本文件的上下文中,计算机可用或者计算机可读介质可以是任何如下介质,该介质可以包含、存储、传达、传播或者传送用于由指令执行系统、装置或者设备使用或者与指令执行系统、装置或者设备结合使用的程序。计算机可用或者计算机可读介质可以例如是但不限于电子、磁、光学、电磁、红外线或者半导体系统、装置、设备或者传播介质。举例而言而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括用任何用于存储信息(例如计算机可读指令、数据结构、程序模块或者其它数据)的方法或者技术实施的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、R0M、EEPR0M、闪存或者其它存储器技术、CD-ROM、数字万用盘(DVD)或者其它光学存储、磁盒、磁带、磁盘存储或者其它磁存储设备或者任何可以用来存储所需信息并且可以由指令执行系统存取的其它介质。注意计算机可用或者计算机可读介质可以是程序印刷于其上的纸张或者其它适当介质,因为可以例如经由光学扫描纸张或者其它适当介质来电子地捕获程序、然后如果必要则编译、解释或者另外以适当方式处理程序、然后在计算机存储器中存储程序。通信介质通常在调制的数据信号(例如载波或者其它传送机制)中实施计算机可读指令、数据结构、程序模块或者其它数据并且包括任何信息交付介质。术语“调制的数据信号”可以定义为如下信号,该信号使其特性中的一个或多个以一定方式设置或改变以便将信息编码在该信号中。举例而言而非限制,通信介质包括有线介质(例如有线网络或者直接连线连接)和无线介质(例如声学、RF、红外线和其它无线介质)。也应当在计算机可读介质范围内包括任何上述介质的组合。当在计算机可执行指令的一般背景中实施主题时,该实施里可以包括一个或者多个系统、计算机或者其它设备执行的程序模块。一般而言,程序模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,可以在各种实施例中按照需要组合或者分布程序模块的功能。图1是一个实施例100的示意图,该图示出了可以包括多个存储区域的系统,每个存储区域针对功率使用独立可控。实施例100是如下硬件和软件环境的简化例子,在该环境中可以根据访问频率来组织存储对象以在维持高性能水平之时减少能量消耗。图1的示意示了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件或者硬件与软件的组合。一些组件可以是应用级软件,而其它组件可以是操作系统级组件。在一些情况下,一个组件到另一组件的连接可以是封闭连接,其中两个或者更多组件在单个硬件平台上操作。在其它情况下,连接可以通过跨越长距离的网络连接来产生连接。 每个实施例可以使用不同硬件、软件和互连架构来实现描述的功能。实施例100图示了可以具有多个存储区域的设备102,可以针对能量消耗独立控制这些存储区域中的至少一些存储区域。一般而言在高功率水平操作的存储区域可以在响应时间方面具有最大性能,但是同一存储区域可能消耗大量能量。在低功率水平操作的存储区域可以通过将它的功率水平升至高状态来操作以便对访问请求做出响应。在这样的实施例中,可以在存储区域改变功率水平之时延迟存储区域的响应。在一些实施例中,硬件可以能够有与可以管理存储对象的软件不同的控制粒度。 例如硬件可以能够在等级水平调节用于存储区域的功率设置而软件可以能够按照精细得多的粒度调节用于存储区域的功率设置。低功率区域可以包含许多不同存储对象。无论何时访问存储区域内的对象之一都可以要求整个存储区域改变功率水平以操纵响应。在多个实施例中,功率控制器可以将存储区域保持于高功率水平达一段时间以便操纵对存储对象的任何立即后续访问。在一些实施例中,存储区域可以以若干不同功率水平操作。在高功率水平,存储区域可以消耗大量能量并且也可以交付最高性能。在更低功率水平,存储区域可以消耗更少量能量、但是可能交付更低性能水平。在一些实施例中,存储区域可以在两个、三个、四个或者更多不同功率水平操作,每个功率水平具有各种性能和能量消耗特性,在该情况下可以做出软件/硬件/协调判决以选择所需操作功率水平。可以通过将存储区域分组成功率水平来管理存储区域。在简单例子中,具有八个存储区域的设备可以将四个存储区域分组成高功率水平或者“热”组而将四个存储区域分组成低功率水平或者“冷”组。当设备操作时,一些存储对象可以频繁使用或者为“热”而其它存储对象可以不频繁地使用或者为“冷”。当工作量在设备上改变时,一些热存储对象可以变冷而一些冷存储对象可以变热。存储管理器定期分析存储对象的当前状态并且可以对存储对象重新定位以维持所需的存储区域的热的和冷的组。当向存储器添加新存储对象时,新存储对象可以初始放置到热存储区域中。取决于可以多么频繁地访问新存储对象,存储对象可以在后面的重新定位过程中移到冷区域。为了平衡存储区域的负荷,存储对象可以放置到热存储区域子组中以平衡使用频率。在这样的实施例中,放入或者移入一组热存储区域中的存储对象可以放置到最冷的热存储区域中。为了最大化可能的节能,可以标识冷存储区域内的最热存储对象以便移入热存储区域中。对存储对象重新定位的过程可能降低设备的总性能,因为重新定位过程可能消耗处理器和存储器带宽。在一些实施例中,可以逐个执行重新定位过程,其中可以一次移动小组存储对象而在后续操作中可以移动附加存储对象。在其它实施例中,可以全体执行重新定位过程,其中移动可以移动的存储对象中的所有或者大部分存储对象。存储区域分组可以随时间改变。当设备的工作量增加时,可以改变存储区域分组以增加功率水平更高的存储区域。当设备的工作量减少时,可以改变存储区域分组以增加功率水平更低的存储区域。在一些实施例中,工作量监视器可以检测工作量的改变并且向存储管理器提供输入以抢先地改变存储区域分组。在其它实施例中,存储管理器可以检测更高水平的热存储对象并且增加热存储区域数目或者检测更低水平的热存储对象并且增加冷存储区域数目。 在这样的实施例中,存储管理器可以没有基于工作量的直接输入。可以基于存储对象分类将一些存储对象与其它存储对象区别对待。一类存储对象可以是可以与单个过程关联的存储对象。在一些实施例中,这样的存储对象可以称为“私有”存储对象。私有存储对象可以相对易于移动,因为一旦移动该对象就可以仅向一个过程通知新存储器地址。另一类存储对象可以是可以与两个或者更多过程关联的存储对象。在一些情况下,单个存储对象可以与若干过程关联。在一些实施例中,这样的存储对象可以称为“共享” 存储对象。为了移动共享存储对象,可以通知与该存储对象关联的每个过程。与移动私有存储对象相比,共享的存储对象可能在用于完成移动的处理周期方面成本多得多以及可能不那么可能首次尝试或者初始数次尝试便成功。一般而言,不同类型的存储对象可以具有与移动存储对象关联的不同成本。又一类存储对象可以是不可移动的存储对象。不可移动的存储对象的例子可以是可以向如下处理器或者设备分配的存储对象,存储管理器可能没有能力针对该处理器或者设备通信。一个例子可以是可以向存储控制器分配的存储器,其中存储控制器可以直接访问存储器。因为存储管理器不能管理不可移动存储对象,所以不可移动存储对象可以放置于与其它不可移动存储对象相同的存储区域中。可以在高功率水平操作不可移动存储对象,因此在存储区域内具有单个不可移动存储对象可以要求仅在高功率水平操作该存储区域。其它实施例可以基于存储区域访问计数器或者其它信息在不同功率水平操作不可移动存储对象。实施例100图示了可以针对性能和功率消耗来管理不同存储区域的设备102。设备102可以具有各种硬件组件104和软件组件106并且可以代表常规计算设备,尽管其它实施例可以具有不同配置、架构或者组件。设备102可以是服务器计算机、桌面型计算机或者相当设备。在一些实施例中,设备102可以是膝上型计算机、上网本计算机、写字板或者板式计算机、无线手持机、蜂窝电话或者任何其它类型的计算设备。硬件组件104可以包括处理器108和110,这些处理器可以分别具有存储区域112 和118。一些实施例可以具有一个、两个、四个、八个、十六个或者其它数目的处理器。存储区域112可以包含一个或者多个存储设备114并且可以具有活动监视器116。类似地,存储区域118可以包含一个或者多个存储设备120并且可以具有活动监视器122。每个存储区域112和118针对功率水平可以单独和独立可控。在每个存储区域内, 活动监视器116和122可以监视存储对象的访问频率。在实施例100的例子中,设备102可以具有两个处理器108和110,每个处理器具有可以与通信总线1 连接的单独存储区域112和118。这样的实施例可以通常为服务器计算机、桌面型计算机或者其它设备。在其它实施例中,设备可以具有与两个或者更多存储区域通信的单个处理器,而其它实施例可以具有可以与一个或者多个存储区域通信的若干处理器。在一些实施例中, 单个硬件存储设备可以具有两个或者更多存储区域。设备102可以是任一类计算设备。例如,设备102可以是服务器计算机、桌面型计算机、膝上型计算机、写字板计算机、上网本计算机、游戏控制台、手持移动设备(例如个人数字助理或者移动电话)、网络设备(例如路由器或者交换机)或者任何其它类型的可以具有两个或者更多存储区域的计算机设备。硬件组件104可以包括非易失性储存器128以及用户接口 130和网络接口 132。软件组件106可以包括各种应用136可以在其上执行的操作系统134。存储管理器138可以监视存储器使用、将存储对象放置到存储区域中并且对存储区域内的存储对象重新定位以在最大化性能之时最小化功率消耗或者相反。在一些实施例中,存储管理器138可以是操作系统134内的组件。在一些实施例中,存储管理器138可以能够由管理员打开或者关闭。在一些实施例中,可以在硬件存储管理器IM中实施存储管理器138的一些或者所有操作。硬件存储管理器IM可以是一组门阵列或者其它可以执行针对存储管理器描述的一些或者所有操作的逻辑。图2是一个实施例200的流程解,其示出了用于正常操作存储管理器的方法。 实施例200的过程是存储管理器如何可以回顾存储区域的状态并且可以推荐改变存储对象在存储区域内的位置的简化实例。其它实施例可以使用不同定序、附加或者更少步骤和不同命名或术语来实现相似功能。在一些实施例中,各种操作或者操作集可以用同步或者异步方式与其它操作并行执行。挑选这里所选步骤以以简化形式说明一些操作原理。实施例200图示了用于正常操作存储管理器的方法。存储管理器可以扫描各种存储对象以对这些对象分类并且分析存储区域以确定存储区域的实际使用。可以比较实际使用与用于存储区域的所需功率水平,并且可以通过将存储对象从一个存储区域移到另一存储区域来实施改变。在块202中可以将存储区域分组成所需功率水平,并且在块204中可以确定存储区域组的成员。当可以启动计算机时,可以使用可以将存储区域分配成组的默认配置。在一些实施例中,默认配置可以从可以随时间改变成冷区域的大量热区域开始。在其它实施例中,默认配置可以从可以随时间变成热区域的大量冷区域开始。系统可以在块206中操作。通过正常操作,可以向存储器添加存储对象。在一些实施例中,新添加的存储对象可以默认放置于热存储区域中。这样的实施例可以假设新添加的对象可以被访问若干次、因此可能是大量访问或者热的存储对象。当未频繁地访问那些存储对象时,那些对象可以变成冷存储对象。也在正常操作期间,可以从冷存储区域访问一个或者多个冷存储对象。这可以发生于已经休眠的应用或者过程可以恢复操作时。尽管正常操作在进行中,但是可以在块208中针对每个存储对象更新活动监视器。在一些实施例中,活动监视器可以检测从上次回顾存储对象的状态起是否已经访问该存储对象。这样的实施例可以不检测访问已经出现多少次而是仅检测出现至少一次访问。 在其它实施例中,活动监视器可以包括可以对已经对存储对象或者存储对象组进行多少次访问进行计数的计数器。更多其它实施例可以具有为存储对象确定访问频率的其它机制。在块210中可以触发存储区域的状态回顾。在一些实施例中,可以在定期基础(可以是预定义间隔(例如一分钟、一小时、一天或者一些其它频率))上执行状态回顾。在一些实施例中,可以在满足条件时触发状态回顾。例如可以在设备上的工作量已经改变一些量时触发状态回顾。在一个这样的例子中,可以在应用开始或者停止之后或者在调度的操作开始或者结束时触发状态回顾。在块212中可以分析每个存储对象。对于块212中的每个存储对象,如果在块214 中不能确定状态,则可以将状态标记为不可读。不可读块可以是状态不能确定的块。如果在块214中可以确定状态,则可以在218中应用分类。分类可以定义用于特定存储对象的访问水平。在确定分类之后,在块220中可以将活动监视器复位。在块218中的分类可以在一些实施例中为“热”或者“冷”。在其它实施例中,分类可以是“热”、“冷”或者“微温的”。其它实施例可以使用不同分类术语并且可以具有用于存储对象的两个、三个或者更多分类水平。在一些实施例中,可以随着多个状态回顾确定访问频率分类。例如随着若干状态回顾每次都访问的对象可以标注为热,而可能仅针对一些状态回顾才访问的另一对象可以标注为冷。不同实施例可以使用不同试探或者其它机制来确定访问频率。在一些实施例中,可以向每个存储对象给予附加分类。例如一些实施例也可以在对象类型(例如私有、共享、不可移动或者其它类型)方面对存储对象分类。在块222中可以分析每个存储区域。对于块222中的每个存储区域,在块224中可以标识区域内的可读对象,并且在块226中可以确定针对存储区域的分类。在块226中的分类可以与如在块202和204中定义的所需功率水平对照指示存储区域中的存储对象的实际使用频率。块2 和226的方法可以使用存储对象的使用频率来为存储区域确定使用频率。 在其它实施例中,一种机制可以用于总体上对对存储区域的访问进行计数。在更多其它实施例中,存储区域可以具有可以测量能量汲取、热耗散或者其它使用度量的传感器或者监视器。在这样的实施例中,除了分析各个存储对象的使用频率以确定存储区域访问分类之外或者取而代之,还可以使用来自计数器机构、传感器或者监视器的输入。在一些实施例中,可以随着若干状态回顾确定存储区域访问分类。在这样的实施例中,可以在具有相似分类结果的两个、三次或者更多状态回顾之后确定存储区域访问分类。在块228中可以对存储区域内的存储对象排列或者分级。在许多实施例中,可以从热到冷进行排列并且排列可以反映在块218中确定的分类。在一些实施例中,排列可以包括基于存储对象分类来分级。例如私有存储对象可以与共享存储对象不同地排列。排列可以反映可以移出特定存储区域的存储对象的队列。在冷存储区域的情况下,最热存储对象可以移到热存储区域。在热存储区域的情况下,最冷存储对象可以移到冷存储区域。当考虑私有和共享存储对象时,在一些情况下可以优先安排私有存储对象在共享存储对象之前移动。在块222中分析所有或者至少一些存储区域之后,在块230中可以在每组所需功率水平内对存储区域排列或者分级。块230中的排列可以针对每组存储区域从热到冷对存储区域分级。这个排列可以用来选择存储对象可以放入其中或者存储对象可以从中移出的存储区域。对于块232中的每个存储区域,在块234中可以比较所需功率水平与实际功率水平。如果在块236中比较满足用于修改存储区域中所含存储对象的标准,则在块238中可以执行重新定位操作。可以在本说明书中的后文呈现的实施例400中发现重新定位操作的例子。如果在块236中比较不批准改变,则该过程可以返回到块232。用于确定是否执行重新定位的标准可以针对各种实施例而不同。在一些情况下, 一种算法可以用来计算在性能与功率节省之间的折衷,并且可以在评估该算法的结果之后执行重新定位。在许多实施例中,在用于执行重新定位的算法和标准中可能有大量滞后。该滞后可以用来防止抖动(thrashing),其中存储管理器的优化操作可能未实现对系统总性能的进一步提高。在块240中可以重新评估存储区域分组。如果在块240中将更新分组,则受影响的存储区域在块242中可能已经改变它们的所需功率水平。该过程可以返回到块206以继续正常操作并且最终执行另一状态回顾。在块240中的分析可以确定是否可以改变存储区域分组。在一些实施例中,块MO 的分析可以包括分析如下算法,该算法可以确定存储区域的最优一组分组。在一些实施例中,向块240的分析的输入可以包括来自工作量的输入。例如服务器计算机可以在非高峰时段期间执行备份操作。当备份操作开始时,备份工作量可以向存储管理器指示工作量已经开始,并且存储管理器可以相应地更新存储区域的分组。图3是一个实施例300的示意流程图解,其示出了用于为新对象分配存储器的方法。实施例300的过程可以在存储管理器接收针对用于存储对象的存储器存储区的请求时由存储管理器执行。其它实施例可以使用不同定序、附加或者更少步骤和不同命名或者术语来实现相似功能。在一些实施例中,各种操作或者操作集可以用同步或者异步方式与其它操作并行执行。挑选这里所选步骤以以简化形式说明一些操作原理。实施例300图示了无论何时只要可以为新的存储对象分配存储器时都可以执行的方法。实施例300通过与其他存储对象相比单独地处理不可移动的对象来操作。对于可移动存储对象,初始位置可以是热存储区域。如果在热存储区域中无空间,则在热存储区域中的冷存储对象可以移到冷存储区域。当冷存储区域无足够空间时,在冷区域中的最冷存储对象可以移到单独存储机构。实施例300的例子图示了可以在有两个不同功率水平组(热和冷)时应用的方法。 在其它实施例中,可以使用三个或者更多不同的功率水平组。在块302中,可以接收将放置于存储器中的对象。在许多实施例中,存储管理器可以接收针对分配某一大小的存储器的请求。存储管理器可以分配存储器内的存储空间并且返回用于分配的存储器的起始地址或者地址范围。请求应用可以开始通过对分配的存储器空间寻址来使用存储对象。在块304中可以对存储对象分类。在许多实施例中,存储管理器可以接收包含如下参数的请求,这些参数可以标识存储对象的预期用途或者其它特性。例如,一些实施例可以包括如下指示符,该指示符指示存储对象可以是共享存储对象或者不可移动存储对象。在一些实施例中,可以请求存储对象的应用或者其他实体可以提供可以用来确定该存储对象的特性的提示或者其它信息。该提示可以指示存储对象可以例如是热的或者冷的对象或者可以指示存储对象可以可移动或者不可移动。如果存储对象在块306中为不可移动存储对象,则在块308中可以扫描存储区域以标识已经包含不可移动对象的存储区域。在块310中可以选择存储区域,并且可以在块 312中放置不可移动对象。该过程可以在块314中结束。—般而言,不可移动存储对象可以一起群集于相同存储区域中。存储管理器可以将不可移动存储对象视为热存储对象。在一些实施例中,一旦不可移动存储对象位于存储区域中,存储区域就可能不能从热改变成冷、因此允许更多冷区域并且最大化功率减少,不可移动存储对象可以合并到尽可能少的存储区域中。用于为不可移动存储对象选择存储区域的过程可以先尝试发现已经包含不可移动存储对象的存储区域。如果不存在其它不可移动存储对象,则不可移动存储对象可以放置于功率水平高的存储区域中。如果有包含不可移动存储对象的另一存储区域,则存储管理器可以通过按照需要或者定期将存储区域内的现有存储对象移到其它存储区域来产生可用于新的不可移动存储对象的空间。在一些实施例中,可以基于发现足够邻接存储器空间来做出对存储区域的选择。 在这样的实施例中,新的不可移动存储对象可以仅在存在充分邻接空间时放置于具有另一不可移动存储对象的另一存储区域中,否则新的不可移动存储对象可以放置于其中不存在先前的不可移动存储对象的另一高功率区域中。
如果存储对象在块306中可移动,则在块316中可以选择最冷的热区域。可以选择最冷的热区域以跨热区域平衡负荷。一般而言,可以认为新的存储对象至少在初始创建该对象时是大量访问的存储对象。通过将大量访问的存储对象放置于最冷的热区域中,可以有一些性能益处。如果在块318中有在最冷的热区域中可用的空间,则在块330中可以将对象放置于最冷的热区域中并且该过程在块332中可以结束。如果在块318中无空间可用,则在块 320中选择该区域中的最冷对象。在块322中该过程可以尝试将最冷对象移入冷区域中。 如果在块322中在冷区域中无空间可用,则在块324中可以选择冷区域中的最冷对象并且在块326中移到存储区。在许多实施例中,块326中的存储区可以是在另一存储设备(例如硬盘或者其它存储设备)上可用的页面文件或者其它存储区。该过程可以循环回到块322 并且可以移动附加存储对象直至足够自由空间在块322中可用。当在块322中足够空间可用时,在块328中可以将最冷对象放置于冷区域中。该过程可以循环回到块318以确定是否足够空间可用于新存储对象。图4是一个实施例400的流程图解,其示出了对存储器中的对象重新定位的方法。 实施例400的过程是可以在实施例200的块238中执行的重新定位过程的简化例子。其它实施例可以使用不同定序、附加或者更少步骤和不同命名或者术语来实现相似功能。在一些实施例中,各种操作或者操作集可以用同步或者异步方式与其它操作并行执行。挑选这里所选步骤以以简化形式举例说明一些操作原理。实施例400图示了如何可以在存储区域之间对对象重新定位以在维持高性能水平之时最小化功率消耗的一个例子。一般而言,可以不频繁访问的对象可以一起合并到相同存储区域中,然后可以在低功率水平操作该存储区域。在以低功率水平操作之时,存储区域可以消耗更少能量。同时可以将访问频率高的存储对象合并到可以提供最高性能的高功率存储区域中。当可以用这样的方式配置系统时,该系统可以最大化功率消耗而性能减少是可接受的。在块402中可以标识重新定位的范围。实施例400的重新定位过程可以消耗系统的一些处理时间。一般而言,可以在对存储对象重新定位期间暂停可能受重新定位影响的过程。在共享的存储对象的情况下,可以暂停在计算机系统上操作的若干过程。在暂停过程之时,计算机系统可以不执行它的预期功能,并且因此在执行重新定位时可能有系统性能成本。为了相对于潜在功率节省益处平衡重新定位的性能成本,一些实施例可以逐步地执行重新定位。在这样的实施例中,可以标识位于非期望位置的存储对象(例如在具有两个功率水平组的实施例的情况下在冷区域中的热对象或者在热区域中的冷对象)的队列。使用该队列,一个实施例可以选择队列的某部分以在特定步骤中重新定位。完全重新定位可以随着若干迭代而继续,其中每次迭代可以实现完全重新定位的小部分。这样的实施例可以在维持在计算机系统上执行的过程的可用性之时实现重新定位。在这样的实施例中,为重新定位而选择的存储对象可以是可能对性能和能量消耗产生大的影响的那些存储对象。一般而言,那些存储对象可以是冷区域中的最热存储对象。 为了在热区域中为热存储对象腾出空间,在热区域中的最冷存储对象可以移到冷区域。在其它实施例中,可以在大得多的步骤中执行重新定位。这样的实施例可以尝试在单个重新定位操作中将每个存储对象移到适当存储区域。这样的实施例在计算机系统可能已经改变操作模式的情况下(例如业务服务器可能已经进入夜间备份操作或者在相同服务器在工作日开始时经历使用增加)可以有用。在一些这样的实施例中,工作量监视器可以检测对系统工作量的改变并且在新工作量改变已经操作了一段时间之后触发完全重新定位操作。在许多情况下,可以在工作量已经达到稳态操作之后执行优化重新定位。当工作量在计算机系统上改变时,休眠过程或者新过程可以开始执行而执行过程可以变成休眠。 在这样的情况下,冷存储对象可以变热而热存储对象可以变冷。在一段时间之后,存储对象的状态可以整理成可检测状态并且可以变成准备好进行重新定位操作。在改变工作量期间,一些实施例可以推迟重新定位操作。在这样的情形中,工作量可以在过渡阶段期间消耗处理器带宽。如果将在这样的时间期间执行重新定位,则重新定位操作可以消耗一些处理器带宽并且同时可以对如下存储对象重新定位,这些存储对象可以快速改变状态、因此可以在后续重新定位操作中被再次重新定位。这样的情形可以称为抖动并且可能具有比如果将不执行重新定位更高的性能和能量消耗成本。在块404中,如果重新定位过程的下一步骤是冷却冷区域,则在块406中可以标识最热的冷区域。在块408中可以标识区域中的最热存储对象。如果在块410中在热区域中有用于存储对象的空间,则在块414中可以将存储对象移到最冷的热存储区域。如果在块 410中无空间,则在块412中可以指示用于从热区域清空空间的操作。在块408中选择的存储对象在许多实施例中可以是最热的存储对象。在一些实施例中,可以向私有或者共享存储对象给予优先。在可以向私有存储对象给予优先的实施例中,重新定位算法可以尝试优化执行重新定位的速度。在可以向共享存储对象给予优先的实施例中,重新定位算法可以尝试以更长的重新定位过程为代价实现更大的功率减少。选择最热的冷区域中的最热存储对象可以尝试移动如下存储对象,该存储对象可以用最少量工作返回最高功率节省。在一些情况下,在更冷存储区域中的存储对象的小部分可以说明来自那些存储区域的大量能量消耗。通过先移动最热存储对象,可以对最可能产生益处的存储对象重新定位。在块416中可以从热区域清空空间。为了从热区域清空空间,可以在块418中标识最冷的热区域,并且在块420中标识该区域中的最冷对象。如果在块422中在冷区域中有空间,则在块426中可以将存储对象放置于冷区域中。如果在块422中在冷区域中无足够空间,则在块424中可以将冷区域中的最冷对象移到存储区。在块428中,如果可以在重新定位操作中执行另一移动,则该过程可以返回到块 404。如果不是,则该过程可以在块430中结束。已经出于示例和描述的目的呈现了对主题的前文描述。不旨在穷举或者使主题限于公开的精确形式,并且其它修改和变化按照上文教导可以是可能的。选择并且描述实施例以便最好地说明本发明的原理及其实际应用以由此使本领域技术人员能够在与设想的特定用途相适合的各种实施例和各种修改中最好地利用本发明。预期将所附权利要求解释为包括除现有技术所限定范围的其它替代实施例。
权利要求
1.一种由计算机处理器执行的方法,所述方法包括监视多个存储区域中的多个存储对象(210),所述存储区域中的每一个具有单独功率控制;基于使用频率对至少一些所述存储对象分类(218);以至少两个不同功率水平之一操作所述存储区域中的每一个(206)并且通过所述不同功率水平对所述存储区域分组,所述不同功率水平之一为高功率水平;通过以下操作向第一存储对象分配存储器标识所述高功率水平组内的第一存储区域(234);将所述存储对象放置于所述第一存储区域中(238)。
2.根据权利要求1所述的方法,还包括从所述第一存储区域向第二存储区域传送第二存储对象,所述第二存储区域属于更低功率水平组。
3.根据权利要求2所述的方法,还包括标识所述第二存储对象具有比所述第一存储区域内的至少一个其它存储对象更低的访问频率。
4.根据权利要求3所述的方法,所述第二存储对象具有所述第一存储区域内的存储对象的最低访问频率。
5.根据权利要求1所述的方法,还包括标识具有所需功率水平的所述存储区域中的每一个;分析所述存储区域中的每一个内的所述存储对象中的至少一些存储对象以确定实际使用水平;并且比较所述实际使用水平与所述所需功率水平以在与所述所需功率水平比较时标识具有高实际使用水平的第二存储区域。
6.根据权利要求5所述的方法,还包括标识所述第二存储区域内的具有高访问频率的第二存储对象并且将所述第二存储对象从所述第二存储区域移到所述高功率水平组的存储区域内的存储区域。
7.根据权利要求5所述的方法,还包括检测在所述计算机处理器上执行的工作量已经改变并且基于所述检测来改变用于所述存储区域中的至少一个存储区域的所述所需功率水平。
8.根据权利要求1所述的方法,还包括对所述不同功率水平内的所述存储区域中的每一个排列,所述排列基于所述存储区域中的每一个内的所述存储对象中的至少一些存储对象的使用。
9.根据权利要求8所述的方法,还包括基于所述存储对象中的所述至少一个存储对象的使用对所述存储区域中的每一个内的所述存储对象中的至少一些存储对象排列。
10.根据权利要求9所述的方法,还包括所述第一存储区域为所述高功率水平组内的最低排列的存储区域。
11.根据权利要求9所述的方法,还包括所述第一存储区域为所述高功率水平组内的最高排列的存储区域。
12.根据权利要求1所述的方法,还包括在所述分配之前确定所述第一存储对象为不可移动对象。
13.根据权利要求1所述的方法,还包括 通过以下操作向第二存储对象分配存储器 确定所述第二存储对象为少量使用存储对象; 标识所述低功率水平组内的第二存储区域; 将所述第二存储对象放置于所述第二存储区域中。
14.根据权利要求1所述的方法,还包括 通过以下操作向第二存储对象分配存储器 确定所述第一存储对象为不可移动对象;标识具有至少一个其它不可移动对象的第二存储区域;并且将所述存储对象放置于所述第二存储区域中。
15.一种系统,包括至少一个处理器(108);多个存储区域(112),所述存储区域中的每一个具有单独和独立的功率水平设置; 存储管理器(138),其监视所述多个存储区域中的多个存储对象(210); 基于使用频率对所述存储对象中的至少一些存储对象分类(218); 以至少两个不同功率水平之一操作所述存储区域中的每一个(206);并且通过以下操作向第一存储对象分配存储器(300)标识作为高功率水平存储区域的第一存储区域(234)并且将所述存储对象放置于所述第一存储区域中(238)。
全文摘要
本发明涉及用于创建低功率区域的动态存储器分配和重新定位。可以在计算机系统内分配和重新分配存储对象以将不频繁使用的存储对象合并到可以以更低功率操作的存储区域。在初始分配存储对象期间,可以将对象放置到高功率区域中。在后续定期分析期间,可以将高功率区域中的不频繁使用的存储对象重新定位于更低功率区域,而低功率区域中的频繁使用的存储对象可以被移到高功率区域。各种试探或者逻辑可以用来操纵不可移动对象、共享对象和其它类型的对象。
文档编号G06F12/08GK102521154SQ201110402978
公开日2012年6月27日 申请日期2011年12月7日 优先权日2010年12月7日
发明者B.L.沃尔兴顿, Q.张, S.卡瓦拉内卡, V.沙达 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1