CN107533508B - 用于减少压缩存储器时的存储器承诺用量的方法和系统 - Google Patents
用于减少压缩存储器时的存储器承诺用量的方法和系统 Download PDFInfo
- Publication number
- CN107533508B CN107533508B CN201680022094.XA CN201680022094A CN107533508B CN 107533508 B CN107533508 B CN 107533508B CN 201680022094 A CN201680022094 A CN 201680022094A CN 107533508 B CN107533508 B CN 107533508B
- Authority
- CN
- China
- Prior art keywords
- memory
- compressed
- manager
- pages
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
来自程序进程的工作集的存储器页集合(诸如已被修改的至少一些存储器页)在被写入页文件之前被压缩到压缩存储中,之后所述存储器页可由存储器管理器重新利用。由压缩存储管理器从该程序进程借用压缩到该压缩存储中的存储器页的存储器认可用量,从而减少压缩存储管理器的存储器认可用量。通过访问经压缩存储存储器页(包括如果写入到页文件中则从页文件中检索经压缩存储存储器页)、解压缩所请求的存储器页并将所请求的存储器页返回至所述存储器管理器,来自存储器管理器的对已被压缩到压缩存储中的存储器页的后续请求被满足。
Description
背景
随着计算机技术的进步,计算机处理器的性能有所提高。这种提高的性能导致为用户提供增加的功能的更复杂的计算机程序。然而,这种提高的性能并不是没有问题。一个这样的问题是,随着计算机程序变得更加复杂,它们使用更多量的计算机存储器(memory)。这导致需要在计算机中包括更多的计算机存储器,从而增加这种计算机的成本。
发明内容
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
根据一个或多个方面,标识已被分配给程序并且已被修改的第一存储器页集合,用于所述第一存储器页集合的存储器承诺已被收取至所述程序。所述第一存储器页集合被压缩到压缩存储(compressed store)中,所述压缩存储由第二存储器页集合组成且由压缩存储管理器管理。用于所述第一存储器页集合的存储器承诺用量(commit charge)被所述压缩存储管理器使用或借用(例如,因此压缩存储管理器可避免需要其自己的用于所述第一存储器页集合的承诺用量),且所述存储器管理器被允许在所述第一存储器页集合已被压缩到所述压缩存储中之后重新利用所述第一存储器页集合。
附图简述
在全部附图中,使用相同的附图标记来指示相同的特征。
图1示出根据一个或多个实施例的减少压缩存储器时的存储器承诺用量 (memorycommit charge)的示例系统。
图2示出根据一个或多个实施例的存储器页的示例生命周期。
图3示出根据一个或多个实施例的对存储器页进行压缩的示例。
图4示出根据一个或多个实施例的压缩存储管理器对一个程序的承诺用量的使用的示例。
图5是示出根据一个或多个实施例的用于压缩存储器页的示例过程的流程图。
图6是示出根据一个或多个实施例的用于检索经压缩存储器页的示例过程的流程图。
图7示出根据一个或多个实施例的示例存储器页映射(memory page map)。
图8示出根据一个或多个实施例的示例区域映射。
图9大致示出包括示例计算设备的示例系统,该示例计算设备代表可实现本文所描述的各种技术的一个或多个系统和/或设备。
详细描述
本文讨论了减少压缩存储器时的存储器承诺用量。系统中的存储器由被称为存储器页(或简称页)的多个块或部分组成。来自程序的工作集的存储器页集,诸如工作集中的至少一些已被修改的存储器页,在被写入页文件之前被压缩到压缩存储(compressedstore)中。所述存储器页在被压缩到压缩存储之后可被存储器管理器重新利用,而不管压缩存储备份页是否已被写入到页文件中(或被分页出去(page out))。压缩存储本身由多个存储器页组成,并且压缩存储存储器页可以在被写入页文件之后由存储器管理器重新利用。通过以下方式,来自存储器管理器的针对已经被压缩到压缩存储中的存储器页的后续请求被满足:访问压缩存储存储器页(包括如果被写入到页文件中则从页文件中检索压缩存储存储器页)、解压缩所请求的存储器页、以及将所请求的存储器页返回到存储器管理器。
系统中的存储器管理器为系统中运行的程序分配存储器量。当将存储器分配给程序时,将向该程序指定或分配地址空间。该地址空间包括分配的存储器量,并且存储器管理器为分配的存储器量分配承诺用量。这个分配的存储器量是向该程序承诺的存储器量,并且也称为对该程序的存储器承诺(或简称为对该程序的承诺)或该程序的存储器承诺用量。存储器承诺保证向该程序分配的存储器量的可用性-存储器管理器保证如果分配给该程序的存储器中的承诺的虚拟地址被访问,则可使得物理存储器(例如,RAM)中的页针对该地址可用。在将该存储器分配给该程序时,没有物理页需要(但是替换地可以)被分配给该程序。系统中可允许的最大承诺用量的量等于物理存储器(例如RAM)的量加上作为物理存储器(例如RAM)的后备的存储设备上的所有页文件的大小。
在某些情况下,程序请求简单地保留地址空间而不承诺该地址空间。这种情况下,该程序无法访问该地址空间(在访问时将引发访问冲突异常),直到该地址空间随后被承诺给该程序。该程序可以以页粒度承诺所保留的存储器的诸部分。承诺的页是存储器管理器为其收取承诺的页,且存储器管理器针对其保证该程序可以访问该页。程序还可以作为初始分配的一部分承诺页(即,不经过保留且随后承诺序列)。
压缩存储管理器管理压缩存储的创建、存储器页的压缩和存储器页的解压缩。当压缩存储管理器获取和压缩存储器页时,压缩存储管理器对正被压缩的存储器页使用或“借用”承诺用量。存储器页的承诺用量被传送到压缩存储管理器,因此存储器承诺不向被压缩的存储器页的程序收取且不向包含压缩数据的存储器页的压缩存储管理器收取。
图1示出了根据一个或多个实施例的减少压缩存储器时的存储器承诺用量的示例系统100。系统100包括存储器管理器102、压缩存储管理器104和分页存储器106。通常,存储器管理器102管理分页存储器106中的数据的存储。存储器管理器102将分页存储器106的各部分分配给系统100中的各个程序108。程序108 在运行时在本文中也称为进程(其是正在运行的程序108的实例),因此分配给程序108的分页存储器106的诸部分也被称为被分配给程序108的进程。分配给进程的页由该进程拥有或专用于该进程,并且由该进程使用,而不被其它进程使用(且因此也称为私有页)。程序108可以是应用、操作系统程序或其它组件或模块。存储器管理器102从这些程序108接收从分页存储器106检索数据并将数据写入分页存储器106的请求。分页存储器106可以是例如任何类型的CPU(中央处理单元)可寻址的存储器,诸如易失性存储器(如RAM)或非易失性存储器 (如闪存)。
存储器管理器102还将分页存储器106的一个或多个部分分配给压缩存储管理器104。虽然分开示出,但是为了分配存储器页,压缩存储管理器104被视为程序108。然而,如下面更详细地讨论的那样,为了承诺用量的目的,压缩存储管理器104的处理方式与程序108不同。压缩存储管理器104生成用于以压缩形式存储数据的一个或多个压缩存储110,例如每个程序108一个压缩存储110。系统100 还包括页文件112,页文件是存储设备上的可以存储存储器页的文件。存储有页文件112的存储设备是系统100中的辅助存储设备,并且在一个或多个实施例中具有比分页存储器106更慢的读/写时间,但是具有更大的存储容量。存储有页文件112的存储设备可以是例如闪存(例如,固态盘(SSD))或磁盘。尽管图1中示出了单个页文件112,但是应当注意,系统100中可以包括多个页文件。
存储器管理器102使用分页(paging)来管理分页存储器(paged memory)106。存储器管理器102将存储器106(例如,RAM)组织为特定(例如,固定)大小的数据单元的页。分页的动作是指当数据不在存储器106中时,从后备文件中以页为单位读取数据,该后备文件是系统100中的页文件112。分页的动作也是指以页为单位将脏(经修改的)数据写回到页文件112中。因此,存储器页也被称为以页文件为后备的存储器页。这种分页技术是本领域技术人员所熟知的。
可以被分页出去(写入页文件112)以及被分页进来(从页文件112读取)的存储器也被称为以页文件为后备的存储器。使用本文讨论的技术,由于借用或使用正被压缩的存储器页的承诺用量,任何以页文件为后备的存储器都可以被压缩而没有额外的存储器承诺(尽管存在少量的存储器承诺开销)被收取。各种不同类型的存储器可以以页文件为后备。例如,进程私有存储器可以是以页文件为后备的,操作系统内核模式组件使用的分页池存储器可以是以页文件为后备的,可分页驱动程序代码和数据可以是以页文件为后备的,存储器的共享扇区(可以是由进程分配并映射到可以打开该共享扇区的任何其它进程的共享存储器,也称为以页文件为后备的扇区)可以是以页文件为后备的等等。
存储器管理器102包括存储器控制器114和页表116,存储器控制器114操作以执行存储器管理器102的功能,页表116是与分页存储器106的存储器页相关的各种信息的记录。页表116包括指示在任何给定时间存储页被存储在何处的信息。在下面的讨论中,可以参考不同类型的(例如,不同状态的)私有进程存储器页。诸如共享扇区(例如,文件或以页文件为后备的扇区)的其它类型的存储器的映射可以在页表116中具有不同的格式。如下面更详细地讨论的,存储器页通常存储在物理存储器(分页存储器106)中或在压缩存储110中(其本身可以被存储在物理存储器或页文件112中),尽管在某些情况下,未压缩的存储器页可被存储在页文件112中。对于存储在未压缩物理存储器中的存储器页,存储器管理器102直接访问所述存储器页。对于存储在压缩存储110中的存储器页,存储器管理器102从压缩存储管理器104请求存储器页,压缩存储管理器104适当地检索并解压缩存储器页,并将解压缩的存储器页返回给存储器管理器102。在未压缩的存储器页被存储在页文件112中的情况下,存储器管理器从页文件112检索该存储器页。
分页存储器106包括多个页,每个页可以在任何给定时间被分类为多个不同类型的页之一,并且该分类可以随着时间而改变。一种类型的存储器页是已被分配给程序108并且当前正被程序108使用的存储器页,并且这种类型的存储器页被称为程序108的进程的工作集(也称为程序108的工作集)中的工作集页(或替换地,已指定页)。当前使用的存储器页是指在阈值时间量(例如,前20秒) 内已由程序108访问的存储器页,或者由程序108另行以该存储器页不被存储器管理器102重新利用的方式访问的存储器页。重新利用存储器页是指由存储器管理器102将该存储器页重用于其它事项,诸如存储用于相同或不同程序的不同数据或用于系统中的其它用途。
另一种类型的存储器页是已经被分配给程序108并且当前未被程序108使用的存储器页,并且这种类型的存储器页被称为备用页(或替换地,可重新指定的页)。当前未使用的存储器页是指其内容未被修改(或者自上次修改以来已被写入页文件112或压缩存储110)、并且在阈值时间量(例如,前20秒)内未被程序108访问、或者以由存储器管理器102可重新利用该存储器页的方式由程序108 另行访问的页。可以通过例如被指定为不同类型的页(例如,工作)、被分配给不同的程序等来重新利用存储器页。
另一种类型的存储器页是其内容已被修改但尚未被复制到页文件112的存储器页,并且这种类型的存储器页被称为已修改页(或者替换地,脏页)。已修改存储器页不被存储器管理器102重新利用。然而,如下面更详细地讨论的,在将已修改存储器页进行压缩并存储到压缩存储110中(或将经压缩的已修改存储器页写入页文件112)之后,可以改变该存储器页的分类(例如,改变为备用页或空闲页)。
另一种类型的存储器页是当前未分配给程序108,并且存储器管理器102可对其进行任何操作(包括被重新利用)的存储器页。这种类型的存储器页被称为空闲页(或者替换地,解除分配页)。
存储器管理器102使用各种规则或标准来确定分页存储器106的存储器页何时被分配给程序108、哪些存储器页被分配给哪些程序108、先前分配给程序108 的哪些存储器页将被重新利用等等。存储器管理器102还确定存储器页的类型的分类,如果适当则改变存储器页的分类。在一个或多个实施例中,存储器管理器102维护分页存储器106的哪些存储器页被分类为哪个类型的页的列表或其它记录。例如,存储器管理器102可以维护工作集页的列表或其它记录、备用页的列表或其它记录、已修改页的列表或记录、空闲页的列表或记录等等。
系统100表示一个或多个设备。在一个或多个实施例中,系统100中示出的组件102-108作为相同计算设备的一部分被包括在内。替换地,组件可以分布在两个或更多个设备上。实现系统100的一个或多个设备可以是各种不同类型的设备中的一个或多个,诸如台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板计算机或者平板手机设备、蜂窝式或其它无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、头戴式显示器、手表、手镯)、娱乐设备(例如娱乐电器、通信地耦合到显示设备的机顶盒、游戏控制台)、电视机或其它显示设备、汽车计算机等。
图2示出根据一个或多个实施例的存储器页的示例生命周期200。存储器页可被分配给程序,并被包括在该程序的工作集202中。该程序的工作集202包括该程序的工作集页。存储器管理器102可以在各种时间并且出于各种原因修剪(也称为缩减(reduce))该程序的工作集202中的存储器页,所述原因例如是使存储器页可用于其它程序。已经被写入(已修改)并且从工作集202修剪的存储器页被移动204到存储器页的已修改列表206。
压缩存储管理器104压缩修改列表206中的存储器页,并将经压缩存储器页添加208到压缩存储110的存储器页。压缩存储管理器104可以确定何时以不同方式压缩经修改列表中的存储器页的时间,诸如以规则或不规则的间隔压缩存储器页、响应于已修改列表中至少包括阈值数量的存储器页来压缩存储器页、响应于来自存储器管理器102的请求来压缩存储器页,等等。在被压缩并被添加到压缩存储110之后,将已修改列表206中的存储器页移动210到空闲页的列表,或者替换地,备用列表212(备用页的列表)。存储器管理器102和/或压缩存储管理器104具有关于存储器页是被移动到空闲页列表还是备用页列表的完全灵活性。压缩后将存储器页移动到空闲列表减少了对经压缩和未压缩内容的存储器的双重缓冲,尽管可以将存储器页放在备用列表上,并且可以降低它们的优先级以使它们成为存储器需要时重新利用的更可能候选。
压缩存储管理器104还向存储器管理器102通知修改列表206中压缩存储管理器104正在压缩的存储器页。存储器管理器102避免对页正被压缩到其中的存储器页使用附加存储器承诺。有效地,正被压缩的存储器页的承诺用量被转移到存储器页正被压缩到其中的压缩存储存储器页。因此,对程序108的存储器页和程序108的存储器页被压缩到其中的压缩存储存储器页两者都不维持承诺用量。
压缩存储110本身由多个存储器页(这里也称为压缩存储存储器页)组成,并且这些压缩存储存储器页可以根据需要由压缩存储110或存储器管理器102移动214到已修改列表206。然而,根据需要,压缩存储存储器页不需要长时间(可能无限期地)被移动到已修改列表。压缩存储存储器页可以保留在压缩存储的工作集中。
对于被移动到已修改列表206的压缩存储存储器页,存储器管理器102(或替换地,压缩存储管理器104)将压缩存储存储器页写出216到页文件112。因此,在被压缩并存储在压缩存储存储器页中之后,来自工作集202的存储器页可被写到页文件112。应当注意,压缩存储管理器104不尝试压缩已修改列表206上的压缩存储存储器页。压缩存储管理器104可以以不同的方式标识不尝试压缩的存储器页,诸如基于存储器页被分配给的进程(例如,如果被分配给系统进程,诸如压缩存储管理器,则不尝试压缩存储器页)、通过维护压缩存储存储器页的记录等等。
可出现这样的情况,其中来自被移动到已修改列表206的工作集202的存储器页不能在预期时间量内(例如,在阈值时间量内)被压缩或另行添加到压缩存储110的存储器页,或者系统100出于各种策略原因选择完全不压缩存储器页。这样的情况可能偶尔出现,诸如由于系统100中的重存储器使用率、系统100中的重处理器使用率、应用到系统100的各种策略,等等。在这种情况下,存储器管理器102将未压缩存储器页写出218到页文件112。这些存储器页因此不被包括在压缩存储110的存储器页中,但存储器管理器102维持这些存储器页可以从页文件112而不是压缩存储管理器104获得的记录(例如,在页表116中)。
回到图1,在一个或多个实施例中,分页存储器106的每个页具有相应的优先级。只有特定类型的存储器页(例如,已修改页)可以具有优先级,或者替换地,所有类型的存储器页可以具有优先级。存储器管理器102为每个存储器页设置优先级,并且能够以各种不同方式确定存储器页的优先级。优先级可以以各种方式在系统100中使用。在一个或多个实施例中,存储器页基于其优先级被写入到页文件112。要被写入到页文件112的较低优先级的存储器页在较高优先级的存储器页之前被写到页文件。类似地,在一个或多个实施例中,存储器页从备用列表基于其优先级被重新利用。
压缩存储110被实现为被存储器管理器102分配给压缩存储管理器104的一个或多个存储器页。这些存储器页是在压缩存储管理器104的用户模式虚拟地址空间中的存储器页,压缩存储管理器提供各种功能。实现压缩存储110的存储器页不消耗内核虚拟地址空间,并提供安全性以防止数据泄露,因为没有特权用户模式程序可以访问所述存储器页上的数据。此外,通过使用压缩存储管理器104 的用户模式虚拟地址空间中的存储器页,存储器管理器102和压缩存储管理器104 使用现有的存储器管理器的应用程序编程接口(API)具有对存储器页的控制,从而允许压缩存储管理器104按照需要控制它的后备数据的可分页性、交换能力等等。
在一个或多个实施例中,压缩存储管理器104压缩分页存储器106的页,并且将经压缩页存储在压缩存储110的一区域中,也被称为将存储器页压缩到压缩存储110中或压缩存储110的该区域中。压缩存储管理器104为每个程序108生成单独的压缩存储110(并与每个程序108相关联),并将来自特定程序108的来自已修改列表206的压缩存储器页添加到与该特定程序相关联的压缩存储110的区域。替换地,压缩存储管理器104可以按照与每个程序108一个压缩存储110 不同的粒度生成和维持压缩存储110(例如,压缩存储管理器104可以针对任意程序集合108或针对系统中的所有可分页存储器生成并维持压缩存储110)。
压缩存储110的每个区域由分页存储器106的被存储器管理器102分配到压缩存储管理器104的多个存储器页组成。例如,一区域可以是128千字节,并且存储页中的每一个可以是4千字节,尽管这些值是示例且可以替换地使用其它区域和/或页大小。在一个或多个实施例中,分页存储器106正被压缩到特定区域的页具有至少类似的优先级,并且组成分页存储器106的区域的存储器页随着所述存储器页被压缩到该区域中而具有至少有类似的优先级。具有至少类似的优先级的存储器页是指具有相同或类似的优先级的存储器页。
应当注意的是,本文所讨论的由压缩存储管理器104或压缩存储110执行的操作可以由压缩存储管理器104和压缩存储110之一或两者来执行,本文讨论的由压缩存储管理器104执行的操作可以可替换地由压缩存储110执行,并且本文所讨论的由压缩存储110执行的操作可以可替换地由压缩存储管理器104执行。在一个或多个实施例中,压缩存储管理器104负责管理每个压缩存储110,将读取和写入请求路由到适当的压缩存储110,管理压缩储存110的存储器(例如,请求被分配到压缩存储110的存储器页),等等。在这种情况下,每个压缩存储110 可以简单地是存储器页集。可替换地,用于管理压缩存储110的存储器的至少一些所述控制和逻辑(例如,请求由存储器管理器102分配给压缩存储110的分页存储器106的页集合)可以由压缩存储110本身来实现。在这种情况下,压缩存储110包括一个或多个存储器页以及压缩存储模块以实现用于管理用于压缩存储 110的存储器的控制和逻辑。
为了创建区域,压缩存储管理器104请求分页存储器106的被存储器管理器 102分配给管理器104的页集合。所分配的页集合被分类为工作集页,并且压缩存储管理器104将所分配的页集合与特定压缩存储110相关联。压缩存储管理器104 压缩已修改列表206上的存储器页206,并将那些压缩页存储在分配给压缩存储管理器104的页集合104中。
因此,例如,特定页集合被压缩到附加页集合中。在该特定页集合被压缩后,该附加页集合也被分类为已修改页。因此,压缩存储管理器104将该特定页集合压缩到相同类型(已修改)的不同页集合中。然而,由于压缩存储管理器104压缩该特定页集合,在特定页集合中的页的数量通常比在该压缩页集合中的页的数量更大。压缩页集合此时可以被写入到页文件112。各种不同的策略可被应用以确定何时(或者是否)压缩页集合被写入到页文件112。
应当注意,在某些情况下,压缩存储器页不被分配为可分页存储器,而是被分配为某种其它类型的存储器。例如,压缩存储器页可以被分配为非分页存储器,或者被锁定(使得存储器页不被写出到页文件112)的分页存储器。
图3示出根据一个或多个实施例的对存储器页进行压缩的示例。分页存储器 106包括五个存储器页300,如在302处示出的。压缩存储管理器104被分配压缩存储的包括两个存储页304(例如,与存储器页300具有至少类似优先级的存储器页)的区域。压缩存储管理器104将存储器页300压缩到存储器页304中,如在 306处示出的。压缩后,存储器管理器102可以重新利用存储器页300,因为存储器页300的压缩版本作为存储器页304被存储在分页存储器106中。因此,压缩后,分页存储器106存储存储器页304,但不需要存储存储器页300。
回到图1,系统100还包括虚拟页文件118。每个存储器页都有标识符(也被称为键),其允许将系统100中的存储器页彼此区分。存储器控制器114和压缩存储管理器104各自通过它们的标识符指代存储器页。用于要被压缩的存储器页 (在本文中也被称为目标存储器页),存储器控制器114向该目标存储器页指定来自虚拟页文件118中的一页文件位置。虚拟页文件118是在存储器管理器102 的存储器空间的一组存储器位置。虚拟页文件118没有被存储在系统100中的辅助存储设备上(与页文件112不同),并且因此被称为“虚拟”页文件。
存储器控制器114将该目标存储器页分配给来自虚拟页文件118的该页文件位置。以页文件112为后备的页文件位置被用于压缩存储110中目标存储器页将被压缩到其中的页。压缩存储管理器104在知道该存储器页正被压缩的情况下,使用或“借用”来自程序108的目标存储器页的承诺用量。该目标存储器页的承诺用量实际上并没有从程序108释放并且由压缩存储管理器104获取;相反,承诺用量仍与程序108在一起。压缩存储管理器104因此可以被称为被背负在由程序108为目标存储器页获取的承诺用量上,以免获取其自身针对目标存储器页的承诺用量。然而,压缩存储管理器104知道,为了访问目标存储器页,目标存储器页将需要被解压缩,解压缩由压缩存储管理器104执行。压缩存储管理器104 因此可以使用针对目标存储器页的承诺用量,但是可以在稍后释放该承诺用量,如下面所讨论的。目标存储器页的承诺用量从而有效地从程序108转移到压缩存储管理器104,并且系统100不使用额外承诺用量以用于压缩目标存储器页。
虚拟页文件118是存储器页的不属于页文件112的一部分的关键“命名空间”,因为该空间是通过写入页文件112的经压缩已修改存储器页使用的。应当注意,虚拟页文件118是这样的关键命名空间的实现的一个示例,并且这样的关键命名空间可使用各种其它表、数据结构等等来实现。
图4示出根据一个或多个实施例的压缩存储管理器对一个程序的承诺用量的使用的示例。图4示出系统中可被使用的存储器承诺402的最大量。两个程序404 和406分别具有存储器承诺用量408和410。压缩存储管理器104还具有存储器承诺用量412。此存储器承诺用量412包括由压缩存储管理器104使用以执行本文所讨论的由压缩储存管理器104执行的各种操作的存储器的量,以及对承诺的附加预先使用,如下面更详细地讨论的。当分配给程序404的存储器页被压缩到压缩存储中时,用于程序404的存储器承诺用量408的一部分414被压缩存储管理器 104使用。类似地,当分配给程序406的存储器页被压缩到压缩存储中时,用于程序406的存储器承诺用量410的一部分416被压缩存储管理器104使用。
回到图1,每个压缩存储由多个区域组成,这些区域可以是与存储器页相同大小或与存储器页不同大小的。多个压缩存储器页可以被存储在单个区域中。存储器管理器102可以使得压缩存储管理器104从压缩存储器存储中移除压缩页,也被称为从压缩存储器存储中逐出压缩页。该移除可响应于各种不同事件进行,诸如对程序108所请求(例如,读取存储器页或修改存储器页的请求)的页的访问、来自该程序的释放存储器页的请求等等。
当一区域成为空的(所有压缩存储器页已被从该区域移除)时,该区域消耗的物理存储器(例如,RAM)或页文件112中的空间被压缩存储管理器104释放或解放。该区域消耗的物理存储器或存储器文件中的空间的释放是指组成该区域的存储器页被释放(例如,移动到空闲列表)或该页文件中的空间被释放(例如,没有物理存储器页被移动到空闲列表,因为该数据是在页文件中而不是在存储器中)。该区域消耗的物理存储器(例如,RAM)或页文件112中的空间(其是被承诺给另一程序的存储器)可导致系统100处于过度承诺的状态。相应地,存储器管理器102允许压缩存储管理器104释放该区域而存储器管理器102不需要任何附加存储器(因为系统100可能处于过度承诺的状态,所以在需要附加存储器时存储器管理器102可能无法获得附加存储器)。该系统100因此只是暂时处于这种过度承诺的状态。存储器控制器114展露一个或多个API方法104,所述API 方法可被压缩存储管理器104调用,并且在被调用时使得存储器控制器114释放该区域而存储控制器114不需要任何附加存储器。
在释放该存储器区域时,存储控制器114不因需要附加存储器而受阻,这指的是存储器控制器114能够执行释放该区域的过程,而无需向本身分配任何附加存储器页。存储器控制器114可以以各种不同方式操作,以抑制因需要附加存储器而受阻。在一个或多个实施例中,存储器控制器114在释放该存储器区域时不获取在访问其它可分页存储器时本会获取的锁、不分配新存储器、并且不访问存储器控制器114的任何可分页存储器。存储器控制器114还采取一个或多个动作以确保所有用于映射存储区域存储器(压缩存储110的存储器)的必要数据结构可被更新而不出现故障。在一个或多个实施例中,这一个或多个动作包括在物理存储器中锁定映射该存储区域存储器的所有页表页,尽管可以另外或替换地采取其它动作。压缩存储管理器104还保证不使用多于一个线程对同一区域操作,以避免需要为使存储器控制器114获取存储器页上的锁,获取锁可能干扰不访问存储器控制器114的任何可分页存储器的保证。
压缩存储管理器104接收并处理来自存储器控制器114的存储器页逐出请求。压缩存储管理器104操作,以便快速地(例如,在阈值时间量内)接收存储器页逐出请求并开始对存储器页逐出请求的处理。对存储器页逐出请求的处理包括:从压缩存储移除经压缩存储器页(例如,记录该经压缩存储器页不再被存储在压缩存储器存储中,任选地删除该经压缩存储器页),并且还任选地包括解压缩该经压缩存储器页并将经解压缩的存储器页返回给存储器控制器104。压缩存储管理器104操作以使得对存储器页逐出请求的处理不因需要附加存储器而受阻,这是指压缩存储管理器104能够执行对存储器页逐出请求的处理,而无需使任何附加存储器页被分配给压缩存储管理器104。
一旦存储器控制器114将存储器页逐出请求传递至压缩存储管理器104,存储器控制器114就知道压缩存储管理器104将处理该存储器页逐出请求而不因需要附加存储器而受阻。存储器控制器114因此能够使用该压缩存储管理器104从其借出了该存储器承诺的针对程序108的被逐出的存储器页的存储器承诺,因为存储器控制器114知道压缩存储管理器104在从压缩存储逐出该存储器页时将不请求任何附加存储器页。
在一个或多个实施例中,压缩存储管理器104操作以通过以下方式使得对存储器页逐出请求的处理不因需要附加存储器而受阻:预分配资源,使得压缩存储管理器104可以保证每次可处理至少一个逐出请求。该预分配在任何经压缩存储器页被存储在压缩存储之前(例如,在创建压缩存储时)完成。将资源预分配给压缩存储管理器104是指对于待处理的至少一个逐出请求分配足够的存储器页、在物理存储器中锁定在处理至少一个逐出请求时使用的任何存储器映射或其它数据结构(例如,图7的存储器映射702和图8的存储器映射802,在下面更详细地讨论)等等。
在一个或多个实施例中,压缩存储管理器104作为具有不因可能需要存储器页的任何操作而永久受阻(为之等待)的线程(例如,被称为存储工作者线程) 的进程运行,以便保证它能够处理存储器页逐出请求(和压缩,这进而会产生被释放的空区域,如下面更详细讨论的)。存储工作者线程不因需要任何附加存储器而受阻,即使已为那些存储器页使用了承诺。这是因为系统100在该时刻可处于过度承诺的情况(这将随着存储工作者线程执行逐出以释放区域后备页而被解决)。存储工作者线程任选地经由帮助者线程间接因这些操作而受阻,但如果这样,则这种受阻具有足够短的超时以确保处理存储器页逐出请求的整个系统推进过程得以维持。
图5是示出根据一个或多个实施例的用于压缩存储器页的示例过程500的流程图。过程500由诸如图1的压缩存储管理器104等压缩存储管理器来执行,并可以用软件、固件、硬件、或其组合来实现。过程500被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于压缩存储器页的示例过程;本文中参考不同附图包括了压缩存储器页的附加讨论。
在过程500中,经修改列表上的一组一个或多个存储器页被标识(动作502)。该组一个或多个存储器页可以以各种方式被标识,诸如以存储器页被添加到经修改列表中的次序被标识、基于页的优先级被标识(例如,较低优先级的页在较高优先级的页之前被标识)等等。
在动作502中标识的该组存储器页502被压缩到分页存储器的压缩存储的一区域中(动作504)。作为动作504中的压缩的一部分,压缩存储管理器维持该组存储器页的每个存储器页的压缩版本被存储在该区域中的何处的记录。该记录可以采取各种形式,诸如对于存储器页的每个压缩版本,哪一个或多个经压缩存储存储器页存储该存储器页的压缩版本的记录;对于存储器页的每个压缩版本,该区域中存储该存储器页的压缩版本的地址范围的记录,等等。
对存储器页进行压缩是指对存储器页中的内容(例如,存储在其中的数据) 进行压缩。各种不同的公开和/或私有压缩技术中的任一种可用于对存储器页进行压缩。例如,存储器页可以使用游程长度编码压缩算法、LZW压缩算法、霍夫曼编码算法等等被压缩。可任选地采用多种不同的压缩算法,诸如针对不同类型的内容采用不同的压缩算法。例如,一种压缩算法可被用于字母数字和/或文本内容,另一压缩算法可被用于图像内容,而另一压缩算法可被用于音频内容。被用于对存储器页进行压缩的压缩技术通常是无损压缩算法,虽然在某些情况下(例如,对于某些图像和/或音频内容)可以替换地使用有损压缩算法。该特定压缩算法也可以是设备相关的,其中更快的设备(例如,具有更强大的一个或多个处理器) 可被配置有更处理器密集的、更好地进行压缩的压缩算法,而较慢的装置(例如具有较不强大的一个或多个处理器)可被配置有不那么好地进行压缩的更不处理器密集的算法。该特定压缩算法也可以基于与存储设备性能的折衷。如果CPU大幅度地比存储设备性能更好,则可使用更好地进行压缩的更处理器密集的压缩算法(且因此导致更少的存储设备I/O)。
在一个或多个实施例中,存储器页在动作504中个别地被压缩。替换地,两个或更多个存储器页可以被一起压缩(例如,压缩算法可以在两个或更多个存储器页上一起运行,而不是个别地运行)。
在动作504中任选地还可执行对该组存储器页的附加处理。该附加处理可以是加密该组存储器页的内容(例如,使用对称密钥加密,公钥加密,等等)、为该组存储器页生成错误检测数据,诸如CRC(循环冗余校验)数据、为该组存储器页生成认证信息,诸如HMAC(哈希消息认证码)数据、等等。
在动作502中标识的该组存储器页的承诺用量被压缩存储管理器使用(动作506)。压缩存储管理器可以使用或“借用”该承诺用量以用于目标存储器页,因为压缩存储管理器知道该存储器页正被压缩,如同上面所讨论的。
在动作502中被标识的该组存储器页在被压缩到压缩存储之后被移动到备用列表(动作508),或替换地被移动到空闲列表。该组存储器页可以以各种方式被移动到备用列表(或空闲列表),诸如响应于压缩存储管理器104告知存储器管理器102该组存储器页可以被释放。在动作502中标识的该组存储器页可以被移动到备用列表(或空闲列表),并被重新利用,因为同一存储器页的两个版本(一个版本是未压缩的,而一个版本是经压缩的)不需要被保存在分页存储器中,因为这可能不是对分页存储器的高效使用。
组成压缩存储的该区域的将压缩存储存储器页被存储器管理器写出到页文件(动作510)。应当注意,经压缩存储存储器页不需要被立即写到页文件。相反,经压缩存储存储器页的写出可以被延迟到稍后的时间,诸如在存储器管理器102 期望释放存储器页以分配给另一程序108时,在压缩存储管理器104期望写经压缩存储存储器页时,等等。还应注意,可实现任何数量的技术以提高将经压缩存储存储器页写到页文件的速度、效率等等(例如,经压缩存储存储器页可被写到毗连块中等)。
还应注意,将经压缩存储存储器页写到页文件510,而不是将在动作502中标识的该组存储器页写出到页文件。因此,在动作502中标识的该组存储器页的压缩版本被写到页文件而没有(或不存在)将该组存储器页的解压缩版本写到页文件。
一旦组成该区域的经压缩存储存储器页被写到页文件,经压缩存储存储器页就被放在备用列表上。此时,经压缩存储存储器页被当做系统100中的可用存储器对待且根据需要可在任何时刻被存储器管理器102重新利用。
在一个或多个实施例中,压缩存储管理器不允许存储器管理器写出经压缩存储存储器页,直到该经压缩存储存储器页被基本上填满。被基本上填满的经压缩存储存储器页是指该存储器页中几乎没有剩余下附加经压缩存储器页可被存储到其中的任何存储空间。例如,经压缩存储存储器页的至少阈值量的存储空间已经被用于存储该经压缩存储器页。
应当注意,虽然本文中的一些讨论涉及压缩一个或多个进程的存储器页,但本文讨论的技术类似地适用于压缩所有可分页存储器的存储器页,其可以包括用户模式分页存储器和内核模式分页存储器。在这种情况下,整个页文件由压缩存储中的存储器表示,且压缩存储在所有经修改页通过该压缩存储时实质上管理该页文件。
图6是示出根据一个或多个实施例的用于检索经压缩存储器页的示例过程 600的流程图。过程600由诸如图1的压缩存储管理器104等压缩存储管理器来执行,并可以用软件、固件、硬件、或其组合来实现。过程600被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程600是用于检索经压缩存储器页的示例过程;本文中参考不同附图包括了检索经压缩存储器页的附加讨论。
从存储器管理器接收对存储器页的请求(动作602)。该请求可以例如是响应于来自程序108的在至少一个存储器页被压缩到压缩存储110中之后请求访问存储器页中的内容的请求。该请求包括至少一个存储器页的标识符,也被称为键 (key)。存储器管理器可以请求单个存储器页或多个存储器页。
响应于该请求,检查所请求的存储器页是否在分页存储器中的经压缩存储存储器页中(动作604)。如上所讨论的,经压缩存储存储器页不需要被立即写出到页文件112,所以所请求的存储器页可能仍然可以在分页存储器106的经压缩存储存储器页中可用。应当注意,经压缩存储存储器页可以在压缩存储管理器104的工作集中或各种列表(例如,经修改列表或备用列表)上,但仍处于分页存储器中。
如果所请求的存储器页在分页存储器中的压缩存储中,则所请求的存储器页被解压缩(动作606),并被返回给存储器管理器(动作608)。在被解压缩并返回后,将该经压缩存储器页从压缩存储器110的该区域删除,从而避免了该存储器页的未压缩形式和经压缩形式之间的该存储器页的重复。在经压缩存储存储器页的内容已被解压缩并返回后,该经压缩存储存储器页可被重新利用或释放。
所请求的存储器页被解压缩的方式可以至少部分基于被用于压缩所请求的存储器页的技术而变化。对该存储器页执行的任何其它处理也在动作606中被验证或撤消,诸如解密该存储器页、验证错误检测数据、验证认证信息、如果此验证失败则纠正数据(如果可能),等等。如果错误检测数据或认证信息不能被验证和/或该数据不能被纠正,则所请求的存储器页被损坏的指示(而不是解压缩的所请求的存储器页)可以被返回给存储器管理器。
如果所请求的存储器页不处于分页存储器中的压缩存储中,则包括所请求的存储器页的经压缩存储存储器页被从该页文件中检索(动作610)。检索经压缩存储存储器页包括从该页文件读取该经压缩存储存储器页并将该经压缩存储存储器页存储到分页存储器106的压缩存储110中。此时所请求的存储器页在分页存储器中的压缩存储110中,所以所请求的存储器页被解压缩(动作606),并被返回给存储器管理器(动作608)。
应当注意,动作604和610可被一起执行。例如,压缩存储管理器104维持哪些存储器页被压缩到哪些经压缩存储存储器页中的记录。响应于动作中的请求 602,压缩存储管理器104读取在其中所请求的存储器页被压缩的经压缩存储存储器页。如果该经压缩存储存储器页在分页存储器106的压缩存储110中,则压缩存储管理器104从分页存储器106读取该经压缩存储存储器页。如果该经压缩存储存储器页不在分页存储器106的压缩存储110中,则页错误发生,存储器管理器102从页文件中检索该经压缩存储存储器页并将该经压缩存储存储器页放到分页存储器106中,随后压缩存储管理器从分页存储器106读取该经压缩存储存储器页。
还应当注意,除所请求的存储器页外,压缩存储管理器104还可任选地选择解压缩并返回(并且在需要时从页文件中检索)一个或多个存储器页。例如,压缩存储管理器104可以选择解压缩和返回所请求的存储器页附近(例如,在阈值地址范围内)的一个或多个存储器页,以尝试通过降低存储器页的未来存储器管理器请求来提高性能。
还应当注意,通过本文所讨论的存储器页的压缩和存储器页的检索,压缩存储管理者104操作以保证来自存储器管理器的写入(压缩)或读取(检索)请求的正向进展。由压缩存储管理器104保证的正向进展是指防止系统100中因为至少部分由于存储器页压缩而没有存储器页可用的死锁。压缩存储管理器104操作以保证此正向进展,无论所请求的存储器页是否已经被压缩并存储在页文件112 中且无论所请求的存储器页在被压缩并存储在页文件112中之后是否已经被重新利用。在一个或多个实施例中,用于压缩存储器页的正向进展通过以下来被保证:告知存储器管理器将经修改列表上的一个或多个未压缩存储器页写到页文件,由此释放一个或多个存储器页。用于检索存储器页的正向进展通过以下来被保证:提前预分配必需资源(例如,在压缩存储管理器的工作集中的一个或多个存储器页),以确保至少一个这样的读将始终拥有所需的资源来进行。
回到图1,每个存储器页具有与其相关联的标识符(键),其允许存储器页彼此区分。该标识符可由各组件中的任何组件来分配,诸如存储器管理器102或压缩存储管理器104。存储器页的压缩版本在分页存储器106比在存储器页本身中占用更少的空间,因此相同数据单元结构没有被压缩存储管理器104使用。例如,存储器管理器102可以按照存储器页来管理分页存储器106,但压缩存储管理器 104不会。
压缩存储管理器104维护存储器页映射,以标识压缩存储110中存储各压缩存储器页的区域。图7示出根据一个或多个实施例的示例存储器页映射702的示例。对于压缩至压缩存储110中的每个存储器页,存储器页映射702维持相应的记录704,该记录标识经压缩存储器页被存储在存储器页的区域中的何处。压缩存储110被示出为一个或多个(n)不同区域706(1),...,706(n),每个区域本身是由如上讨论的多个存储器页组成的。在一个或多个实施例中,针对分页存储器106 中的每个压缩存储110维持单独的存储器页映射。替代地,多个压缩存储的存储器页映射可以被组合成单个存储器页映射,并且记录704可包括经压缩存储器页被存储在其中的压缩存储110的标识符。
每个记录704包括页键字段710、区域号码字段712、偏移字段714、大小字段716、以及(一个或多个)标志位字段718。页键字段710存储对应经压缩存储器页的标识符。该标识符可采取各种不同形式中的任何形式。例如,该标识符可以是进程标识符和虚拟地址、记录标识符等等。页键字段710包括在该存储器页的压缩期间该存储器页被分配到其的虚拟页文件118中的位置的标识符,如上所讨论的。
区域号码字段712存储对应压缩存储器页被存储在其中的特定区域706的标识符。虽然通常是数字,然而此区域可以用各种其他方式中的任何方式来标识。偏移字段714存储到特定区域706中对应经压缩存储器页的数据存储开始处的偏移的标识符706。替代地,不是使用区域和偏移标识符,而是可使用存储压缩部分中对应经压缩存储器页被存储的位置的(一个或多个)任何其它标识符的一个或多个字段。
大小字段716存储对应经压缩存储器页的大小(例如,以字节计)的标识符。在给定区域、到该特定区域中的偏移以及经压缩存储器页的大小的情况下,经压缩存储器页被存储的存储器地址范围可被容易地标识。(一个或多个)标志位字段718存储关于对应经压缩存储器页的各种状态信息。这样的标志位的示例包括用于确定选择哪些存储器页来压缩的存储器页的选择优先级、对应于存储器页的优先级等等。
要领会,存储器页映射702仅是一个示例。在其它实施例中,附加字段可以被包括在映射702的每个记录中。例如,如CRC数据之类的错误检测数据、如 HMAC数据之类的认证信息、描述存储器页的使用历史和/或频率的信息等等可以被包括在映射702的每个记录中。而且,字段710-718中的一个或多个可以从映射702的记录中省去。此外,应当注意,字段710-718的一个或多个中的数据可以与存储器页一起被存储在分页存储器106中,而不是在单独的记录中。
除了存储器页映射702,压缩存储管理器104还维护区域映射,以标识什么存储器页被存储在区域的特定位置中。因此,存储器页映射702操作以标识经压缩存储器页被存储在何处,而区域映射操作以标识哪个经压缩存储器页被存储在区域的给定位置中。
图8示出了根据一个或多个实施例的示例区域映射802。对于到区域中不同存储器页被存储处的每个偏移,区域映射802维护标识存储在该偏移处的对应经压缩存储器页的记录804。每个记录804包括页键字段806、区域号码字段808、和偏移字段810。
页键字段806存储对应经压缩存储器页的标识符,其类似于图7的记录704 的页键字段710。页键字段806包括在该存储器页的压缩期间该存储器页被分配到其的虚拟页文件118中的位置的标识符,如上所讨论的。区域号码字段808存储对应经压缩存储器页被存储在其中的特定区域706的标识符,其类似于记录704 的区域号码字段712。偏移字段810存储到特定区域706中对应经压缩存储器页的数据存储开始处的偏移的标识符,其类似于记录704的偏移字段714。替代地,不是使用区域和偏移标识符,而是可使用存储压缩部分中对应经压缩存储器页被存储的位置的(一个或多个)任何其它标识符的一个或多个字段。
要领会,区域映射802仅是一个示例。在其它实施例中,附加字段可以被包括在映射802的每个记录中,和/或一个或多个字段806-810可以从映射802的记录中省去。此外,应当注意,字段806-810的一个或多个中的数据可以与存储器页一起存储在图1的分页存储器106中,而不是在单独的记录中。
图7的存储器页映射702和图8的区域映射802可以以各种不同方式中的任何方式来实现。在一个或多个实施例中,这些映射各自被实现为B+树,以提升访问个别记录时的性能。替换地,各种其它常规数据结构中的任何数据结构可以被用于实现这些映射,诸如AVL树、哈希表、数组等等。
回到图1,压缩存储管理器104还压实压缩存储110中存储经压缩存储器页的区域。随着时间的推移,被压缩并被存储在一区域中的存储器页可以从该区域中移除。如上所讨论的,例如移除或逐出可能会因各种原因而发生。
从区域中移除经压缩存储器页导致存储经压缩存储器页的区域的存储器页内的空隙或块。在压实过程期间,压缩存储管理器104合并剩余的经压缩存储器页,以便这些空隙或块被填充。
在一个或多个实施例中,经压缩存储管理者104跟踪区域被利用得有多好。表示区域被利用得有多好的值是基于有多少数据被存储在所述区域的存储器页中 (例如,所有存储在该区域的存储器页中的经压缩存储器页的大小的总和)和所述区域的当前大小(该区域的仍旧可用的存储器页的大小的总和)来确定的。如果这两个值的差值或比值超过阈值,则压缩存储管理器104确定压实应当被执行。此压实阈值可以是固定量或可变量、区域的当前大小的10%、零等等。在其它实施例中,每当在区域的任何存储器页中有任何空隙或块就执行压实。
压实通过将经压缩存储器页从一个区域重新定位至同一区域或不同区域内的另一个位置来执行。在每个存储器页的各种经压缩存储器页的大小可以通过访问由压缩存储管理器104使用的数据结构容易地确定(例如,如上面参考图7所讨论的)。在一个或多个实施例中,特定区域内的经压缩存储器页被压实在一起(例如,在该区域的开头或结尾处),以便该区域中的所有空隙在一起。这可导致区域中的一个较大空隙而不是多个较小空隙,并允许较大经压缩存储器页被重新定位在该区域内。替换地,可不执行这样的区域间压实,且经压缩存储器页可以简单地被重新定位到区域中的现有空隙中,或经压缩存储器页可以被重新定位到不同区域。
压实可导致经压缩存储器页被从(一个或多个)区域重新定位到一个或多个其它区域,因而清空一区域的存储器页。一旦一区域的存储器页被清空,压缩存储管理器104可以压缩和存储附加存储器页到该存储器页中,或释放该存储器页到存储器管理器102(例如,释放该存储器页)。
哪些经压缩存储器页要被重新定位到哪些区域中的确定可以以各种方式中的任何方式来进行。例如,来自具有最多空隙(并且因此在其存储器页中的最小量的数据)的区域的经压缩存储器页可以被首先选择用于重新定位,因为压缩存储管理器104更可能能够将来自该区域的所有经压缩存储器页重新定位到其它区域内。作为另一示例,较大的压缩存储器页可以被首先选择,以避免用较小的经压缩存储器页填充较大的空隙。作为另一示例,经压缩存储器页可以被选择用于重新定位,以便减小从一个区域到另一区域的复制量。作为又一示例,区域的龄期 (age)可在确定哪些经压缩存储器页将被重新定位时被纳入考虑。经压缩存储器页的龄期指的是经压缩存储器页已经被压缩并存储在一区域的时间量。区域的龄期指的是例如该区域中的经压缩存储器页的平均、最大、和/或最小龄期。
用于压实的阈值可以是固定量(例如,区域的当前大小的不超过25%应当是空隙),或者替换地可以是动态量。此动态量可基于不同的标准改变,诸如存储在所述区域中的经压缩存储器页的可压缩性(例如,经压缩存储器页的更好的可压缩性可以增加在所述区域中允许的空隙)、系统100中的资源压力(例如,较高的压力可减少所述区域中允许的空隙)等等。关于系统100的当前状态的各种其他标准也可以在改变用于压实的阈值时使用,诸如命中率(例如,该区域中的存储器页有多频繁地被访问)、一天中的时间或其他用户上下文(例如,清晨、午餐期间、午饭后)、电池寿命等等。例如,如果处理器使用率非常高,则区域中允许的空隙可被增加以便减少处理器在重新定位存储器页时的负担。作为另一示例,如果系统100中的功率状态指示应当节省电力,或者如果电池电平为低,则在所述区域中允许的空隙可被增加以通过需要重新定位更少的经压缩存储器页来降低处理器的功耗。
压缩存储管理器104可在不同时间确定是否压实区域。例如,压缩存储管理者104可以以规则或不规则间隔做出该确定。作为另一示例,压缩存储管理者104 可响应于系统100中的不同事件做出确定,诸如处理器空闲达阈值时间量、系统 100中的资源压力正在增加的指示等等。
压缩存储管理器104操作以使得压实区域的过程不因需要额外存储器而受阻,这是指压缩存储管理器104能够执行压实区域的过程而无需任何附加存储器页的分配。压实区域涉及同时访问两个区域——从一个区域读取经压缩存储器页并将所读取的经压缩存储器页写入第二区域。在一个或多个实施例中,压缩存储管理器104操作,以通过对压缩存储管理器104为了能够访问执行压实所需的多个区域(例如,两个区域)而无需任何附加存储器页的分配所需要的任何资源进行预先收取,使得压实区域的过程不因需要额外存储器而受阻。此预先收取在任何经压缩存储器页被存储在压缩存储之前(例如,在创建压缩存储时)完成。因此,压缩存储管理器104保证或确保压实可以做出正向进展。
被压缩存储管理器104预先收取的资源可基于实现系统100的方式而改变。在一个或多个实施例中,被预先收取的资源是值两个区域的存储器页的承诺用量。如上面讨论的,一区域可以由多个存储器页(例如32个存储器页)组成。因此,预先收取的资源是64个存储器页(两个区域中的每个区域32个存储器页)的承诺用量。各种其它资源也被预先收取,如存储器页锁(例如,系统100可能对有多少存储器页可以在任何给定时间被锁定有限制(例如,被称为可用常驻(resident available)),且朝着该限制的值两个区域的存储器页的多个存储器页锁被预先获取。
在一个或多个实施例中,两个区域的这些预先收取的资源在全局范围内被收取以便所有压缩存储共享以便实现正向进展的目的。但是,只有一个存储可以是这两个区域的正向进展所有者(两个压缩存储不能每个都占用这两个区域之一)。用这种方式共享预先使用的资源降低了每一压缩存储的固定成本。然而,正向进展仍被保证,因为每个压缩存储的压实被保证一旦预先收取的资源的所有权被占用就做出正向进展,因为该所有权最终被释放且另一压缩存储可以得到它以进行它的压实。
在一个或多个实施例中,压缩存储管理器104作为具有执行区域之间的数据的复制的线程的进程(例如,被称为区域锁帮助者线程)运行。区域锁帮助者线程可能需要附加存储器页,并可能在存储器页上出现故障(导致存储器页被从页文件112带入物理存储器),因为资源(包括存储器页的承诺用量)已为压缩存储管理器104预先获得,所以该区域锁帮助者线程可以被执行。应当注意,区域锁帮助者线程不同于上面讨论的压缩存储管理器104的存储工作者线程(如上所讨论的,存储工作者线程不因需要存储器页而受阻,而区域锁帮助者线程可能因需要存储器页而受阻)。
另外,存储器管理器102暴露可以被压缩存储管理器104调用的一个或多个 API方法,并且当所述API方法被调用时导致存储器管理器102使用被压缩存储管理器104预先收取的存储器页锁。响应于压缩存储管理器104作出的存储器页锁请求,存储器管理器102锁住所请求的存储器页并对照被压缩存储管理器104 预先收取的存储器页锁收取存储器页锁,且进一步导致可能请求那些相同存储器页的存储器页锁的任何其它进程获得其自己的存储器页锁收取(其在该时刻可能可用或可能不可用)。响应于压缩存储管理器104作出的存储器页锁定释放请求,存储器管理器102释放由于压缩存储管理器104作出的存储器页锁请求而施加的存储器页上的锁(虽然存储器页可能仍旧被其他进程锁定),并将该存储器页锁作为压缩存储管理器104的预先收取的存储器页锁之一返回。通过要求这些其他进程获得它们自己的存储器页锁,避免了压缩存储管理器104希望释放存储器页上的锁但另一进程也在该存储器页上有锁但还没有释放该存储器页锁的情况。这允许压缩存储管理器104继续压实区域、根据适当情况为区域锁住和解锁存储器页,因为存储器锁已经被压缩存储管理器104预先收取。
此外,压缩存储管理器104允许任意数量的进程(或进程的线程)并行地从压缩存储器的区域进行读取,并且确保至少一个区域总是可以被读取。这一保证可以以不同方式提供。在一个或多个实施例中,这一保证是通过为了通过线程读取一区域,尝试在发起读取之前对整个区域收取存储器承诺来提供的(例如,针对由32个存储器页组成的区域收取32个承诺的存储器页)。做出此尝试,因为在该区域的读取正在进行时,该区域为忙且不能被压实或使其存储器页释放(因为任何数量的线程可能在该时刻从其读取/解压缩)。如果尝试成功,则该区域的存储器承诺被收取且读取可以继续。然而,如果尝试不成功(例如,因为系统100 处于其承诺限制),则经压缩存储管理器104对读取请求排队,并使用值一个区域的存储器页的预保留的承诺用量。这种预保留的承诺用量被压缩存储管理器104 仅用于读取请求,从而允许压缩存储管理器104确保一个区域总是可以被读取。使用这种预保留的承诺用量允许针对读取一区域的另一线程的存储器承诺用量失败,同时仍允许对压缩存储的读取以做出正向进展。
在一个或多个实施例中,压缩存储管理器104作为具有线程的进程(例如,被称为读取帮助者线程)运行。为读取帮助者线程预保留值一个区域的存储器页的承诺用量,并且不释放此承诺用量。读取帮助者线程因此可被依赖以使承诺用量读取存储器的一区域,即使系统100处于其存储器承诺限制。读取请求被排队到读取帮助者线程,并且这些读取请求被串行化(一个接一个地顺序执行),其中读取帮助者线程使用其预保留的承诺用量,对照该预保留的承诺用量,用于读取每个区域的存储器承诺被收取。压缩存储管理器104还确保了当一区域的存储器承诺被收取到读取帮助者线程时,其它线程不能搭载该预保留的收取。任何这样的其他线程必须获取其自己的存储器承诺用量,并且如果其他线程都无法做到如此则其读取被排队到读取帮助者线程。
压缩存储管理器104可以具有多个读取器帮助者线程,每个压缩存储一个读取器帮助者线程。用于一个区域的预保留的承诺用量被这些多个读取帮助者线程全局获取以便共享。这确保了至少一个读取帮助者线程正在系统上做出正向进展且一个读取帮助者线程被保证完成并释放预保留的承诺用量以让另一读取帮助者线程继续。
此外,在一个或多个实施例中,压缩存储管理器104预收取值至少一个区域的存储器承诺(任选地,每个承诺存储110值一个区域的存储器承诺)。如上所讨论的,多个存储器页可以被压缩成单个区域。这可能会导致例如单个区域已被创建但少量(少于组成该区域的存储器页的数量)的存储器页已被压缩并被存储在该区域的情况。在给定存储在该区域中的少量经压缩存储器页的情况下,没有足够的存储器承诺供压缩存储管理器104使用。通过预先收取值一个区域的存储器承诺(例如,如果该区域由32个存储器页组成则32页的存储器承诺),压缩存储管理器104可以保证有足够的存储器承诺用于整个区域,并允许值一区域的存储器页被读取、修改、或释放而不使为该区域提供后备的物理存储器或页文件112中的任何存储器页被释放。直到值一区域的存储器页被从压缩存储逐出,压缩存储管理器104将不会释放为该区域提供后备的物理存储器或页文件112的任何存储器页,并且预先收取的值一个区域的存储器承诺为这种情况提供了缓冲。如上所讨论的压实正向进展确保仅需要一个这样的区域预先收取,因为压实将确保仅一个区域未被完全填满。
值多个区域的存储器承诺可由压缩存储管理器104预先收取,虽然预先收取值单个区域的存储器承诺已足够。预先收取值单个区域的存储器承诺已足够,因为如果页不压缩,则逐出值一区域的页(通过读取和修改所述页或释放所述页) 将在该区域中创建大到足以创建空区域并释放其页的洞(在压实后)。然而,如果页压缩,则逐出值一区域的页可不腾出整个区域,但是这意味着该存储生成了尚未为其增加存储器承诺限制的空闲存储器,所以没有以新页文件为后备的存储器页可被创建以消费这些页。页文件页可以消费这些页且那些将没有(由压缩存储带来的)正向进展问题以被写出。所以,任何空闲页压缩产生最终增加了缓冲。
本文讨论的技术支持各种使用场景。本文讨论的技术通过经由压缩存储器减少物理存储器程序使用量,并且减少(几乎消除)压缩存储器的承诺成本来节省了计算设备中的存储器承诺。这增加了在任何给定时间在不必终止程序的情况下可在计算设备上运行的程序的数量。这也降低了允许在不必终止任何程序的情况下在任何给定时间在计算设备中运行给定数量的程序所需的分页存储器和/或存储设备空间(针对页文件)的量。
不具有足够的存储器承诺量导致程序不能启动,因为没有更多存储器成交,或导致增加页文件大小来允许程序启动。然而,增加页文件增加了存储设备空间的使用,由于存储设备的受限制的大小,这可能是有问题的。本文所讨论技术降低了压缩分配给程序的存储器页时收取的存储器承诺,从而允许更多存储器承诺可用于其它程序而不增加页文件的大小。
减少压缩计算设备中的存储器页时收取的存储器承诺提升了计算设备的性能,因为计算设备中可允许的承诺用量的最大量(计算设备的承诺限制)等于物理存储器(例如,RAM)的量加上存储设备上作为物理存储器的后备的所有页文件的大小。通过减少收取的存储器承诺,页文件大小可被减少(或者不需要被增加以允许压缩原本所需的附加存储器承诺)。减少页文件的大小进而节省了计算设备的磁盘空间。磁盘空间可以是非常重要的商品,尤其是在设法降低成本的更便宜的计算设备上。所以,通过使用本文所讨论的技术,无需支付为页文件消耗更多磁盘空间(消耗更多磁盘空间将进而为用户留下更少空间来存储其文件,从而导致对其计算设备较不满意)的代价而获得了压缩的物理存储器的节省。
虽然本文中参考特定模块讨论了特定功能,但应注意,本文中讨论的个体模块的功能可被分成多个模块,和/或多个模块的至少一些功能可被组合在单个模块中。附加地,本文讨论的执行某一动作的特定模块包括该特定模块本身执行该动作或另选地该特定模块调用或与其它方式访问执行该动作的另一组件或模块(或与该特定模块联合执行该动作)。因而,执行某一动作的特定模块包括该特定模块本身执行该动作或由该特定模块调用或以其它方式访问的另一模块执行该动作。
图9在900概括地示出了包括示例计算设备902的示例系统,该示例系统表示可以实现本文中所描述的各种技术的一个或多个系统和/或设备。计算设备902 可以是,例如,服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统、和/或任何其它合适的计算设备或计算系统。
所示的示例计算设备902包括处理系统904、一个或多个计算机可读介质906,以及相互通信地耦合的一个或多个I/O接口908。尽管没有示出,计算设备902可进一步包括系统总线或将各种组件相互耦合的其它数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或其组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线体系结构中的任一种的处理器或局部总线。也构想了各种其它示例,诸如控制和数据线。
处理系统904表示使用硬件执行一个或多个操作的功能。因此,处理系统904 被示为包括可被配置为处理器、功能块等的硬件元件910。这可包括在作为专用集成电路或使用一个或多个半导体形成的其它逻辑设备的硬件中的实现。硬件元件 910不受形成它们的材料或者其中利用的处理机制的限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(IC))构成。在这一上下文中,处理器可执行指令可以是可电子地执行的指令。
计算机可读介质906被示为包括存储器/存储912。存储器/存储912表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储912可包括易失性介质(如随机存取存储器(RAM))和/或非易失性介质(如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储912可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如闪存、可移动硬盘驱动器、光盘等)。计算机可读介质906可以下面进一步描述的各种方式来配置。
输入/输出接口908表示允许用户向计算设备902输入命令和信息的功能,并且还允许使用各种输入/输出设备向用户和/或其它组件或设备呈现信息。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,电容性的或被配置来检测物理触摸的其它传感器)、相机(例如,可采用可见或诸如红外频率的不可见波长来将不涉及触摸的移动检测为姿势),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备,等等。因此,计算设备902可以下面进一步描述的各种方式来配置以支持用户交互。
计算设备902还包括存储管理器914。存储管理器914提供了如上所讨论的各种存储器压缩功能。存储管理器914可以实现例如图1的压缩存储管理器104。尽管被示出为与计算机可读介质906分开,但是应当注意,存储管理器914可替换地被实现为计算机可读介质906的一部分。
本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般而言,此类模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。本文使用的术语“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的各特征是平台无关的,从而意味着该技术可在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上或跨某种形式的计算机可读介质传输。计算机可读介质可包括可由计算设备902访问的各种介质。作为示例而非限制,计算机可读介质可包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”指相对于仅信号传输、载波或信号本身而言,启用对信息的持久存储和/或有形存储的介质和/或设备。计算机可读存储介质指代非信号承载介质。计算机可读存储介质包括以适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路、或其它数据等的方法或技术来实现的诸如易失性和非易失性、可移动和不可移动介质和/或存储设备的硬件。该计算机可读存储介质的示例包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、 CD-ROM、数字多功能盘(DVD)或其它光存储、硬盘、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可适用于存储所需信息并可由计算机访问的其它存储设备、有形介质或制品。
“计算机可读信号介质”可以指被配置为诸如经由网络向计算设备902的硬件传输指令的信号承载介质。信号介质通常用诸如载波、数据信号、或其它传输机制等经调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据。信号介质还包括任何信息传送介质。术语“经调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、 RF、红外线和其它无线介质。
如先前所描述的,硬件元件910和计算机可读介质906代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可在某些实施例中被采用来实现本文描述的技术的至少某些方面。硬件元件可包括集成电路或片上系统、应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件 (CPLD),和用硅或其它硬件设备实现的组件。在此上下文中,硬件元件可以充当处理设备,该处理设备执行由该硬件元件以及用于存储供执行的指令的硬件设备(例如前面描述的计算机可读存储介质)所体现的指令、模块和/或逻辑所定义的程序任务。
前面的组合也可被采用来实现本文所述的各种技术。因此,软件、硬件,或模块和其它程序模块可被实现为一个或多个指令和/或在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件910实现的逻辑。计算设备902可被配置成实现对应于软件和/或硬件模块的特定指令和/或功能。因此,将模块实现为可由计算设备902执行为软件的模块可至少部分以硬件完成,例如,通过使用计算机可读存储介质和/或处理系统的硬件元件910。指令和/或功能可以是一个或多个制品(例如,一个或多个计算设备902和/或处理系统904)可执行/可操作的,以实现本文描述的技术、模块、以及示例。
如在图9中进一步例示的,示例系统900使得用于当在个人计算机(PC)、电视设备和/或移动设备上运行应用时的无缝用户体验的普遍存在的环境成为可能。服务和应用在所有三个环境中基本相似地运行,以便当使用应用、玩视频游戏、看视频等时在从一个设备转换到下一设备时得到共同的用户体验。
在示例系统900中,多个设备通过中央计算设备互连。中央计算设备对于多个设备可以是本地的,或者可以位于多个设备的远程。在一个或多个实施例中,中央计算设备可以是通过网络、因特网或其它数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,该互连架构使得功能能够跨多个设备递送以向多个设备的用户提供共同且无缝的体验。多个设备的每一个可具有不同的物理要求和能力,且中央计算设备使用一平台来使得为设备定制且又对所有设备共同的体验能被递送到设备。在一个或多个实施例中,创建目标设备的类,且针对设备的通用类来特制体验。设备类可由设备的物理特征、用途类型或其它共同特性来定义。
在各种实现中,计算设备902可采取各种各样不同的配置,诸如用于计算机 916、移动设备918和电视机920用途。这些配置中的每一个包括可具有一般不同的配置和能力的设备,并且因而计算设备902可根据不同的设备类中的一个或多个来配置。例如,计算设备902可被实现为计算机916类的设备,该类包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。
计算设备902还可被实现为移动设备918类的设备,该类包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备。计算设备902还可被实现为电视机920类的设备,该类包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。
本文所描述的技术可由计算设备902的这些各种配置来支持,且不限于在本文描述的各具体示例。这个功能性也可被全部或部分通过分布式系统的使用(诸如如下的经由平台924通过“云”922)来实现。
云922包括和/或代表资源926的平台924。平台924抽象云922的硬件(如,服务器)和软件资源的底层功能性。资源926可包括可在计算机处理在位于计算设备902远程的服务器上执行时使用的应用和/或数据。资源926也可包括在因特网上和/或通过诸如蜂窝或Wi-Fi网络之类的订户网络上提供的服务。
平台924可抽象资源和功能性以将计算设备902与其它计算设备相连接。平台924还可用于抽象资源的缩放以向经由平台924实现的资源926所遇到的需求提供对应的缩放级别。因此,在互联设备的实施例中,本文描述的功能性的实现可分布在系统900上。例如,该功能性可部分地在计算设备902上以及经由抽象云924的功能性的平台922来实现。
在本文的讨论中,描述了各种不同的实施例。要领会和理解,本文描述的每个实施例可以单独或与本文描述的一个或多个其它实施例结合使用。本文所讨论的技术的进一步方面涉及以下实施例中的一个或多个。
一种方法,包括:标识已被分配给计算设备中的程序并且已被修改的第一存储器页集合,用于所述第一存储器页集合的存储器承诺已被收取至所述程序;将所述第一存储器页集合压缩到压缩存储中,所述压缩存储由第二存储器页集合组成且由压缩存储管理器管理;通过所述压缩储存管理器,使用用于所述第一存储器页集合的存储器承诺用量,以有效地节省所述计算设备中的存储器承诺;以及在所述第一存储器页集合已被压缩到所述压缩存储中之后,允许存储器管理器重新利用所述第一存储器页集合。
作为上述方法中的任一者的替换或补充,以下任一者或其组合:所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述方法进一步包括响应于所述多个区域中的一个区域变为空,释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页;在任何经压缩存储器页被存储在压缩存储中之前,所述压缩存储管理器预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求;所述方法进一步包括所述压缩存储管理器处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻;所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述方法进一步包括压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页;所述压缩存储管理器通过以下操作来保证所述压实做出正向进展:在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页;所述使用导致运行所述程序的系统处于临时过度承诺的状态,且所述方法进一步包括确保能够通过执行所述压实并从所述压缩存储逐出所述存储器页来缓解所述临时过度承诺的状态,同时保证来自所述存储器管理器的存储器页读取请求的正向进展。
一种计算设备,包括:存储器;被配置成管理所述存储器的页的存储器管理器;以及压缩存储管理器,所述压缩存储管理器被配置成:将已被程序修改的第一存储器页集合压缩到与所述程序相关联的压缩存储中,用于所述第一存储器页集合的存储器承诺已被收取至所述程序,所述压缩存储由第二存储器页集合组成,且所述压缩存储由所述压缩存储管理器管理;使用用于所述第一存储器页集合的存储器承诺用量以节省所述计算设备中的存储器承诺;以及对于所述第一存储器页集合中的每个存储器页,在该存储器页已被压缩到所述压缩存储中之后允许所述存储器管理器重新利用该存储器页。
作为上述计算设备中的任一者的替换或补充,以下任一者或其组合:所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述压缩存储管理器被进一步配置成响应于所述多个区域中的一个区域变为空释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页;所述压缩存储管理器被进一步配置成在任何经压缩存储器页被存储在压缩存储中之前,所述压缩存储管理器预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求;所述压缩存储管理器被进一步配置成处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻;所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述压缩存储管理器被进一步配置成压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页;所述压缩存储管理器被进一步配置成在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页。
一种系统,包括:一个或多个处理器;以及一个或多个其上存储有多个指令的计算机可读介质,所述指令在被所述一个或多个处理器执行时使所述一个或多个处理器执行动作,所述动作包括:标识已被分配给程序并且已被修改的第一存储器页集合,用于所述第一存储器页集合的存储器承诺已被收取至所述程序;将所述第一存储器页集合压缩到压缩存储中,所述压缩存储由第二存储器页集合组成且由压缩存储管理器管理;通过所述压缩储存管理器,使用用于所述第一存储器页集合的存储器承诺用量,以有效地节省所述系统中的存储器承诺;以及在所述第一存储器页集合已被压缩到所述压缩存储中之后,允许存储器管理器重新利用所述第一存储器页集合。
作为上述系统或计算设备中的任一者的替换或补充,以下任一者或其组合:所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述动作进一步包括响应于所述多个区域中的一个区域变为空,释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页;在任何经压缩存储器页被存储在压缩存储中之前,所述压缩存储管理器预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求;所述动作进一步包括所述压缩存储管理器处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻;所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述动作进一步包括压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页;所述压缩存储管理器在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页;所述系统进一步包括:物理存储器;存储作为所述物理存储器的后备的页文件的存储设备;以及减少所述存储设备上由于使用用于所述第一存储器页集合的存储器承诺用量而被所述页文件使用的空间量。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (22)
1.一种用于减少存储器承诺用量的方法,包括:
标识已被分配给程序并且已被修改的第一存储器页集合,用于所述第一存储器页集合的存储器承诺已被收取至所述程序;
将所述第一存储器页集合压缩到压缩存储中,所述压缩存储由第二存储器页集合组成且由压缩存储管理器管理;
通过存储器管理器将所述第一存储器页集合的存储器承诺用量转移到所述压缩存储管理器,而无需为所述第一存储器页集合以及所述第一存储器页集合被压缩到其中的所述压缩存储管理器两者维持单独的存储器承诺用量,所述存储器承诺用量是所述存储器管理器保证分配给所述程序的存储器量;
通过所述压缩存储管理器,使用用于所述第一存储器页集合的存储器承诺用量;以及
在所述第一存储器页集合已被压缩到所述压缩存储中之后,允许所述存储器管理器重新利用所述第一存储器页集合。
2.如权利要求1所述的方法,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述方法进一步包括:
响应于所述多个区域中的一个区域变为空,释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页。
3.如权利要求1所述的方法,其特征在于,在任何经压缩存储器页被存储在压缩存储中之前,所述压缩存储管理器预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求。
4.如权利要求3所述的方法,其特征在于,进一步包括所述压缩存储管理器处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻。
5.如权利要求1所述的方法,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述方法进一步包括压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页。
6.如权利要求5所述的方法,其特征在于,所述压缩存储管理器通过以下操作来保证所述压实做出正向进展:在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页。
7.如权利要求6所述的方法,其特征在于,所述使用导致运行所述程序的系统处于临时过度承诺的状态,且所述方法进一步包括确保能够通过执行所述压实并从所述压缩存储逐出所述存储器页来缓解所述临时过度承诺的状态,同时保证来自所述存储器管理器的存储器页读取请求的正向进展。
8.一种计算设备,包括:
存储器;
被配置成管理所述存储器的页的存储器管理器;以及
压缩存储管理器,所述压缩存储管理器被配置成:
将已被程序修改的第一存储器页集合压缩到与所述程序相关联的压缩存储中,用于所述第一存储器页集合的存储器提交已被收取至所述程序,所述压缩存储由第二存储器页集合组成,且所述压缩存储由所述压缩存储管理器管理;
通知存储器管理器将所述第一存储器页集合的存储器承诺用量转移到所述压缩存储管理器,而无需为所述第一存储器页集合以及所述第一存储器页集合被压缩到其中的所述压缩存储管理器两者维持单独的存储器承诺用量,所述存储器承诺用量是所述存储器管理器保证分配给所述程序的存储器量;
使用用于所述第一存储器页集合的存储器承诺用量;以及
对于所述第一存储器页集合中的每个存储器页,在该存储器页已被压缩到所述压缩存储中之后允许所述存储器管理器重新利用该存储器页。
9.如权利要求8所述的计算设备,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述压缩存储管理器被进一步配置成响应于所述多个区域中的一个区域变为空释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页。
10.如权利要求8所述的计算设备,其特征在于,所述压缩存储管理器被进一步配置成在任何经压缩存储器页被存储在压缩存储中之前,预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求。
11.如权利要求10所述的计算设备,其特征在于,所述压缩存储管理器被进一步配置成处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻。
12.如权利要求8所述的计算设备,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述压缩存储管理器被进一步配置成压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页。
13.如权利要求12所述的计算设备,其特征在于,所述压缩存储管理器被进一步配置成在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页。
14.一种用于减少存储器承诺用量的系统,包括:
一个或多个处理器;以及
一个或多个其上存储有多个指令的计算机可读介质,所述指令在被所述一个或多个处理器执行时使所述一个或多个处理器执行动作,所述动作包括:
标识已被分配给程序并且已被修改的第一存储器页集合,用于所述第一存储器页集合的存储器承诺已被收取至所述程序;
将所述第一存储器页集合压缩到压缩存储中,所述压缩存储由第二存储器页集合组成且由压缩存储管理器管理;
通过存储器管理器将所述第一存储器页集合的存储器承诺用量转移到所述压缩存储管理器,而无需为所述第一存储器页集合以及所述第一存储器页集合被压缩到其中的所述压缩存储管理器两者维持单独的存储器承诺用量,所述存储器承诺用量是所述存储器管理器保证分配给所述程序的存储器量;
通过所述压缩存储管理器使用用于所述第一存储器页集合的所述存储器承诺用量;以及
在所述第一存储器页集合已被压缩到所述压缩存储中之后,允许所述存储器管理器重新利用所述第一存储器页集合。
15.如权利要求14所述的系统,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述动作进一步包括:
响应于所述多个区域中的一个区域变为空,释放所述一个区域而无需分配给所述压缩存储管理器的附加存储器页。
16.如权利要求14所述的系统,其特征在于,在任何经压缩存储器页被存储在所述压缩存储中之前,所述压缩存储管理器预先分配资源以允许由所述压缩存储管理器每次处理至少一个逐出请求,每个逐出请求包括从所述压缩存储中移除经压缩存储器页的请求。
17.如权利要求16所述的系统,其特征在于,进一步包括所述压缩存储管理器处理所述至少一个逐出请求而不持久因需要将被分配给所述压缩存储管理器的一个或多个附加存储器页的任何操作而受阻。
18.如权利要求14所述的系统,其特征在于,所述压缩存储包括多个区域的集合,每个区域包括所述第二存储器页集合的子集,且所述动作进一步包括压实所述多个区域中的一个区域以填充所述一个区域中的空隙,所述压实由所述压缩存储管理器执行而无需向所述压缩存储管理器分配任何附加存储器页。
19.如权利要求18所述的系统,其特征在于,所述压缩存储管理器在任何经压缩存储器页被存储在所述压缩存储中之前预先收取资源,以允许所述压缩存储管理器访问执行所述压实所需的所述压缩存储的多个区域而无需向所述压缩存储管理器分配任何附加存储器页。
20.如权利要求14所述的系统,其特征在于,所述系统进一步包括:
物理存储器;
在其上存储作为所述物理存储器的后备的页文件的存储设备;以及
减少所述存储设备上由于使用用于所述第一存储器页集合的存储器承诺用量而被所述页文件使用的空间量。
21.一种包括用于执行如权利要求1-7中的任一项所述的方法的装置的计算机系统。
22.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求1-7中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/685,977 | 2015-04-14 | ||
US14/685,977 US10037270B2 (en) | 2015-04-14 | 2015-04-14 | Reducing memory commit charge when compressing memory |
PCT/US2016/024597 WO2016167948A1 (en) | 2015-04-14 | 2016-03-29 | Reducing memory commit charge when compressing memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533508A CN107533508A (zh) | 2018-01-02 |
CN107533508B true CN107533508B (zh) | 2021-02-26 |
Family
ID=55702131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680022094.XA Active CN107533508B (zh) | 2015-04-14 | 2016-03-29 | 用于减少压缩存储器时的存储器承诺用量的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10037270B2 (zh) |
EP (1) | EP3283965B1 (zh) |
CN (1) | CN107533508B (zh) |
WO (1) | WO2016167948A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US10102148B2 (en) | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10606501B2 (en) * | 2015-12-04 | 2020-03-31 | International Business Machines Corporation | Management of paging in compressed storage |
US10678446B2 (en) * | 2017-07-11 | 2020-06-09 | Western Digital Technologies, Inc. | Bitmap processing for log-structured data store |
CN107704321A (zh) * | 2017-09-30 | 2018-02-16 | 北京元心科技有限公司 | 内存分配的方法、装置及终端设备 |
US11194789B2 (en) * | 2019-06-07 | 2021-12-07 | Sap Se | Content agnostic memory pageable storage model |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442661B1 (en) * | 2000-02-29 | 2002-08-27 | Quantum Corporation | Self-tuning memory management for computer systems |
CN103975312A (zh) * | 2011-03-29 | 2014-08-06 | 亚马逊技术股份有限公司 | 连接到联网存储系统的本地存储器 |
CN104049910A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 操作存储器系统的方法、存储器系统、和存储器控制器 |
Family Cites Families (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3379081D1 (en) | 1982-06-21 | 1989-03-02 | Ibm | Method and apparatus for managing a buffer pool referenced by batch and interactive process |
EP0346039A2 (en) | 1988-06-06 | 1989-12-13 | Demax Software, Inc | Dynamic load balancing for multi-user computers |
CA1329432C (en) | 1988-11-02 | 1994-05-10 | William Davy | Method of memory and cpu time allocation for a multi-user computer system |
US4965717A (en) | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US5101485B1 (en) | 1989-06-29 | 1996-12-10 | Frank L Perazzoli Jr | Virtual memory page table paging apparatus and method |
US5125086A (en) | 1989-06-29 | 1992-06-23 | Digital Equipment Corporation | Virtual memory paging apparatus with variable size in-page clusters |
US5394537A (en) | 1989-12-13 | 1995-02-28 | Texas Instruments Incorporated | Adaptive page placement memory management system |
US5247687A (en) | 1990-08-31 | 1993-09-21 | International Business Machines Corp. | Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time |
CA2055295C (en) | 1991-11-12 | 2000-05-23 | Jean Gilles Fecteau | Logical mapping of data objects using data spaces |
US5826057A (en) | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US5628023A (en) | 1993-04-19 | 1997-05-06 | International Business Machines Corporation | Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view |
US5696926A (en) | 1993-07-30 | 1997-12-09 | Apple Computer, Inc. | Method and apparatus for transparently compressing data in a primary storage device |
AU1447295A (en) | 1993-12-30 | 1995-08-01 | Connectix Corporation | Virtual memory management system and method using data compression |
US5802599A (en) | 1994-02-08 | 1998-09-01 | International Business Machines Corporation | System and method for allocating storage in a fragmented storage space |
US5555399A (en) | 1994-07-07 | 1996-09-10 | International Business Machines Corporation | Dynamic idle list size processing in a virtual memory management operating system |
JP2831602B2 (ja) | 1995-01-13 | 1998-12-02 | 富士通株式会社 | 圧縮データ管理装置及び圧縮データ管理方法 |
US5544349A (en) | 1995-01-23 | 1996-08-06 | International Business Machines Corporation | Method and system for improving the performance of memory in constrained virtual memory environments by reducing paging activity |
US5758174A (en) | 1995-06-07 | 1998-05-26 | International Business Machines Corporation | Computer system having a plurality of stored system capability states from which to resume |
US6298422B1 (en) | 1996-06-17 | 2001-10-02 | Network Associates, Inc. | Method for reducing the memory requirements for an application program executing in a multi-tasking environment |
US5966735A (en) | 1996-11-22 | 1999-10-12 | Digital Equipment Corporation | Array index chaining for tree structure save and restore in a process swapping system |
US6681239B1 (en) | 1996-12-23 | 2004-01-20 | International Business Machines Corporation | Computer system having shared address space among multiple virtual address spaces |
US6128713A (en) | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
US7024512B1 (en) | 1998-02-10 | 2006-04-04 | International Business Machines Corporation | Compression store free-space management |
WO2000004483A2 (en) | 1998-07-15 | 2000-01-27 | Imation Corp. | Hierarchical data storage management |
JP3444346B2 (ja) | 1999-01-04 | 2003-09-08 | 日本電気株式会社 | 仮想メモリ管理方式 |
US6496912B1 (en) | 1999-03-25 | 2002-12-17 | Microsoft Corporation | System, method, and software for memory management with intelligent trimming of pages of working sets |
US6496909B1 (en) | 1999-04-06 | 2002-12-17 | Silicon Graphics, Inc. | Method for managing concurrent access to virtual memory data structures |
US6349372B1 (en) | 1999-05-19 | 2002-02-19 | International Business Machines Corporation | Virtual uncompressed cache for compressed main memory |
US6442664B1 (en) | 1999-06-01 | 2002-08-27 | International Business Machines Corporation | Computer memory address translation system |
US7089391B2 (en) | 2000-04-14 | 2006-08-08 | Quickshift, Inc. | Managing a codec engine for memory compression/decompression operations using a data movement engine |
EP1182551B1 (en) | 2000-08-21 | 2017-04-05 | Texas Instruments France | Address space priority arbitration |
US6564305B1 (en) | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US7047382B2 (en) | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6516397B2 (en) | 2001-04-09 | 2003-02-04 | Hewlett-Packard Company | Virtual memory system utilizing data compression implemented through a device |
US7107299B2 (en) | 2001-08-14 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and apparatus for managing large numbers of objects having the same property |
US7003646B2 (en) * | 2002-03-27 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Efficiency in a memory management system |
US6775751B2 (en) | 2002-08-06 | 2004-08-10 | International Business Machines Corporation | System and method for using a compressed main memory based on degree of compressibility |
US6968424B1 (en) | 2002-08-07 | 2005-11-22 | Nvidia Corporation | Method and system for transparent compressed memory paging in a computer system |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US6956507B2 (en) | 2002-12-12 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for morphing memory compressed machines |
US20050132161A1 (en) | 2003-12-15 | 2005-06-16 | Nokia Corporation | Creation of virtual memory space in a memory |
US7296139B1 (en) | 2004-01-30 | 2007-11-13 | Nvidia Corporation | In-memory table structure for virtual address translation system with translation units of variable range size |
TWI267024B (en) | 2004-06-18 | 2006-11-21 | Winbond Electronics Corp | Method and apparatus for connecting LPC bus and serial flash memory |
US7587572B1 (en) * | 2004-08-31 | 2009-09-08 | Sun Microsystems, Inc. | Method and system for managing process memory configured in resizable uncompressed and compressed regions |
US20060161912A1 (en) | 2005-01-18 | 2006-07-20 | Barrs John W | Infrastructure for device driver to monitor and trigger versioning for resources |
US7437529B2 (en) | 2005-06-16 | 2008-10-14 | International Business Machines Corporation | Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment |
US20070005911A1 (en) | 2005-07-01 | 2007-01-04 | Nec Laboratories America, Inc. | Operating System-Based Memory Compression for Embedded Systems |
US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US7461242B2 (en) | 2005-11-03 | 2008-12-02 | Ati Technologies Ulc | Method and apparatus for providing context switching of logic in an integrated circuit using test scan circuitry |
US7475183B2 (en) | 2005-12-12 | 2009-01-06 | Microsoft Corporation | Large page optimizations in a virtual machine environment |
US20070156386A1 (en) | 2005-12-30 | 2007-07-05 | Guenthner Russell W | Linearization of page based memory for increased performance in a software emulated central processing unit |
US7484074B2 (en) | 2006-01-18 | 2009-01-27 | International Business Machines Corporation | Method and system for automatically distributing real memory between virtual memory page sizes |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US7624240B1 (en) | 2006-10-17 | 2009-11-24 | Vmware, Inc. | Separate swap files corresponding to different virtual machines in a host computer system |
US8015367B1 (en) | 2007-02-16 | 2011-09-06 | Vmware, Inc. | Memory management methods in a computer system with shared memory mappings |
US7895242B2 (en) | 2007-10-31 | 2011-02-22 | Microsoft Corporation | Compressed storage management |
US20090327621A1 (en) | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
KR101101789B1 (ko) | 2009-07-20 | 2012-01-05 | 강명호 | 금속질감 성형품용 합성수지 조성물과 이를 이용한 사출성형방법 및 성형품 |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US8239610B2 (en) | 2009-10-29 | 2012-08-07 | Red Hat, Inc. | Asynchronous page faults for virtual machines |
US20110153978A1 (en) | 2009-12-21 | 2011-06-23 | International Business Machines Corporation | Predictive Page Allocation for Virtual Memory System |
US8386740B2 (en) | 2010-03-29 | 2013-02-26 | International Business Machines Corporation | Modeling memory compression |
US9015441B2 (en) | 2010-04-30 | 2015-04-21 | Microsoft Technology Licensing, Llc | Memory usage scanning |
US8484405B2 (en) * | 2010-07-13 | 2013-07-09 | Vmware, Inc. | Memory compression policies |
EP2630573B1 (en) | 2010-10-22 | 2015-05-20 | ST-Ericsson SA | Methods and devices for reducing compressed page loading time on page fault |
US8495267B2 (en) | 2010-11-24 | 2013-07-23 | International Business Machines Corporation | Managing shared computer memory using multiple interrupts |
KR20120066198A (ko) | 2010-12-14 | 2012-06-22 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 |
US8972696B2 (en) | 2011-03-07 | 2015-03-03 | Microsoft Technology Licensing, Llc | Pagefile reservations |
US8661221B2 (en) * | 2011-03-16 | 2014-02-25 | International Business Machines Corporation | Leasing fragmented storage between processes |
US9286101B2 (en) | 2011-07-28 | 2016-03-15 | Red Hat, Inc. | Free page hinting |
JP5385347B2 (ja) | 2011-08-02 | 2014-01-08 | レノボ・シンガポール・プライベート・リミテッド | メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ |
KR101221241B1 (ko) | 2011-08-26 | 2013-01-11 | 린나이코리아 주식회사 | 실 팩킹 및 조리장치와 외부 설치구조물의 실 팩킹구조 |
US8832411B2 (en) | 2011-12-14 | 2014-09-09 | Microsoft Corporation | Working set swapping using a sequentially ordered swap file |
US9183015B2 (en) | 2011-12-19 | 2015-11-10 | Vmware, Inc. | Hibernate mechanism for virtualized java virtual machines |
US9053018B2 (en) | 2012-06-29 | 2015-06-09 | International Business Machines Corporation | Compressed memory page selection based on a population count of a dataset |
US9489293B2 (en) * | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
US8904147B2 (en) * | 2012-09-11 | 2014-12-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Method for generating a delta for compressed data |
CN103729249B (zh) * | 2012-10-11 | 2017-04-12 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
CN103729305B (zh) * | 2012-10-11 | 2017-09-08 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
US9354916B2 (en) | 2012-11-29 | 2016-05-31 | Red Hat Israel, Ltd. | Detection of guest disk cache |
KR102011135B1 (ko) * | 2012-12-11 | 2019-08-14 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
US10565099B2 (en) | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
CN103049561B (zh) * | 2012-12-31 | 2016-01-27 | 华为技术有限公司 | 一种数据压缩方法、存储引擎及存储系统 |
US9852055B2 (en) | 2013-02-25 | 2017-12-26 | International Business Machines Corporation | Multi-level memory compression |
US9396030B2 (en) * | 2013-03-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications |
US10102148B2 (en) | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
KR20150043102A (ko) * | 2013-10-14 | 2015-04-22 | 한국전자통신연구원 | 하이브리드 메모리의 데이터 관리 장치 및 방법 |
US9400754B2 (en) | 2013-12-19 | 2016-07-26 | International Business Machines Corporation | Asynchronous swap mechanism and page eviction from memory |
US20150242432A1 (en) | 2014-02-21 | 2015-08-27 | Microsoft Corporation | Modified Memory Compression |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
-
2015
- 2015-04-14 US US14/685,977 patent/US10037270B2/en active Active
-
2016
- 2016-03-29 WO PCT/US2016/024597 patent/WO2016167948A1/en active Application Filing
- 2016-03-29 CN CN201680022094.XA patent/CN107533508B/zh active Active
- 2016-03-29 EP EP16715716.3A patent/EP3283965B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442661B1 (en) * | 2000-02-29 | 2002-08-27 | Quantum Corporation | Self-tuning memory management for computer systems |
CN103975312A (zh) * | 2011-03-29 | 2014-08-06 | 亚马逊技术股份有限公司 | 连接到联网存储系统的本地存储器 |
CN104049910A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 操作存储器系统的方法、存储器系统、和存储器控制器 |
Also Published As
Publication number | Publication date |
---|---|
EP3283965B1 (en) | 2019-10-30 |
US20160306738A1 (en) | 2016-10-20 |
CN107533508A (zh) | 2018-01-02 |
EP3283965A1 (en) | 2018-02-21 |
WO2016167948A1 (en) | 2016-10-20 |
US10037270B2 (en) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533508B (zh) | 用于减少压缩存储器时的存储器承诺用量的方法和系统 | |
EP3108371B1 (en) | Modified memory compression | |
EP3008602B1 (en) | Page-based compressed storage management | |
US10310893B2 (en) | Managing container pause and resume | |
US9058212B2 (en) | Combining memory pages having identical content | |
US9262313B2 (en) | Provisioning in heterogenic volume of multiple tiers | |
CN107408073B (zh) | 使用存储器压缩来减少存储器提交开销 | |
US20120005448A1 (en) | Demand-Based Memory Management of Non-pagable Data Storage | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN107870922B (zh) | 一种用于数据去重的方法、设备和系统 | |
US10908958B2 (en) | Shared memory in memory isolated partitions | |
US10073851B2 (en) | Fast new file creation cache | |
CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
CN118540279A (zh) | 一种云数据库的流量控制方法及相关系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |