CN107408078B - 应用高速缓存热度的自动恢复 - Google Patents

应用高速缓存热度的自动恢复 Download PDF

Info

Publication number
CN107408078B
CN107408078B CN201680011344.XA CN201680011344A CN107408078B CN 107408078 B CN107408078 B CN 107408078B CN 201680011344 A CN201680011344 A CN 201680011344A CN 107408078 B CN107408078 B CN 107408078B
Authority
CN
China
Prior art keywords
cache
application
state
running state
change
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
Application number
CN201680011344.XA
Other languages
English (en)
Other versions
CN107408078A (zh
Inventor
N·特尔蒂亚
杜在永
朴光炫
J·M·帕特尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN202011139982.4A priority Critical patent/CN112256597A/zh
Publication of CN107408078A publication Critical patent/CN107408078A/zh
Application granted granted Critical
Publication of CN107408078B publication Critical patent/CN107408078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

自动恢复已经经历运行状态改变的应用的高速缓存的热度,运行状态改变降级高速缓存的热度。为了为热度的丢失做好准备,缓存部分标识符的状态被捕获。这在瞬时时刻标识了应用高速缓存内的高速缓存部分。此后,应用经历运行状态的改变,其降低了应用高速缓存的热度。例如,应用可能被停止并重新启动。之后,尽管这种高速缓存降级,应用程序可能继续操作。然而,为了更快地加热应用程序缓存,当应用程序正在操作时,应用程序缓存将被自动加热。例如,当应用程序正在操作时,从应用程序高速缓存外部的源自动地访问由捕获的高速缓存部分标识符所标识的高速缓存部分。

Description

应用高速缓存热度的自动恢复
背景技术
通过互联网或经由企业网络可用于用户的信息量实际上是无限的,这就是今天的时代通常被称为“信息时代”的原因。尽管计算硬件为计算机提供了硬件支持,但是是应用指引硬件的操作以执行无数功能。为了支持信息时代,这种应用需要访问通常被称为数据的信息。
为了最佳性能,数据通常存在于层次结构中,其中更经常和/或最近使用的数据以较高的访问速度被更本地化地缓存,并且较少使用的数据以较慢的访问速度在高速缓存之外可用。数据访问的近因和/或频率常常预示着对数据的未来访问,并且常常类似参照温度被指代(诸如“暖度”、“热度”、“冷度”、“温度”)。例如,气体分子越热,则其与周围分子相互作用地更频繁且更积极。因此,温度隐喻被广泛应用于数据访问。
当应用与底层数据存储层次结构交互时,应用建立高速缓存,允许应用接近峰值性能,因为热数据被加载到更高效地访问的高速缓存中。如果缓存内的数据被丢失,则应用性能下降但缓慢恢复,直到缓存再次利用热数据被填充。通常,经由应用参与正常的应用工作流来实现缓存的重新填充。备选地,熟练的用户可以通过请求他们能够预测将被使用的数据来手动加热高速缓存。
本文所要求保护的主题不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。相反,本背景仅被提供以说明其中可以实践本文所描述的一些实施例的一个示例性技术领域。
发明内容
本文所描述的至少一些实施例涉及对已经经历运行状态改变的应用的高速缓存的热度的恢复,运行状态改变降级高速缓存的热度。数据的“热度”指的是数据已经被如何经常地和/或最近地访问,并且因此常常被认为预示了访问的未来可能性和内在性。为了为热度的丢失做好准备,缓存部分标识符的状态被捕获。这在瞬时时刻标识了应用高速缓存内的高速缓存部分。
此后,应用经历运行状态的改变,其降低了应用高速缓存的热度(例如,通过数据的丢失)。例如,应用可能被停止并重新启动。否则,应用可能经历角色更改,诸如从辅助角色到主要角色。备选地或附加地,应用可以从一个机器被移动到另一机器。在改变应用的运行状态之后,应用可能继续操作,尽管应用高速缓存的热度降低。然而,为了更快地加热应用高速缓存,当应用正在操作时,应用高速缓存被自动加热。例如,当应用正在操作时,由捕获的高速缓存部分标识符所标识的高速缓存部分从应用高速缓存外部的源被自动地访问并且被放置到应用高速缓存中,即使应用本身的业务逻辑没有为了它们将被读取而做所有这些。因此,应用高速缓存可以自动地更快地变得更热。因此,针对应用的访问速度被加快,由此提高应用性能。应用高速缓存是被自动加热,尽管这样的自动热度可以响应于用以加热应用高速缓存的用户指令而发生。备选地,即使是应用高速缓存要被加热的确定也是自动的。
本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围中的辅助。
附图说明
为了描述可以获得上述和其它优点和特征的方式,将通过参考附图来呈现各种实施例的更具体的描述。理解到这些附图仅描绘了样本实施例并因此不被认为是对本发明的范围的限制,将通过使用附图以附加的特征和细节来描述和解释实施例,在附图中:
图1抽象地示出了其中可以采用本文中所描述的一些实施例的计算系统;
图2A示出了在其中存在操作应用、填充的应用高速缓存、填充的外部存储库和未填充的标识符存储库的、在瞬时时刻的环境;
图2B示出了图2A的环境,除了关于在标识符存储库内捕获的应用高速缓存内的高速缓存部分的元数据状态之外;
图2C示出了图2B的环境,除了现在没有应用正在运行,并且由于应用的运行状态改变而使应用高速缓存内的高速缓存部分被丢失,但是关于那些高速缓存部分的元数据状态仍然被保存在标识符存储库内,并且数据保留在外部存储库内;
图2D示出了图2C的环境的状态,除了现在标识符存储库内的高速缓存部分元数据状态根据应用即将访问对应的高速缓存部分的可能性而被排序;
图2E示出了图2D的环境的状态,除了现在还根据对外部存储库内的对应的高速缓存部分的分组来对标识符存储库内的高速缓存部分元数据状态进行排序;
图2F示出了图2E的环境的状态,除了现在应用再次为操作性的;
图2G示出了图2F的环境的状态,除了现在应用高速缓存已经通过应用的正常操作以及对应用高速缓存的自动后台加热而被重新填充;
图3示出了在应用经历导致数据从高速缓存丢失的运行状态改变的情况下准备恢复应用的缓存的热度的方法的流程图;
图4示出了包括针对相关联的高速缓存部分的高速缓存部分标识符以及针对相关联的高速缓存部分的热度度量的捕获的高速缓存部分状态;
图5示出了用于通过自动恢复应用的高速缓存的热度来响应应用的运行状态的改变的方法的流程图;以及
图6示出了可以在单个顺序读取操作中从外部存储库读取的示例页面序列,并且其包括将被恢复到应用高速缓存中的高速缓存部分以及不将被恢复到应用高速缓存中的部分。
具体实施方式
本文所描述的至少一些实施例涉及对已经经历运行状态改变的应用的高速缓存的热度的恢复,运行状态改变降级高速缓存的热度。数据的“热度”指的是数据已经被如何经常地和/或最近地访问,并且因此常常被认为预示了访问的未来可能性和内在性。为了为热度的丢失做好准备,缓存部分标识符的状态被捕获。这样在瞬时时刻标识了应用高速缓存内的高速缓存部分。
此后,应用经历运行状态的改变,其降低了应用高速缓存的热度(例如,通过数据的丢失)。例如,应用可能被停止并重新启动。否则,应用可能经历角色更改,诸如从辅助角色到主要角色。备选地或附加地,应用可以从一个机器被移动到另一机器。在改变应用的运行状态之后,应用可能继续操作,尽管应用高速缓存的热度降低。然而,为了更快地加热应用高速缓存,当应用正在操作时,应用高速缓存被自动加热。例如,当应用正在操作时,由捕获的高速缓存部分标识符所标识的高速缓存部分从应用高速缓存外部的源被自动地访问并且被放置到应用高速缓存中,即使应用本身的业务逻辑没有为了它们将被读取而做所有这些。因此,应用高速缓存可以自动地更快地变得更热。因此,针对应用的访问速度被加快,由此提高应用性能。应用高速缓存是被自动加热,尽管这样的自动热度可以响应于用以加热应用高速缓存的用户指令而发生。备选地,即使是应用高速缓存要被加热的确定也是自动的。
将关于图1描述对计算系统的一些介绍性讨论。然后,将关于随后的附图来呈现本文所描述的实施例的结构和操作。
计算系统现在越来越多地采用各种各样的形式。计算系统可以例如是手持设备、家用电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、或者甚至是传统上不被认为是计算系统的设备,例如可穿戴设备(例如眼镜)。在本说明书和权利要求书中,术语“计算系统”广义地被定义为包括任何设备或系统(或其组合),其包括至少一个物理和有形处理器,以及能够在其上具有可由处理器执行的计算机可执行指令的物理和有形存储器。存储器可以采取任何形式,并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并且可以包括多个组成计算系统。
如图1所示,在其最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的、或两者的某种组合。本文中也可以使用术语“存储器”来指代非易失性大容量存储设备,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文所使用的,术语“可执行模块”或“可执行组件”可以指代可以在计算系统上执行的软件对象、例程或方法。本文所描述的不同组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或过程(例如,作为单独的线程)。
在下面的描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件实现,则(执行该动作的相关联的计算系统的)一个或多个处理器响应于使计算机可执行指令被执行而指引计算系统的操作。例如,这样的计算机可执行指令可以体现在形成计算机程序产品的一个或多个计算机可读介质上。这种操作的一个例子涉及数据的操纵。计算机可执行指令(和操纵的数据)可以被存储在计算系统100的存储器104中。计算系统100还可以包含允许计算系统100与其他计算系统通过例如网络110通信的通信信道108。
本文所描述的实施例可以包括或利用包括计算机硬件(例如,一个或多个处理器和系统存储器)的专用或通用计算系统,如下面更详细地讨论的。本文所描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是能够由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种明显不同种类的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁存储设备,或能够用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置、并且能够由通用或专用计算系统访问的任何其他物理和有形存储介质。
“网络”被定义为使得能够在计算系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)被传送或提供给计算系统时,计算系统将连接适当地视为传输介质。传输介质可以包括网络和/或数据链路,其能够被用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且能够由通用或专用计算系统访问。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算系统组件时,以计算机可执行指令或数据结构形式的程序代码装置能够被自动地从传输介质传送到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算系统处的RAM和/或较不易失性存储介质。因此,应当理解,存储介质可以被包括在也(甚至主要地)利用传输介质的计算系统组件中。
计算机可执行指令包括例如指令和数据,其当在处理器处被执行时,使得通用计算系统、专用计算系统或专用处理设备执行某个功能或功能组。计算机可执行指令可以是例如在由处理器直接执行之前经历一些转换(诸如编译)的二进制或甚至指令,诸如例如汇编语言的中间格式指令,或者甚至是源代码。尽管主题已经以特定于结构特征和/或方法动作的语言被描述,但是应当理解所附权利要求中限定的主题不一定限于以上所描述的特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。
本领域技术人员将理解,本发明可以在具有许多类型的计算系统配置的网络计算环境中被实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜)等。本发明还可以在分布式系统环境中被实践,其中通过网络链接(通过硬连线数据链接、无线数据链接、或通过硬连线数据链接和无线数据链接的组合)的本地和远程计算系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
图2A示出了在瞬时时刻的环境200。随着时间的推移,环境200将如图2B至图2G所描述那样改变。然而,至少在图2A的瞬时时刻,环境200包括应用210、应用高速缓存220、外部存储库230和标识符存储库240。环境200可以被体现在计算系统中,诸如图1的计算系统100。
应用210可以是使用数据的任何软件,例如数据库应用、虚拟机或操作系统。然而,本文所描述的原理不限于特定类型的应用,而是可以被扩展到使用数据的任何应用。
应用高速缓存220可以是易失性高速缓存或非易失性高速缓存。例如,在分布式环境中,可能存在远程定位的数据,其要被访问到本地高速缓存中。这样的示例可能是云环境,其往往被划分为存储节点和计算节点。在这种情况下,计算节点或其他任何本地计算系统可能具有本地盘(其是非易失性的)以及可能的存储器(其可能是易失性的或也许也可以是非易失性的)。在任一种情况下,将数据从远程位置移动到本地计算系统中确实缓存该数据,因为它可以稍后在本地更高效地被访问。另外,将数据从本地盘移动到本地存储器也可以被视为缓存该数据。
在任何情况下,应用高速缓存220包括表示已被缓存到应用高速缓存中用于稍后取回的数据的高速缓存部分。高速缓存部分可以以映射到支持应用高速缓存220的底层存储设备/存储器的区段中被标识。例如,高速缓存部分可以是数据页。本文所描述的原理不以任何方式限制包括在应用高速缓存内的高速缓存部分的身份的数量。然而,假设在图2A所示的瞬时时刻,应用高速缓存220内有三个高速缓存部分221A、221B和221C。
环境200还包括也能够存储高速缓存部分的外部存储库230,并且在外部存储库230在其处于应用高速缓存220外部的意义上是“外部的”。例如,外部存储库230还包括高速缓存部分221A、221B和221C。事实上,应用210可以非常好地从外部存储库230获取当前在应用高速缓存220内的高速缓存部分221A、221B和221C的实例。然而,外部存储库230可以包括任何数量的附加高速缓存部分,以及诸如高速缓存部分221D、221E、221F,以及由椭圆221G表示的潜在的许多其他部分。应用210能够至少从如由双向箭头231所表示的外部存储库230读取和潜在地向其写入。应用210还能够从如由双向箭头232所表示的应用高速缓存220读取和向其写入。应用高速缓存220还可以能够从如由箭头233所表示的外部存储库230访问数据。在一个示例中,外部存储库230与应用210在不同的机器上。例如,在云计算环境中,外部存储库230可能在存储节点上,而应用210和应用高速缓存220可能在计算节点上。
环境200还包括标识符存储库240。标识符存储库240现在被示为空,但是是出于存储高速缓存部分标识符、而不一定是高速缓存部分本身的目的。根据本文所描述的原理,标识符存储库240内的应用标识符被用于利用来自外部存储库230的高速缓存部分来重新加热应用高速缓存220。如下面将进一步描述的,外部存储库230用作源,在应用高速缓存220由于应用210的某些运行状态改变而丢失其高速缓存页面或以其他方式没有适当地包括其应当包括的高速缓存页面的情况下,可以利用有可能要被使用的、来自该源的高速缓存页面来自动地重新加热应用高速缓存220。因此,支持外部存储库230和标识符存储库240的硬件的适用性被选择,使得在运行状态更改将被保护的情况下,高速缓存页标识符保留在标识符存储库240中,并且高速缓存部分保留在外部存储库230内。例如,针对运行状态改变的保护意味着环境200能够在运行状态改变的情况下重新加热应用高速缓存220(即,将热缓存部分加载回到应用高速缓存220中)。在一个示例中,外部存储库230和标识符存储库240在相同的存储系统上。
图3示出了用于准备恢复已经经历运行状态改变的应用的高速缓存的热度的方法300的流程图。方法300包括在瞬时时刻捕获在应用高速缓存内的高速缓存部分的状态(动作301)。所捕获的高速缓存部分的状态不是高速缓存部分本身,而是关于高速缓存部分的元数据,包括高速缓存部分的标识符。针对应用高速缓存220中的高速缓存部分中的每一个可以存在捕获的高速缓存部分的状态。在一个实施例中,应用高速缓存220是易失性存储器,并且捕获高速缓存部分状态涉及将关于高速缓存部分的元数据放入非易失性存储器和/或存储设备中。应用高速缓存220也可以是非易失性的。无论应用高速缓存220是否是易失性的和/或非易失性,捕获关于高速缓存部分状态的元数据都可以涉及与应用高速缓存220不在同一物理机器内的标识符存储库240的使用。
图4示出了包括针对相关联的高速缓存部分的高速缓存部分401标识符的捕获的高速缓存部分状态400。此外,高速缓存部分状态400可以可选地包括用于相关联的高速缓存部分的一个或多个热度度量410。““热度”度量指代与应用210在不久的将来可能访问高速缓存部分的可能性相关的度量。由于温度参考了一个气体分子与另一气体分子相互作用的频率和可能性,所以在数据访问领域中也已经采用温度来表示数据将被应用访问的可能性。当然,数据的一部分的暖度、热度或温度的确定是近似的估计,并且不一定是确定性的,并且不是数据本身的函数,而是应用在历史上已经如何与数据交互的函数。相对于一个应用热的数据可能相对于另一应用是冷的。
仅作为示例,在图4中,热度度量410被示为包括近因字段411,其定义相关联的高速缓存部分已经被应用如何最近地访问;频率字段412,其定义高速缓存部分已经被如何频繁地访问;以及由字段413表示的潜在的其他字段413。对于应用高速缓存200内的高速缓存部分中的每一个,存在捕获的高速缓存部分状态400。例如,对于图2,针对高速缓存部分221A、221B和221C中的每一个可以存在高速缓存部分状态400。针对应用高速缓存220中的每个高速缓存部分的捕获高速缓存部分状态400可以在标识符存储库240中被捕获。
图2B示出了在标识符存储库240内捕获高速缓存部分状态222A、222B和222C(针对应用高速缓存220内的对应高速缓存部分221A、221B和221C中的每一个)之后的环境200的状态。图2B与图2A基本上相同,除了这些捕获的状态222A、222B和222C现在显示为存在于标识符存储库240内。再次回顾,高速缓存部分状态222A不是高速缓存部分221A本身,而仅仅是关于高速缓存部分221A的元数据,包括高速缓存部分221A的标识符以及高速缓存部分221A的潜在热度度量。相对于高速缓存部分221B和221C,缓存部分状态222B和222C也可以这样说。
在应用的运行状态的预期改变的情况下,可以在应用的运行状态的改变之前立刻执行动作301或与其原子地执行动作301。例如,运行状态的改变可能是应用210将从一个物理机器被迁移到另一物理机器,或者应用210将被升级,并且因此应用的工作负载被转移到运行在相同或不同的物理机器上的应用的另一实例210。
备选地或附加地,然而,应用的运行状态可能是完全不可预料的,诸如应用的软件故障,或者甚至可能是应用210在其上运行的物理机器的硬件故障或功率丢失。在这种情况下,方法300可以如箭头302所表示的被重复,使得标识符存储库240内的高速缓存部分状态被定期更新(动作301)。例如,可以周期性地和/或响应于某些事件来更新(动作301)标识符存储库240。因此,这些更新可以表示应用高速缓存中的高速缓存部分的元数据的快照。如果意外故障将发生,并且应用210因此停止运行,则可以使用标识符存储库240内的最新快照,即使最新的快照可能不是完全最新的。
图5示出了用于通过自动恢复应用的高速缓存的热度来响应应用的运行状态的改变的方法的流程图。方法500可以在以下上下文中被执行,其中标识符存储库将针对在应用的运行状态改变发生时在应用高速缓存内的高速缓存部分中的至少一些高速缓存部分的高速缓存部分状态包括于其中。
方法500在发生应用的运行状态的改变时被发起(动作501)。在某些情况下,运行状态的更改可能导致应用高速缓存内的高速缓存部分的完全丢失。例如,在图2C中,响应于应用210的运行状态的改变,应用高速缓存220内的高速缓存部分被完全丢失。作为一个示例,应用高速缓存220可能是易失性存储器,并且已经存在对于操作应用高速缓存的物理机器的功率丢失。备选地,无论应用高速缓存220是非易失性还是易失性,应用210可能正在从一个物理机器被移动到另一物理机器。在这种情况下,新机器处的应用高速缓存220将被启动,潜在地没有高速缓存部分被包含于其中。图2C表示其中应用高速缓存220内的所有高速缓存部分已经被丢失的这些场景中的任一场景。因此,图2C类似于图2B,除了在应用高速缓存220内没有高速缓存部分。此外,目前没有应用210被示为在图2C所示的瞬时时刻运行,以强调运行状态的改变可能导致应用210未运行的时间段。例如,应用210可能正在从一个机器被移动到另一机器和/或在恢复中。
在应用发生故障或正在被迁移或被重新启动的这些情况中的任一情况下,应用高速缓存中的高速缓存部分可能不再被认为是热的。事实上,在图2C的示例中,应用高速缓存220根本不再具有任何高速缓存部分。此外,这表示其中应用210根本不再运行的运行状态改变,并且因此也不存在图2C所示的应用210。此外,在应可能从一个机器被移动到另一机器的情况下,图2C的应用高速缓存220甚至可能不在与图2A和图2B的应用高速缓存220相同的机器上。
然而,在一些实施例中,即使在运行状态的改变之后,应用高速缓存内也可能存在至少一些高速缓存部分。例如,假设有应用的多个实例在运行,其中一个应用充当主要角色,并且其他一个或多个副本实例充当辅助角色。进一步假设在这种环境中,对以主要角色运行的应用进行写入请求,而可以对以主要角色或辅助角色运行的任何应用进行读取请求。如果应用各自维护应用高速缓存,则应用高速缓存不可能同步,因为它们经历了不同的历史或者读取和写入请求。因此,如果具有主要角色的应用发生故障,并且充当辅助角色的应用之一将承担并然后承担起主要角色,则现在充当主要角色的应用的高速缓存可能不具有与先前充当主要角色的应用高速缓存相同的热度。换句话说,现在充当主要角色的应用的应用高速缓存可以具有与先前充当主要角色的应用的应用高速缓存中的高速缓存部分不同的至少一些高速缓存部分(但是可能一些相同)。
在应用已经经历了运行状态的改变(动作501)之后,可选地,高速缓存部分状态被自动排序(动作502)。例如,在图2C中,排序模块250可能按照将高速缓存加载回到应用高速缓存中的最大益处的顺序来评估和排序高速缓存部分状态222A、222B和222C。这种最大益处可能包括增加对应用高速缓存加热的速度。例如,排序模块250可能可选地使用估计的应用即将访问的可能性对高速缓存部分标识符进行排序。该估计的访问的可能性可以基于高速缓存部分状态222A、222B和222C内捕获的热度度量来确定。图2D示出了类似于图2C的环境200的状态,除了高速缓存部分状态222A、222B和222C现在已经被排序为高速缓存部分状态222B是第一、高速缓存部分222A是第二、高速缓存部分222C是第三。即使在应用210再次变为操作性之前,该排序操作(动作402)可以被执行。因此,图2D仍然未示出应用210存在。
在一个实施例中,排序还考虑高速缓存部分是否在外部存储库中被分组,以便考虑对高速缓存部分中的一个高速缓存部分的读取是否使对高速缓存部分中的另一高速缓存部分的读取比相反未被分组在一起的情况更快或更高效。例如,在顺序存储中,如果存在被定位于紧密靠近中的两个页面,与仅一个接一个地随机读取单个寻址页面相比,读取多个顺序寻址页面是非常高效的。换句话说,顺序存储最适合于执行顺序读取,而在随机访问读取中较低效。
图6示出了可以在单个顺序读取操作中从外部存储库读取的示例页面序列600。序列600恰好包括先前在应用高速缓存220中的部分221B和221C中的两者。因此,尽管部分221C被认为是高速缓存部分中最冷的高速缓存部分,并且因此在图2D中被排在最后,因为部分222B无论如何将被首先恢复(其是更热的高速缓存部分并且被排在最高),排序可能仍然导致首先恢复整个序列600,然后仅忽略序列600中以前不在应用高速缓存中的部分601至606。以这种方式,可以首先恢复最热的高速缓存部分221B,并且可以以最小成本将另一高速缓存部分221C(尽管是最冷的)带入到应用高速缓存器220中。图2E示出了其中排序模块250已经使得高速缓存部分状态222B和222C被分组在一起用于第一访问(如由虚线框223所示)、之后是高速缓存部分状态222A的环境。这表示当加热应用高速缓存时,序列600将被访问(并且除高速缓存部分222B和222C之外的所有高速缓存部分被忽略),然后高速缓存部分222A将被访问。
应用最终再次被操作(动作503)(例如,可能在移动和/或恢复应用之后)。例如,图2F被示出为与图2E相同,除了现在应用210是备份并正在运行。此外,当应用正在操作(动作503)时,系统按照对应的高速缓存部分状态在标识符存储库240内被排序的顺序从外部存储器自动地访问高速缓存部分。
因此,在图2F的这种状态中,应用210正常操作,并且因此可以从外部存储库230读取或向其写入(如由双向箭头232表示)。这是应用高速缓存220将由应用210利用先前(例如,在图2A中所示的时间)在应用高速缓存220内的缓存部分,或者可能利用先前不在应用高速缓存中的新高速缓存部分来手动填充的一种方式。这作为应用210的正常操作(动作503)的结果而发生。重新填充应用高速缓存220的第二源通过在后台的加热模块260的操作而自动地发生,因为标识符存储库240中的高速缓存部分状态可以被用于重新填充应用高速缓存220以包括高速缓存部分221A、221B和221C。
图2G示出了类似于图2F的环境200,除了排序模块250已经执行其功能并且因此不再示出。然而,加热模块260被示出为其功能已经开始。应用的正常操作(动作503)优先于在后台的应用高速缓存的自动加热(动作504)。在图2G中,三个操作已经发生。首先,在正常操作期间,高速缓存部分221D已被带入应用高速缓存220中,如由箭头261所表示。一旦正常操作完成,则恢复模块就具有读取序列600的控制,由此将高速缓存部分221B和221C填充到应用高速缓存220中,如由箭头262所表示。此外,部分601至606从应用高速缓存被忽略(例如,由于它们的存储器空间的释放)。最后,由于不存在应用的进一步的正常操作,因此恢复模块260将高速缓存部分221A恢复到应用高速缓存220中。这完成了对应用高速缓存220的加热,以便具有与应用高速缓存220在图2A的状态中所具有的相同热度的高速缓存部分。
这增加了应用高速缓存220被加热的速度。例如,在没有这种自动加热的情况下,此后应用请求缓存部分221B,则应用210将不得不从外部存储库230读取高速缓存部分221B。相反,由于加热操作最终达到图2G所示的状态,因此高速缓存部分221B可以相反从应用高速缓存220被更高效地获取。此外,由于加热不阻止来自应用的任何正常读取请求,因此加热没有不利地影响应用的性能。
在不背离本发明的精神或本质特征的情况下,本发明可以被体现在其他具体形式中。所描述的实施例在所有方面将仅被认为是说明性的而不是限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来指示。落入权利要求的等同物的含义和范围内的所有改变将被包括在其范围内。

Claims (20)

1.一种在包括一个或多个处理器的计算机系统处实现的方法,所述方法用于恢复已经经历运行状态改变的应用的高速缓存的热度,所述方法包括:
在应用在第一运行状态中的操作期间,标识被包括在与应用相关联的应用高速缓存内的一个或多个高速缓存部分,每个高速缓存部分包括已被缓存到所述应用高速缓存中以供稍后取回的数据的一部分;
在瞬时时刻捕获被包括在所述应用高速缓存内的所述一个或多个高速缓存部分中的每一个的状态,其中捕获所述一个或多个高速缓存部分中的每一个的所述状态包括捕获与每个高速缓存部分相关联的标识符,并且将每个高速缓存部分存储在处于所述应用高速缓存外部的存储装置中;
在所述瞬时时刻之后检测所述应用的运行状态到第二运行状态的改变;
在检测到所述应用的运行状态到所述第二运行状态的所述改变之后,再次在所述第一运行状态中操作所述应用;以及
当所述应用正再次在所述第一运行状态中操作时,至少执行以下各项:
标识一个或多个捕获的高速缓存部分标识符中的至少一个;以及
基于标识所述一个或多个捕获的高速缓存部分标识符中的至少一个,从处于所述应用高速缓存的外部的所述存储装置自动地取回与所标识的至少一个捕获的高速缓存部分标识符相关联的每个高速缓存部分,并且将每个取回的高速缓存部分存储在所述应用高速缓存中,使得所述应用高速缓存被自动加热以用于所述第一运行状态。
2.根据权利要求1所述的方法,还包括:
至少使用估计的即将发生的访问的可能性对所述高速缓存部分标识符进行排序。
3.根据权利要求2所述的方法,其中捕获所述状态还包括捕获与所述高速缓存部分标识符中的至少一个高速缓存部分标识符中的每一个相关联的一个或多个热度度量,并且其中对所述高速缓存部分标识符进行排序包括基于对应的捕获的所述一个或多个热度度量来估计所述即将发生的访问的可能性。
4.根据权利要求2所述的方法,其中排序还通过将多个高速缓存部分分组以便于经由同一读取操作被访问来排序。
5.根据权利要求1所述的方法,其中从所述应用高速缓存的外部的源访问包括:
在单个读取操作中访问一组高速缓存部分,其中所述一组高速缓存部分包括在所述捕获高速缓存部分标识符中标识的多个高速缓存部分。
6.根据权利要求5所述的方法,其中所述一组高速缓存部分包括在所述捕获的高速缓存标识符中未标识的至少一个高速缓存部分。
7.根据权利要求6所述的方法,还包括:
忽略在所述捕获的高速缓存标识符中未标识的所述至少一个高速缓存部分。
8.根据权利要求1所述的方法,其中所述应用是数据库应用。
9.根据权利要求1所述的方法,其中所述应用是虚拟机。
10.根据权利要求1所述的方法,其中所述应用是操作系统。
11.根据权利要求1所述的方法,其中所述应用高速缓存的位置在所述运行状态的所述改变之后处于与所述运行状态的所述改变之前不同的位置。
12.根据权利要求1所述的方法,其中所述应用高速缓存的位置在所述运行状态的所述改变之后与所述运行状态的所述改变之前相同。
13.根据权利要求1所述的方法,其中所述应用的所述运行状态的所述改变是所述应用的重新启动。
14.根据权利要求1所述的方法,其中所述应用的所述运行状态的所述改变是所述应用的角色的改变。
15.根据权利要求14所述的方法,其中所述应用的所述角色的所述改变包括将所述应用的所述角色从辅助改变为主要。
16.根据权利要求1所述的方法,其中所述应用的所述运行状态的所述改变是停止所述应用。
17.根据权利要求1所述的方法,其中所述应用高速缓存是易失性高速缓存。
18.根据权利要求1所述的方法,其中在瞬时时刻捕获在应用的应用高速缓存内的高速缓存部分标识符的状态包括获取所述高速缓存部分标识符的所述状态的快照。
19.一种计算机可读存储介质,具有在其上存储的计算机可执行指令,所述计算机可执行指令由计算系统的一个或多个处理器可执行,以恢复最近已经被重新启动的应用的高速缓存的热度,所述计算机可执行指令包括可执行以配置所述计算机系统执行至少以下各项的指令:
在应用在第一运行状态中的操作期间,标识被包括在与应用相关联的应用高速缓存内的一个或多个高速缓存部分,每个高速缓存部分包括已被缓存到所述应用高速缓存中以供稍后取回的数据的一部分;
在瞬时时刻捕获被包括在所述应用高速缓存内的所述一个或多个高速缓存部分中的每一个的状态,其中捕获所述一个或多个高速缓存部分中的每一个的所述状态包括捕获与每个高速缓存部分相关联的标识符,并且将每个高速缓存部分存储在处于所述应用高速缓存的外部的存储装置中;
在所述瞬时时刻之后检测所述应用的运行状态到第二运行状态的改变;
在检测到所述应用的运行状态到所述第二运行状态的所述改变之后,再次在所述第一运行状态中操作所述应用;以及
当所述应用正再次在所述第一运行状态中操作时,至少执行以下各项:
标识一个或多个捕获的高速缓存部分标识符中的至少一个;以及
基于标识所述一个或多个捕获的高速缓存部分标识符中的至少一个,从处于所述应用高速缓存的外部的源自动地访问与所标识的至少一个捕获的高速缓存部分标识符相关联的每个高速缓存部分,并且将每个取回的高速缓存部分存储在所述应用高速缓存中,使得所述应用高速缓存被自动加热以用于所述第一运行状态。
20.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个硬件存储设备,具有在其上存储的计算机可执行指令,所述计算机可执行指令由计算系统的一个或多个处理器可执行,以恢复最近已经被重新启动的应用的高速缓存的热度,所述计算机可执行指令包括可执行以配置所述计算机系统执行至少以下各项的指令:
在应用在第一运行状态中的操作期间,标识被包括在充当所述应用的高速缓存的应用高速缓存内的一个或多个高速缓存部分,每个高速缓存部分包括已被缓存到所述应用高速缓存中以供稍后取回的数据的一部分;
在瞬时时刻捕获被包括在所述应用高速缓存内的所述一个或多个高速缓存部分中的每一个的状态,其中捕获所述一个或多个高速缓存部分中的每一个的所述状态包括捕获与每个高速缓存部分相关联的标识符,并且将每个高速缓存部分存储在处于所述应用高速缓存的外部的存储装置中;
在所述瞬时时刻之后检测所述应用的运行状态到第二运行状态的改变;
在检测到所述应用的运行状态到所述第二运行状态的所述改变之后,再次在所述第一运行状态中操作所述应用;以及
当所述应用正再次在所述第一运行状态中操作时,至少执行以下各项:
标识一个或多个捕获的高速缓存部分标识符中的至少一个;以及
基于标识所述一个或多个捕获的高速缓存部分标识符中的至少一个,从处于所述应用高速缓存的外部的所述存储装置自动地取回与所标识的至少一个捕获的高速缓存部分标识符相关联的每个高速缓存部分,并且将每个取回的高速缓存部分存储在所述应用高速缓存中,使得所述应用高速缓存被自动加热以用于所述第一运行状态。
CN201680011344.XA 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复 Active CN107408078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011139982.4A CN112256597A (zh) 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/631,695 2015-02-25
US14/631,695 US9684607B2 (en) 2015-02-25 2015-02-25 Automatic recovery of application cache warmth
PCT/US2016/018999 WO2016137909A1 (en) 2015-02-25 2016-02-23 Automatic recovery of application cache warmth

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202011139982.4A Division CN112256597A (zh) 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复

