用于压缩和紧凑虚拟存储器的方法和装置的制造方法_2

文档序号:9308576阅读:来源:国知局
[0026]根据一个实施例,在从压缩池拉出压缩数据时,可能会形成洞(S卩,先前被压缩数据占据的空的存储空间)。因此,如果不去除这些洞,压缩池的存储器使用可能变得越来越低效。可以执行辅助紧凑化操作以移动压缩池中存储段(例如日志结构)内的压缩数据,以减少存储段中洞的数量。在一个实施例中,可以执行辅助紧凑化操作以允许额外分配存储器设备中的存储页面。辅助紧凑化操作可能会消耗无用的处理资源而使得数据处理延迟得到显著改善。
[0027]在一个实施例中,例如,在需要将压缩数据换出至交换设备时,除辅助紧凑化操作之外,还可以执行主要紧凑化操作以在压缩池的不同存储段之间移动压缩数据。由于主要紧凑化操作,可以减少压缩池中所需的存储段的数量。例如,可以收紧(或减少)压缩池的存储段中未使用的存储空间,以允许将大块压缩的存储页面写出到交换设备。因此,可以使可用的1带宽(例如存储器设备和交换设备之间)最大化。此外,可以使交换设备(诸如SSD设备)受到磨损和毁坏的程度最小化。
[0028]在一个实施例中,基于紧凑化模型执行紧凑化操作,该紧凑化模型确定何时执行辅助紧凑化操作、主要紧凑化操作或其他适用的数据移动操作,以保持压缩池中有效的存储器存储使用。可以执行辅助紧凑化操作以使一个存储段内的压缩数据换位,以增加或释放可用的存储空间。例如,可以执行主要紧凑化操作以在多个存储段之间移动压缩数据,以确保准备好将存储段以完整大小从压缩池换出至交换设备。如果存储段基本没有洞或存储器使用率大于例如预先确定的阈值(例如99% ),则存储段可以是完整大小的。
[0029]因此,在基于例如同样大小的数据块(例如压缩段),诸如256KB、512KB、1024KB或其他适当大小从压缩池向交换文件(例如在交换设备中)执行1操作写入时,可以维持日志结构化数据(或模型)。在一个实施例中,在用于存储器交换的1操作期间传输的数据块可以根据与交换设备的1接口对应于压缩存储页面的集合(例如匹配1总线缓冲区大小),以改善1性能。因此,可以基于所传输数据的压缩和用于交换设备的匹配传输数据块大小来改善压缩池和交换设备之间1操作的效率或吞吐量。
[0030]在一个实施例中,压缩池中的日志结构化数据可以包括存储段的排序列表。可以在排序段列表的头段(或记录头)中记录新压缩的数据。可以基于压缩池中的排序段列表执行针对虚拟存储器系统的工作集分析,以确定换出压缩池的哪个部分。例如,段在排序列表中距头段越远,该段中存储的压缩数据越可能不再被工作集感兴趣(或立即需要)。因此,可以选择尾段(或距记录头的远端)以换出至交换设备。可以基于紧凑化的存储段从/向交换设备从压缩池中引入/取出压缩数据。
[0031]例如,可以识别执行存储器交换操作的需求以对压缩池的大小设定上限。压缩池的大小(或形状)可以基于运行时存储器的访问模式动态变化。在一个实施例中,可以基于成本(例如功率消耗成本)模型动态监测(或估计)紧凑化/压缩/解压缩操作相对于存储器交换操作的处理成本以确定何时执行交换操作。
[0032]例如,压缩、解压缩和/或紧凑化操作的速率可以对应于功率(或处理资源消耗)以指示存储器设备中压缩池(或压缩层、压缩部分)的健康状况。如果这个速率超过特定阈值,可以执行或触发交换操作以从压缩池向交换设备页面调出压缩数据。在一个实施例中,与交换操作中的数据1事务处理相比,压缩/解压缩和/或紧凑化操作可能招致一小部分的处理成本。可以评估功率成本函数以允许压缩池在需要向交换设备页面调出压缩数据之前增大。成本函数可以取决于例如压缩池的形状、由紧凑化/压缩/解压缩操作导致的处理延迟中配置的容限或其他适用因素,以在存储器设备中维持工作集。
[0033]存储器设备中的压缩池可以通过减少向/从交换设备传送数据页面(例如交换操作)的所需数量来实现节能。例如,由于数据是压缩的,因此需要更少数量的数据页面或文件页面传输。此外,可以利用通过基于日志的结构承载压缩数据的紧凑化段改善每次数据页面传输或交换操作中的效率或效果。
[0034]在一些实施例中,可以对应于每个段中存储的压缩数据的年龄对压缩池中基于日志结构列表的存储段进行排序。压缩数据的年龄可以指示数据是多早从工作集被压缩的或为工作集而被访问的。交换操作可以写出已经从工作集老化的存储段(例如,排序段列表的尾部)。因此,被选择要从压缩池交换到交换设备(例如磁盘)的压缩数据可以存储于在一段时间内未使用的紧凑存储段中。例如,可以执行交换操作以为工作集的增长留出空间或适应其增长。同时,可以避免或减少为了维护目的(例如文件或数据备份/同步)而从存储器设备周期性向交换设备或磁盘设备写入数据,实现显著节能。
[0035]压缩池可以提供用于系统休眠和/或醒来的快速操作机制。例如,可以在非易失性存储设备(例如磁盘)中独立备份(或存储)存储器设备的压缩部分和未压缩部分,以使系统进入休眠(或睡眠)状态。可以经由紧凑化存储段向非易失性存储设备传输(或推送)压缩部分(或压缩池)。可以将未压缩存储部分(例如,包括当前工作集)压缩到附有特殊标签的压缩池中,以作为紧凑化存储段传输到非易失性存储设备。例如,可以中止应用使其作为压缩/紧凑化存储段进入压缩池。
[0036]在系统醒来期间,可以从非易失性存储设备检索(或拉回)对应于存储器设备的未压缩部分的带特殊标签的压缩存储段,以利用先前的工作集(或热工作集)填充存储器设备。例如,可以从带特殊标签的压缩存储段将中止的应用取消中止或恢复回存储器设备的未压缩部分。并非检索与被恢复应用相关联的任意存储页面(例如,先前存储于压缩存储部分或未压缩存储部分),而是可以在检索压缩池中先前存储的那些存储页面之前利用未压缩存储部分中为应用先前存储的宝贵信息对系统进行预热(或预加温以实现加速醒来)。
[0037]图1是示出了基于压缩和/或紧凑化存储器的虚拟存储器系统的一个实施例的框图。例如,系统100可以包括数据处理设备的存储器设备中托管的操作环境101,数据处理设备诸如移动设备、台式计算机或服务器等。存储器设备可以包括例如随机存取存储器(RAM),用于支持处理设备中至少一个处理器的数据处理。可以在存储器设备内动态划分(或维持)压缩存储器(或压缩池)117。因此,存储器设备中用于支持操作环境101的运行的可用存储空间(可能基于存储器设备的未压缩部分)可以少于由存储器设备提供的总存储空间。在某些实施例中,多个处理器,诸如CPU、GPU或其他适用的处理单元,可以并行地访问压缩存储器117。
[0038]在一个实施例中,虚拟存储器管理模块103可以虚拟化各种形式的计算机数据存储,诸如RAM和海量存储设备121,以允许运行于操作环境101中的程序或过程诸如应用123访问存储器地址(或虚拟存储器地址),如同仅有一种存储器,即虚拟存储器,其行为可以像RAM中的直接可寻址读/写存储器那样。例如,虚拟存储器管理模块103可以维持多个虚拟存储器地址(或一个虚拟存储器地址)与实际物理数据存储位置诸如RAM(或存储器设备)内的物理存储页面与海量存储设备121中的存储基准之间的映射。
[0039]虚拟存储器管理模块103可以经由分页器层模块105向存储器设备(例如RAM)中移入数据或从其中移出数据。例如,可以响应于例如来自应用的存储器分配请求和/或其他数据处理要求,将数据从存储器设备中的物理存储页面换出(例如,未被海量存储设备121中的磁盘文件备份的匿名数据或脏数据),以释放物理存储页面中的存储空间。可以从存储器设备页面调出(或清除)可从海量存储设备121中的磁盘文件获得的干净数据(或存储器数据)以增加可用的存储空间。在诸如应用123的应用终止时,为该应用分配的存储空间(例如堆栈、堆等)可用于将来分配。
[0040]在一个实施例中,虚拟存储器管理模块103可以向分页器层模块105发送存储器换入/换出请求,以管理存储器设备的未压缩部分内的虚拟存储器地址。分页器层模块105可以与海量存储设备121和/或压缩存储器管理模块107进行交互以向/从存储器设备的未压缩部分移动存储页面。因此,虚拟存储器管理模块103可以映射存储器设备的未压缩部分外部的虚拟存储器地址而无需区分(或了解)虚拟存储器地址是否对应于压缩存储器117或海量存储设备121内的存储器位置。换句话讲,虚拟存储器管理模块103可以不知道压缩存储器117的存在。
[0041]分页器层模块105可以基于多个并发线程(或输入/输出线程)以执行存储器分页传输操作。例如,分页器层模块105可以包括文件分页器以管理存储来自海量存储设备121的磁盘文件的干净数据的未压缩存储页面。分页器层模块105可以包括与压缩存储器管理模块107交接的存储器分页器(例如作为一个或多个线程),以经由压缩存储器117向/从存储器设备的未压缩部分移动未压缩的存储页面。
[0042]在一个实施例中,压缩存储器117可以包括一个或多个日志结构(例如,基于具有头和尾的阵列或队列),以存储压缩存储单元。每个日志结构可以包括一个或多个段,其被分配有缓冲区,用于存储压缩的存储单元。每个段可以是通常大小(例如256KB,512KB,1024KB或其他适用大小),具有存储器插槽以存
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1