Publications (2)

Publication Number Publication Date
CN107408078A CN107408078A (zh) 2017-11-28
CN107408078B true CN107408078B (zh) 2020-11-24

Family

ID=55485364

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680011344.XA Active CN107408078B (zh) 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复
CN202011139982.4A Pending CN112256597A (zh) 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202011139982.4A Pending CN112256597A (zh) 2015-02-25 2016-02-23 应用高速缓存热度的自动恢复

Country Status (4)

Country Link
US (2) US9684607B2 (zh)
EP (1) EP3262511B1 (zh)
CN (2) CN107408078B (zh)
WO (1) WO2016137909A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684607B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
US9684596B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)
US10649861B1 (en) * 2017-08-02 2020-05-12 EMC IP Holding Company LLC Operational recovery of serverless applications in a cloud-based compute services platform
US11314601B1 (en) 2017-10-24 2022-04-26 EMC IP Holding Company LLC Automated capture and recovery of applications in a function-as-a-service environment
US10860433B1 (en) 2017-10-24 2020-12-08 EMC IP Holding Company LLC Directional consistency in capture and recovery of cloud-native applications
US11853569B2 (en) 2021-01-28 2023-12-26 Nutanix, Inc. Metadata cache warmup after metadata cache loss or migration
CN114844846A (zh) * 2022-04-14 2022-08-02 南京大学 一种基于可编程交换机的多级缓存分布式键值存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549210B1 (en) * 1999-02-03 2003-04-15 Ati Technologies Inc. Method and apparatus for cache index hashing
CN1512353A (zh) * 2002-12-27 2004-07-14 国际商业机器公司 性能改善的数据存储和方法
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存
CN103218309A (zh) * 2011-12-06 2013-07-24 辉达公司 多级指令高速缓存预取

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021480A (en) * 1996-06-05 2000-02-01 Compaq Computer Corporation Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line
US6571324B1 (en) 1997-06-26 2003-05-27 Hewlett-Packard Development Company, L.P. Warmswap of failed memory modules and data reconstruction in a mirrored writeback cache system
US7526481B1 (en) * 1999-04-19 2009-04-28 Oracle International Corporation Web servers with queryable dynamic caches
US7085955B2 (en) * 2001-09-14 2006-08-01 Hewlett-Packard Development Company, L.P. Checkpointing with a write back controller
US20040024969A1 (en) * 2002-07-31 2004-02-05 Texas Instruments Incorporated Methods and apparatuses for managing memory
CA2433254A1 (en) 2003-06-25 2004-12-25 Ibm Canada Limited - Ibm Canada Limitee System and method for warm shutdown and restart of a buffer pool
GB0316532D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for partitioning code in program code conversion
US7502892B2 (en) * 2003-12-30 2009-03-10 Intel Corporation Decoupling request for ownership tag reads from data read operations
US7475190B2 (en) 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US20070005883A1 (en) 2005-06-30 2007-01-04 Trika Sanjeev N Method to keep volatile disk caches warm across reboots
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7769951B2 (en) 2007-04-10 2010-08-03 Yahoo! Inc. Intelligent caching of user data for real time communications
CN101470645B (zh) 2007-12-29 2012-04-25 华为技术有限公司 一种高速缓存数据恢复的方法和装置
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US8612383B2 (en) 2008-11-05 2013-12-17 Mastercard International Incorporated Method and systems for caching objects in a computer system
US8117317B2 (en) 2008-12-31 2012-02-14 Sap Ag Systems and methods for integrating local systems with cloud computing resources
US20100318584A1 (en) 2009-06-13 2010-12-16 Microsoft Corporation Distributed Cache Availability During Garbage Collection
CN102043727B (zh) 2009-10-10 2014-04-02 成都市华为赛门铁克科技有限公司 恢复固态硬盘映射表的方法及其装置
US8683465B2 (en) 2009-12-18 2014-03-25 International Business Machines Corporation Virtual image deployment with a warm cache
US8375180B2 (en) 2010-02-05 2013-02-12 International Business Machines Corporation Storage application performance matching
CN102012849B (zh) 2010-11-19 2012-10-24 中国人民大学 一种基于闪存的数据库恢复方法
WO2012091702A1 (en) 2010-12-29 2012-07-05 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
CN102567490B (zh) 2011-12-21 2013-12-04 华为技术有限公司 数据库内的描述信息的恢复和数据的缓存方法及设备
US9317435B1 (en) 2012-12-18 2016-04-19 Netapp, Inc. System and method for an efficient cache warm-up
US9037799B2 (en) 2013-02-11 2015-05-19 Avago Technologies General Ip (Singapore) Pte Ltd Rebuild of redundant secondary storage cache
WO2014158156A1 (en) 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Storing data from cache lines to main memory based on memory addresses
US10114755B2 (en) * 2013-06-14 2018-10-30 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
US9882984B2 (en) 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
WO2015029230A1 (ja) 2013-08-30 2015-03-05 株式会社日立製作所 記憶装置及びデータ制御方法
US9684607B2 (en) * 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
US9114758B1 (en) 2013-10-21 2015-08-25 Alan S Poudrier Convertible cargo carrier and cart system
JP6293888B2 (ja) * 2013-12-12 2018-03-14 インテル コーポレイション 競合状態を検出する技法
US9684596B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549210B1 (en) * 1999-02-03 2003-04-15 Ati Technologies Inc. Method and apparatus for cache index hashing
CN1512353A (zh) * 2002-12-27 2004-07-14 国际商业机器公司 性能改善的数据存储和方法
CN103218309A (zh) * 2011-12-06 2013-07-24 辉达公司 多级指令高速缓存预取
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存

Also Published As

Publication number Publication date
US9684607B2 (en) 2017-06-20
CN112256597A (zh) 2021-01-22
US10114765B2 (en) 2018-10-30
EP3262511A1 (en) 2018-01-03
EP3262511B1 (en) 2022-03-16
US20170270055A1 (en) 2017-09-21
US20160246735A1 (en) 2016-08-25
WO2016137909A1 (en) 2016-09-01
CN107408078A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
CN107408078B (zh) 应用高速缓存热度的自动恢复
US10613978B2 (en) Application cache replication to secondary application(s)
US9996465B2 (en) Cached volumes at storage gateways
US10540279B2 (en) Server-based persistence management in user space
US9268651B1 (en) Efficient recovery of storage gateway cached volumes
US20150363319A1 (en) Fast warm-up of host flash cache after node failover
US9274956B1 (en) Intelligent cache eviction at storage gateways
EP3502877B1 (en) Data loading method and apparatus for virtual machines
US9559889B1 (en) Cache population optimization for storage gateways
MX2014007678A (es) Tomas de pantalla consistentes con aplicacion de un volumen compartido.
US11080207B2 (en) Caching framework for big-data engines in the cloud
US11687595B2 (en) System and method for searching backups
JP5780377B2 (ja) 情報処理システム、及びアプリケーションの移転方法
CN113687935A (zh) 一种基于超融合设计的云原生存储调度方式
US20200026463A1 (en) Method and system for accessing virtual machine state while virtual machine restoration is underway
US11099948B2 (en) Persistent storage segment caching for data recovery
US20230195579A1 (en) Peer Recovery From Remote Storage
CN114579269A (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