CN104636269B - 高可用性数据处理系统及其方法 - Google Patents

高可用性数据处理系统及其方法 Download PDF

Info

Publication number
CN104636269B
CN104636269B CN201410612425.8A CN201410612425A CN104636269B CN 104636269 B CN104636269 B CN 104636269B CN 201410612425 A CN201410612425 A CN 201410612425A CN 104636269 B CN104636269 B CN 104636269B
Authority
CN
China
Prior art keywords
cache
buffering area
response
data
producer
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
CN201410612425.8A
Other languages
English (en)
Other versions
CN104636269A (zh
Inventor
S·盖
G·L·格思里
H·M·勒
沈昱
P·G·威廉姆斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104636269A publication Critical patent/CN104636269A/zh
Application granted granted Critical
Publication of CN104636269B publication Critical patent/CN104636269B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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
    • 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/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/0815Cache consistency protocols
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种高可用性数据处理系统及其操作。一种用于操作高可用性(HA)数据处理系统的技术包括响应于在高速缓存处接收HA注销指示,启动高速缓存遍历以便定位所述高速缓存中包括HA数据的高速缓存行。响应于确定高速缓存行包括HA数据,在所述高速缓存中的缓冲区的第一部分中记录所述高速缓存行的地址。响应于所述缓冲区的所述第一部分达到确定的填充水平,将所述缓冲区的所述第一部分的内容记录到另一个存储器。响应于遍历所述高速缓存中的所有高速缓存行,结束所述高速缓存遍历。

Description

高可用性数据处理系统及其方法
技术领域
本公开一般地涉及基于检查点的高可用性系统,更具体地说,涉及用于记录高可用性数据的地址的技术。
背景技术
可以根据应用和支持平台考虑计算。支持平台通常包括以下各项的硬件基础架构:一个或多个处理器核心、输入/输出、存储器和固定存储装置 (它们的组合支持操作系统(OS),操作系统又支持一个或多个应用)。应用可以被视为自包含的逻辑包,它们依赖于核心对象文件和相关资源文件。随着计算成为现代工业的不可分割部分,应用变得与其它应用的存在相互依赖。即,应用的必需环境不仅包括底层OS和支持硬件平台,而且还包括其它关键应用。
关键应用可以包括应用服务器、数据库管理服务器、协作服务器,以及通常称为中间件的通信逻辑。如果给出应用复杂性和平台互操作性,则在单个硬件平台中执行的不同应用组合可以展现不同程度的性能和稳定性。虚拟化技术在支持平台和正在执行的应用之间插入一个层。从业务连续性和灾难恢复的角度来看,虚拟化提供环境可移植的固有优势。例如,移动配置有多个不同应用的整个环境如同将虚拟映像从一个支持硬件平台移动到另一个平台那样简单。
一般而言,更强大的计算环境可以支持多个不同虚拟映像的共存,同时保持映像之间的虚拟分离。因此,一个虚拟映像中的故障情况通常不能危及同一硬件平台中的其它同时执行的虚拟映像的完整性。虚拟机监视器 (VMM)或系统管理程序管理每个虚拟映像或虚拟机(VM)与硬件平台提供的底层资源之间的交互。裸机系统管理程序直接在硬件平台上运行,类似于OS直接在硬件上运行的方式。相比之下,托管系统管理程序在主机OS中运行。在任何一种情况下,系统管理程序都可以支持不同客机OS 映像或VM映像(或简称VM)的操作。VM的数量仅由持有VM的VM 容器的处理资源或硬件平台限制。
虚拟化被证明对于以下最终用户尤其有用:他们针对在单个硬件平台上部署的不同类型应用,需要单独的计算环境。例如,一种类型的硬件平台本机的主要OS可以提供不同硬件平台本机的虚拟化客机OS(以便需要存在客机OS的应用可以与需要存在主要OS的其它应用共存)。在这种情况下,不需要最终用户提供单独的计算环境来支持不同类型的应用。即,不考虑客机OS,对单个硬件平台的底层资源的访问仍为静态。
在组合应用解决方案中,部署虚拟化环境以便在不同VM中聚合相互依赖的不同应用。例如,应用服务器可以在一个VM中执行,而数据库管理服务器在不同VM中执行,Web服务器在另一个VM中执行。在安全网络中,每个VM可以以通信方式耦合到彼此,并且应用的任何给定部署可以实时迁移到不同部署而不会干扰其它VM中的其它应用的执行。在典型的实时迁移中,VM可以从一个主机服务器移动到另一个主机服务器,以便例如允许服务器维护或者允许改进硬件对VM的支持。
基于检查点的高可用性(HA)是一种技术,其中在主要主机上运行的 VM将其每个时期(例如,25mS)的处理器和存储器状态镜像到辅助主机。镜像过程通常包括:跟踪主要VM的存储器和处理器状态的更改;定期停止主要VM;通过网络将更改发送到辅助主机;等待辅助主机确认接收存储器和处理器状态更新;以及恢复主要VM。如果主要主机发生突然硬件故障,则镜像过程确保辅助主机能够以最小的服务损失恢复工作负载。如果辅助主机检测到主要主机未响应或者从主要主机接收到显式通知,则辅助主机启动VM的镜像版本,并且向外界显示为VM跨越主要主机故障而无缝地继续执行。
尽管基于检查点的HA技术针对硬件故障提供有效保护,但基于检查点的HA技术不会防止软件故障。因为在辅助主机上如实再现主要VM的处理器和存储器状态,所以如果软件崩溃(例如,取消引用空指针)导致故障转移到辅助主机,则辅助VM从上一个检查点恢复执行,并且如果程序执行是确定的,则将发生相同的错误。具有某些受限情况,其中如果软件故障触发故障转移,则VM可能不会崩溃。但是,这些情况很少见,并且更多地依赖运气而不是设计。例如,当在辅助主机上恢复工作负载时,可能不会发生显示为争用情况(其中一个处理器可以访问正在由另一个处理器修改的数据)的软件错误,因为侥幸地由于调度,数据最终可能不会被同时访问。
发明内容
一种用于操作高可用性(HA)数据处理系统的技术包括响应于在高速缓存处接收HA注销指示,启动高速缓存遍历以便定位所述高速缓存中包括HA数据的高速缓存行。响应于确定高速缓存行包括HA数据,在所述高速缓存中的缓冲区的第一部分中记录所述高速缓存行的地址。响应于所述缓冲区的所述第一部分达到确定的填充水平,将所述缓冲区的所述第一部分的内容记录到另一个存储器。响应于遍历所述高速缓存中的所有高速缓存行,结束所述高速缓存遍历。
以上概要包含细节的简化、概括和省略,并且并非意欲作为所要求保护的主题的全面描述,而是旨在提供与其关联的某些功能的简要概述。通过查看以下各图和详细的书面描述,所要求保护的主题的其它系统、方法、功能、特性和优点对于所属技术领域的技术人员来说将显而易见或者将变得显而易见。
本发明的上述以及其它目的、特性和优点将在以下详细的书面描述中变得显而易见。
附图说明
将结合附图阅读示例性实施例的描述,这些附图是:
图1是根据本公开的被配置为产生高可用性(HA)日志和数据的示例性数据处理系统环境的相关部分的示意图;
图2是可以在图1的数据处理系统环境中部署的一个数据处理系统(其包括生产者核心和生产者高速缓存)和另一个数据处理系统(其包括消费者核心和消费者高速缓存)的示意图;
图3是示出根据本公开的一个实施例的将HA日志和数据从图2的生产者高速缓存转移到消费者高速缓存(分别使用高速缓存注入命令和横向逐出命令)的示意图;
图4是根据本公开的另一个实施例的高速缓存的相关部分的示意图,该高速缓存的目录针对每个高速缓存行包括一个HA位以便指示高速缓存行的地址是否需要记录;
图5是根据本公开的一个实施例的被配置为记录HA数据的地址的处理器核心、级别2(L2)高速缓存和级别3(L3)高速缓存的相关部分的示意图;以及
图6是根据本公开的另一个实施例的用于记录HA数据的地址的示例性过程的流程图。
具体实施方式
各示例性实施例提供一种被配置为记录高可用性(HA)数据的地址的方法、数据处理系统和处理器。
在下面对本发明的示例性实施例的详细描述中,将充分详细地描述可以在其中实现本发明的特定示例性实施例,以便使所属技术领域的技术人员能够实现本发明,并且将理解,可以使用其它实施例并在不偏离本发明的精神或范围的情况下做出逻辑、体系结构、编程、机械、电子和其它更改。因此,不应以限制的意义来理解以下详细描述,并且本发明的范围仅由所附权利要求及其等同物来限定。
应该理解,使用特定组件、设备和/或参数名称只是为了举例,并非旨在暗示对本发明的任何限制。因此,可以使用用于在此描述组件/设备/参数的不同命名/术语来实现本发明而没有任何限制。如果给出其中使用术语的上下文,则为在此使用的每个术语提供其最广泛的解释。如在此使用的,术语“耦合”可以包含组件或元件之间的直接连接,或者组件或元件之间使用一个或多个中间组件或元件的间接连接。如在此使用的,术语“系统存储器”与术语“主存储器”同义,但不包括“高速缓存”或“高速缓冲存储器”。
如上所述,基于检查点的高可用性(HA)是一种技术,其中在“主要主机”上运行的虚拟机(VM)定期(例如,每隔25mS)执行“检查点”,其将主要主机的处理器和存储器状态镜像到“辅助主机”。镜像过程包括:跟踪VM的处理器寄存器和存储器的更改;定期停止VM;(例如,通过网络)将跟踪的更改发送到辅助主机;等待辅助主机确认接收处理器和存储器状态更新;以及在主要主机上恢复VM。如果主要主机遇到突然硬件故障,则这将确保辅助主机能够以最小的服务损失恢复工作负载。
在一个或多个常规的基于检查点的HA实现中,系统管理程序使用页保护标识VM存储器的修改区域,其中在检查点之后将所有存储器标记为只读。系统管理程序运行以便:检测当首次向存储器页执行存储时发生的后续错误;恢复页的原始访问权限;以及将页标记为“脏”,其表示需要在下一个检查点处传输页。通常,采用检查点的VM通常比不采用检查点产生更多的页保护错误。应该理解,通常对页上单个字节的更改需要将整个页传输到辅助系统,因为在去除页保护之后,如果不使用额外处理器周期和额外存储器将该页与原始页的副本相比较,则无法知晓该页被修改多少。由于需要将整个脏页发送到辅助系统,因此常规HA系统通常使用相对较小的页大小(例如,4K页大小,而不是64K页大小)以便减少主要系统与辅助系统之间的业务。在这种情况下,常规HA系统性能可能受到不利影响,因为操作系统(OS)不能使用大页。
根据本公开的一个或多个方面,可以通过维护缓冲区以高速缓存行粒度记录对存储器的修改而没有页错误,该缓冲区使用自上一个检查点以来由生产者处理器核心(生产者核心)修改的高速缓存行的地址(即,实地址或实地址的一部分)填充。可以在检查点期间或者在检查点之前以推测方式检查缓冲区,以便确定需要将哪些高速缓存行传输到辅助系统以维护一致的存储器映像。维护高速缓存中的缓冲区通常减少页错误,并且减少主要系统和辅助系统之间的业务,这是由于更小的修改粒度(即,高速缓存行,而不是页)所致。缓冲区方法也是页大小不可知的,因此HA系统可以使用更大的页大小而不会产生与页大小相关的性能损失。
根据本公开的一个或多个实施例,记录高速缓存行地址较之已知方法将产生显著的性能优势并且降低复杂性。在各种实施例中,所公开的技术可以以硬件实现,其中某些组件以高速缓存实现,并且某些参数经由仅可由特权系统管理程序代码访问的处理器寄存器公开。在一个或多个实施例中,修改系统管理程序软件以便利用添加的硬件特性。
在许多现代处理器设计的高速缓存层次结构中,存在某种形式的逐出 (cast-out)机和窥探干预机。逐出机负责将从高速缓存逐出的数据写回到主存储器(或系统存储器)或者写入到与另一个处理器关联的高速缓存。窥探干预机负责将数据从给定高速缓存提供给另一个处理器,该处理器尝试获得对包括该数据的高速缓存行的访问。逐出机的操作例如可以由以下需要触发:针对入站数据释放高速缓存中的空间。可以触发窥探干预机的操作,以便例如在另一个处理器想要修改高速缓存行中的数据的情况下,为该处理器提供对该高速缓存行的独占访问。一般而言,在检查点间隔(即,两个检查点之间的时间)内,在检查点之间修改的每个高速缓存行作为脏数据位于高速缓存行中,或者通过逐出机或窥探干预机。为了记录尚未记录的HA数据的地址,可以在检查点处触发高速缓存遍历/清理(scrub)。
高速缓存清仓/清除将脏数据推出到主存储器,以便保证在检查点之间修改的每个高速缓存行都通过逐出机。可以修改逐出机/窥探干预机,以便不但将脏高速缓存行数据写入到存储器/另一个高速缓存,而且机器还可以在以下模式下操作:其中将修改后的高速缓存行的地址写入到位于高速缓存中的循环缓冲区。为了提高效率,高速缓存硬件可以被配置为管理中间缓冲区(例如,双高速缓存行深度缓冲区),该缓冲区收集逐出机和/或窥探干预机报告的地址(例如,8字节地址)。在一个或多个实施例中,当中间缓冲区充满高速缓存行地址有效负载时,逐出机(通过逐出命令)将中间缓冲区的内容移动到循环缓冲区。在至少一个实施例中,中间缓冲区中的每个高速缓存行最多保存十六个八字节地址(例如,一百二十八个字节)。
应该理解,并非数据处理系统的所有处理器核心都始终在生产者模式下运行。在生产者模式下运行的处理器核心在此称为“生产者核心”。可以通过设置可由系统管理程序访问的硬件标志,将处理器核心置于生产者模式。在至少一个实施例中,当处理器核心处于生产者核心模式时,为了管理向循环缓冲区的写入,逐出机维护包含以下各项的寄存器:基数(其是到缓冲区的基地址的指针);生产者头(其是将下一个地址写入到其中的缓冲区中的偏移);屏障(其是边界指针);以及大小(其是缓冲区大小的指示)。
在各种实施例中,在存储器中维护HA记录,该存储器独立于分配给虚拟机(VM)的存储器并且仅可由系统管理程序访问。当处于生产者核心模式时,逐出和窥探干预操作除了常规的逐出和/或窥探干预行为之外,还被配置为将修改后的高速缓存行的地址记录到高速缓存的当前填充的中间缓冲区(例如,使用乒乓缓冲以便可以填充一个缓冲区,而将另一个缓冲区写回到主存储器)。当处于生产者核心模式时,命令逐出机通过以下行为,将高速缓存行从高速缓存的中间缓冲区(因为它们已满)移动到高速缓存中的循环缓冲区:向生产者头指针发出高速缓存行地址的存储;递增生产者头指针,从而如果生产者头指针超过基数大小,则绕回到基数;以及如果生产者头等于屏障,则向系统管理程序传送错误。
在一个或多个实施例中,当出现检查点时:主要系统上的系统管理程序暂停主要VM的执行;触发高速缓存遍历操作以便针对HA日志生成表项;以及消费者核心遍历HA日志,该核心可以是物理上不同的核心或同一核心(但不再处于生产者核心模式)。对于每个HA日志表项,消费者核心:读取地址;从VM的存储器读取该地址处的当前数据;将(地址、数据)对传输到辅助系统,其中(地址、数据)对用于更新辅助VM的存储器映像;将其它状态(例如,处理器寄存器)与辅助系统同步;然后启动主要VM的执行恢复。
消费者核心可以实现各种优化。例如,当在检查点间隔内数次逐出特定地址时,逐出的地址将在日志中出现多次。应该理解,仅需要将重复的逐出地址传输到辅助系统一次,因为传输VM的存储器中的当前数据而不是逐出时的数据(其未被记录)。因此,消费者核心可以执行某种缩减以便减少到辅助系统的带宽。如上所述,当主要VM使用多个处理器核心,并且在相同检查点间隔内多个生产者核心逐出相同高速缓存行时,地址将在多个日志中出现,但仅需要传输一次。此外,可以跨越HA日志执行某种缩减以便减少带宽。
可以在检查点之前,启动消费者核心以便以推测方式处理生产者核心的HA日志。尽管以推测方式处理生产者核心的HA日志将减小缩减范围,但以推测方式处理生产者核心的HA日志使数据传输到辅助系统变得顺畅,并且更有效地使用可用的总带宽。应该注意,在检查点之间的持续时间内,主要VM使用的大部分工作空间可以位于高速缓存中,并且大部分记录在检查点时间处发生。硬件的自然缓存可以仅在记录给定高速缓存行时执行一次有效作业,即使当高速缓存行在检查点之间已被存储多次。屏障寄存器的目的是确保在检查点操作期间不会由于日志封装而丢失数据。屏障指向检查点间隔中的第一个日志记录,以便基于针对屏障检查生产者头,确保不能覆盖数据。
在各种实施例中,如果到达屏障,则启动到辅助系统的故障转移,或者重新同步所有VM存储器。需要到辅助系统的故障转移或VM存储器重新同步,因为高速缓存中可能具有尚未通过逐出机的脏数据。在这种情况下,简单地启动立即检查点不能满足需要,因为没有用于记录脏地址的位置。一般而言,系统管理程序应该确保日志具有适当的大小,并且还定期监视生产者头指针,从而如果预计日志溢出,则启动早期检查点。如果消费者核心以推测方式处理日志,则系统管理程序可以定期向前移动屏障指针,以便仅当生产者核心与消费者核心尚未处理的日志表项冲突(如果消费者核心落后)时才触发溢出。
如上面讨论的,可以修改高速缓存硬件,以便确保高速缓存中的循环缓冲区定期包括所有存储位置列表,这些存储位置自上一个检查点以来由给定处理器核心修改。一般而言,修改导致逐出机和窥探干预机记录在检查点之间离开高速缓存的存储地址,并且在检查点处启动高速缓存清仓以便确保修改后的数据未保留在高速缓存中(从而确保修改后的数据通过逐出机并被记录)。该方法的缺点是在每个检查点间隔都需要高速缓存清仓。高速缓存清仓针对逐出机和存储子系统产生额外压力,并且通常降低在高可用性(HA)模式下运行的工作负载的性能。
根据另一种方法,通过针对高速缓存中的每个高速缓存行引入新“HA 位”,保证在检查点间隔记录所有地址而不需要高速缓存清仓。可以响应于当处理器核心在生产者模式下运行时修改高速缓存行而断言HA位,并且可以作为高速缓存遍历操作的一部分而取消断言,该遍历操作在检查点处执行并且遍历以下高速缓存:该高速缓存导致将其HA位被断言的高速缓存行的地址记录到循环缓冲区。然后针对所有记录的高速缓存行取消断言HA位。在该实现中,与高速缓存行关联的数据不被立即写入到主存储器,并且高速缓存行仍在高速缓存中被标记为“脏”。处理器高速缓存通常实现为查找表,该查找表将地址(标记)与某些数据关联。标记可以是虚拟或物理地址或者其某种组合,并且数据具有固定大小(例如,高速缓存行)。对于任何给定标记,高速缓存中可以存在可在其中发现数据的数个位置,因此高速缓存查找通常涉及检查多个槽(slot)以便发现匹配标记。此外,槽可能并非包含所有数据,因此槽通常不仅包括要与标记关联的数据,而且还包括多个标志。
根据另一种实现,向高速缓存中的每个槽添加HA位。当在生产者核心模式下运行的处理器核心更新与高速缓存行关联的数据时,断言该HA 位。在检查点处,高速缓存遍历操作遍历整个高速缓存,类似于高速缓存清仓,而不是检查“脏位”并将数据推出到主存储器,高速缓存遍历操作代之以检查“HA位”并将物理地址推出到循环缓冲区。
在大多数计算系统中,通常具有数级高速缓存(例如,级别1到级别“N”(即,L1到LN),其中L1表示与处理器核心最靠近的最快、最小的高速缓存,“N”通常是3或4,并且往往随着“N”的增加而更慢和更大)。在一个或多个实施例中,高速缓存遍历操作遍历可能包含HA修改后的数据的所有高速缓存,但这不一定意味着必须遍历所有高速缓存,因为高速缓存级别可以是直写或回写的。众所周知,直写高速缓存在高速缓存中保留数据,而且还将数据同步推送到下一个高速缓存级别,以便针对后续读取实现快速访问时间。直写高速缓存的写入比回写高速缓存成本更高昂,因为写入者必须等待(更慢的)下一个级别高速缓存中的写入完成。直写高速缓存不需要清仓。回写高速缓存在高速缓存中保留数据,并且不会将数据同步推送到高速缓存中的下一个级别。使用回写高速缓存,向高速缓存的写入过程更快,但代价是在对称多处理器(SMP)系统中必须管理高速缓存之间的数据一致性。当从高速缓存中逐出数据以便为其它数据腾出空间时,产生向高速缓存中的下一个级别写入的成本。
在多层高速缓存层次结构中,高速缓存遍历操作在检查点处仅需要遍历回写高速缓存。例如,在包括直写L1高速缓存、回写L2高速缓存和回写L3高速缓存的系统中,处理器核心执行的任何写入都将被写入到L1高速缓存,并且(因为L1高速缓存是直写高速缓存)还被写入到L2高速缓存。在这种情况下,L1高速缓存中的脏数据也在L2高速缓存中。当L2 高速缓存中需要更多的空间时,脏数据被逐出并且变成L3高速缓存中的脏数据。在该实例中,在生产者核心模式下执行的写入针对关联的高速缓存行在L2高速缓存中设置HA位。当具有在L2高速缓存中断言的HA位的高速缓存行被逐出到L3高速缓存时,断言L3高速缓存中与该高速缓存行关联的HA位。在该实例中,L1高速缓存不需要HA位。在检查点处,高速缓存遍历操作需要遍历L2和L3高速缓存,从而将设置HA位的高速缓存行的所有物理地址写入到循环缓冲区,并且在操作完成之时清除所有 HA位。
以上说明描述了对高速缓存硬件的增强,以便确保高速缓存中的循环缓冲区定期存储所有存储位置列表,这些存储位置自上一个检查点以来已被给定处理器核心修改。修改后的存储位置列表可以用于改进系统性能和可靠性。修改后的存储位置列表(存储在“循环缓冲区”、“HA日志”或“HA表”中)由支持高速缓存(例如,L2/L3高速缓存)维护,并且修改后的高速缓存行保存HA数据。HA日志和HA数据由消费者核心处理以便提供系统可靠性和冗余。通常,当产生HA日志时,HA生产者高速缓存已将HA日志从高速缓存中的循环缓冲区直接写入到主存储器。当从与HA生产者核心关联的高速缓存中驱除HA数据时,HA数据通常也已被写入到主存储器。
为了处理HA日志和HA数据,消费者核心通常从主存储器中读取 HA日志和HA数据两者。与在此公开的技术相比,常规方法需要多次访问主存储器,针对存储资源产生相对大的带宽费用,消耗电力,并增加消费者核心处理HA日志和HA数据的时间。在现代大型服务器中,存储资源非常珍贵,并且存储能力是系统能力的主要组成部分。根据本公开的各种实施例,处理HA日志和HA数据的时间减少,这增加系统可以用于其它任务的时间。
根据本公开的一个或多个实施例,与HA生产者核心关联的生产者高速缓存将HA日志(从生产者高速缓存中的循环缓冲区)直接移动到HA 消费者核心的高速缓存中。根据不同方面,生产者高速缓存还将存储在生产者高速缓存中的HA数据直接移动到消费者核心的高速缓存中。这样,消除生产者高速缓存将HA日志和HA数据移出到主存储器,然后消费者核心必须从主存储器中取回HA日志和HA数据两者的需要。因此,消费者核心执行HA系统备份的所需时间减少,存储资源的负担降低,并且与实现HA关联的功耗降低。
在各种实施例中,HA生产者高速缓存被配置为标识应该放入HA日志中的高速缓存行地址。对于HA日志表项,HA生产者包括硬件寄存器以便标识HA日志的位置。在一个或多个实施例中,HA生产者高速缓存利用系统总线的“高速缓存注入”命令或“强制高速缓存注入”命令一致地将HA日志表项直接安装到HA消费者核心的高速缓存中(而不是将 HA日志表项写入到主存储器)。高速缓存注入命令被配置为维护一致性,因为在HA日志写入时生产者核心可能没有HA日志高速缓存行的所有权。众所周知,高速缓存注入命令是专用的系统总线命令,其促进将高速缓存行直接写入到高速缓存(例如,消费者高速缓存)中。可以基于生产者高速缓存目录中用于跟踪HA生产者核心修改哪些高速缓存行的“HA位”,区分HA数据与非HA数据。
在一个或多个实施例中,当生产者高速缓存驱除HA数据时,可以使用横向逐出(LCO)命令将HA数据一致地转移到HA消费者核心的高速缓存(在相同级别,例如,L2-L2、L3-L3)而不是主存储器。LCO命令允许生产者高速缓存专门针对所有HA数据定向消费者核心的高速缓存。在一个或多个实施例中,当生产者核心已经具有HA数据的所有权并且 LCO更有效时,使用LCO命令转移数据。当处理HA日志(经由常规加载)时,消费者核心将发现HA日志高速缓存行表项已经在它自己的级别 2(L2)和级别3(L3)高速缓存中,这将最大程度减少访问HA日志(HA 日志指向HA数据高速缓存行)所需的时间。当消费者核心启动HA数据处理时,发现这些HA数据高速缓存行已经一致地安装在消费者核心高速缓存(例如,消费者核心的L2和L3高速缓存)中。将HA日志和HA数据从生产者高速缓存直接移动到消费者高速缓存将减少系统总线业务以及与消费者核心处理执行HA系统的HA备份所需的HA日志和HA数据相关联的延迟。
参考图1,示出根据本公开的一个或多个实施例的示例性数据处理环境100,其包括被配置为在高可用性(HA)日志中记录HA数据的地址的数据处理系统110。应该理解,HA日志可以位于各种位置中。数据处理系统110可以采取各种形式,例如工作站、膝上型计算机系统、笔记本计算机系统、台式计算机系统或服务器和/或其集群。数据处理系统110包括一个或多个处理单元或处理器102(其中每个可以包括一个或多个处理器核心以便执行程序代码),其耦合到数据存储子系统104,可选地耦合到显示器106、一个或多个输入设备108和网络适配器109。数据存储子系统 104例如可以包括应用适当数量的各种存储器(例如,动态随机存取存储器(DRAM)、静态RAM(SRAM)和只读存储器(ROM))和/或一个或多个大容量存储设备,例如磁盘或光盘驱动器。
数据存储子系统104包括用于数据处理系统110的一个或多个操作系统(OS)114。数据存储子系统104还可以包括应用程序,例如浏览器112 (其可以可选地包括定制插件以便支持各种客户机应用)、系统管理程序 (或虚拟机监视器(VMM))116以便管理不同OS映像实例化的一个或多个虚拟机(VM)120,以及其它应用(例如,字处理应用、演示应用和电子邮件应用)118。
显示器106例如可以是阴极射线管(CRT)或液晶显示器(LCD)。数据处理系统110的输入设备(多个)108例如可以包括鼠标、键盘、触觉设备和/或触摸屏。网络适配器109支持数据处理系统110使用诸如 802.x、HTTP、简单邮件传输协议(SMTP)之类的一个或多个通信协议,与一个或多个有线和/或无线网络通信。数据处理系统110被示出经由一个或多个有线或无线网络(例如因特网122)耦合到各种文件服务器124和各种网页服务器126,这些服务器为数据处理系统110的用户提供感兴趣的信息。数据处理环境100还包括一个或多个数据处理系统(DPS)150,其配置方式类似于数据处理系统110。一般而言,数据处理系统150表示以下数据处理系统:其在数据处理系统110的远端,并且可以执行可链接到在数据处理系统110上执行的一个或多个OS映像的OS映像。
所属技术领域的普通技术人员应该理解,图1中示出的硬件组件和基本配置可以有所变化。数据处理系统110中的示例性组件并非旨在是穷举的而是代表性的,以便强调可以用于实现本发明的组件。例如,除了示出的硬件或替代示出的硬件,还可以使用其它设备/组件。示出的实例并非旨在暗示有关目前描述的实施例的体系结构或其它限制。
参考图2,更详细地示出数据处理系统(DPS)110和150的相关组件。DPS 110和150可以包括一个或多个处理器102,其中每个包括级别1(L1) 指令高速缓存,其耦合到例如可以在数据存储子系统104中实现的一个或多个其它高速缓存级别(例如,级别2(L2)和级别3(L3)高速缓存)。如图2中所示,DPS 110包括生产者核心202,其耦合到生产者高速缓存 (例如,包括L2和L3高速缓存)204。如图所示,生产者高速缓存204 可以包括逐出机205、窥探干预机206、循环缓冲区207和中间缓冲区208。同样,DPS 150包括消费者核心212,其耦合到消费者高速缓存(例如,包括L2和L3高速缓存)214。尽管生产者核心202/生产者高速缓存204和消费者核心212/消费者高速缓存214被示为在不同数据处理系统中,但应该理解,生产者核心202、生产者高速缓存204、消费者核心212和消费者高速缓存214可以在包括多个处理器核心的同一数据处理系统中实现。
参考图3,生产者高速缓存204被示出为将HA数据302和HA日志 304直接存储到消费者高速缓存214中。HA数据302和HA日志304可以存储在相同高速缓存级别(例如,L2或L3高速缓存)中,或者可以存储在不同高速缓存级别中。消费者高速缓存214被示出为响应于来自生产者高速缓存204的横向逐出(LCO)命令而存储HA数据302。消费者高速缓存214还被示出为响应于来自生产者高速缓存204的高速缓存注入命令而存储HA日志304。应该理解,可以使用其它类型的操作,将HA数据 302和HA日志304从生产者高速缓存204直接移动到消费者高速缓存214。一般而言,消费者核心212处理HA日志304和HA数据302所需的时间大大减少,因为消费者核心212不必从主存储器320中取回HA日志304 和HA数据302。在这种情况下,消费者高速缓存214将HA日志304和 HA数据302存储到主存储器320。在一个备选实施例中,生产者高速缓存 204将HA日志304和HA数据302直接存储到主存储器320。
参考图4,示出示例性高速缓存402(其可以实现为生产者高速缓存 204),其包括目录404(其针对每个高速缓存行包括标记和HA位)和阵列406(其包括数据)。应该理解,目录404还可以针对每个高速缓存行包括多个标志(未示出)。如上所述,HA位指示是否需要在检查点处或者当高速缓存行被逐出高速缓存时记录高速缓存行的地址。当生产者核心 202(其是在生产者核心模式下运行的处理器核心)修改与高速缓存行关联的数据时,断言HA位。在检查点处,高速缓存遍历操作(例如,由逐出机205执行)可以遍历整个生产者高速缓存204以便检查每个高速缓存行的“HA位”。然后将具有断言的HA位的每个高速缓存行的物理地址写入到HA日志304(其可以对应于循环缓冲区207)。在一个或多个实施例中,当HA日志304已满(或者处于某个其它阈值水平,例如,四分之三已满)时,生产者高速缓存204(例如,响应于窥探干预机206发出的高速缓存注入命令)将HA日志304移动到消费者高速缓存214以便随后处理。
在各种实施例中,当驱除HA数据302时(即,当从生产者高速缓存 204中驱逐高速缓存行以便为额外数据腾出空间时),生产者高速缓存204 (例如,响应于从逐出机205发出的横向逐出命令)将HA数据302移动到消费者高速缓存214以便随后处理。备选地,生产者高速缓存204可以 (例如,响应于横向逐出命令)在驱除之前将HA数据302移动到消费者高速缓存214。无论如何,当启动HA处理时,消费者核心212利用HA 日志304确定HA数据302的位置。
应该理解,生产者核心可以具有多个单独的HA数据流、逻辑分区 (LPAR)或VM。在检查点处,每个HA高速缓存行(自前一个检查点以来由关联的生产者核心产生)被逐出本地高速缓存,或者作为HA数据仍位于本地高速缓存中。根据本公开,公开了用于在检查点处(即,在 HA注销时)在生产者高速缓存中创建HA数据的地址的HA日志的各种技术。一种用于创建HA日志的方法是在每个检查点处清仓高速缓存。如前所述,高速缓存清仓将所有高速缓存行(包括具有HA数据的高速缓存行)推出被清仓的高速缓存。在这种情况下,逐出机可以在逐出HA数据期间创建HA日志。但是,启动高速缓存清仓不是特别有效,因为高速缓存清仓导致在每个检查点处清仓HA数据和非HA数据,这可以对性能具有不利影响。此外,当向HA日志写入HA数据的地址时,高速缓存清仓不必要地将所有高速缓存行写入到另一个存储器。
根据本公开,公开了有效和灵活的技术,这些技术能够使生产者高速缓存同时针对生产者核心的一个或多个流仅记录HA数据的地址。在各种实施例中,实现高速缓存遍历器逻辑以遍历生产者高速缓存(例如,L2 和L3高速缓存),以便创建当前位于高速缓存中的包括HA数据的所有高速缓存行的地址列表。然后可以将HA日志写入到主存储器或者直接写入到消费者高速缓存。这样,生产者高速缓存的内容仍有效,因为仅针对包括HA数据的每个高速缓存行清除HA位,同时允许高速缓存行中的 HA数据仍位于生产者高速缓存中。根据本公开的一个或多个方面,当系统管理程序针对要设置检查点的一个或多个流停止新HA业务时,生产者核心启动HA检查点(HA注销)过程以便确保所有先前和当前的HA日志更新可见,因此可以记录更新。
根据一个或多个实施例,系统管理程序发出命令(例如,HA注销命令)以便请求针对一个或多个HA数据流创建HA日志。接收HA注销命令的高速缓存将HA注销请求作为屏障处理,并且确保在启动HA注销高速缓存遍历过程之前,向高速缓存提交所有较旧存储。接收HA注销请求的高速缓存应该确保在启动HA注销之前,高速缓存不需要形成新HA高速缓存行,以便促进完成HA注销过程而不丢失HA日志表项。在确定高速缓存不需要形成新HA高速缓存行之后,高速缓存启动高速缓存遍历器逻辑以便遍历高速缓存,并且确保记录一个或多个被请求HA数据流的所有HA高速缓存行(即,记录HA高速缓存行的地址)。例如,HA高速缓存行的地址及其关联的流标识符(ID)可以形成记录的HA日志表项(例如,8字节表项)。当记录HA高速缓存行的地址时,取消断言与HA行关联的HA位。在高速缓存的目录中取消断言HA位将提供关联的高速缓存行已被处理的指示。
在一个或多个实施例中,将多个HA表项一起打包成较大包(通常为高速缓存行),其称为HA日志块。当HA日志块已满时,启动机器(例如,逐出机)以便将HA日志块写入到主存储器或者直接写入到HA消费者高速缓存。在一个或多个实施例中,较高级别高速缓存(例如,L2高速缓存)可以被配置为将HA日志块发送到较低级别高速缓存(例如,L3 高速缓存)。在一个或多个实施例中,较低级别高速缓存然后将HA日志块写入到主存储器或者直接写入到HA消费者高速缓存。当处理被请求流的最后一个HA高速缓存行时,高速缓存紧接在最后一个HA表项之后,将记录结束表项放在HA日志中。记录结束表项用作向消费者指示记录结束表项是针对检查点的HA日志的最后一个表项。将记录结束表项写入到 HA日志之后,高速缓存向系统管理程序指示HA注销完成。例如,高速缓存可以设置(状态寄存器的)遍历完成状态位,以便向系统管理程序指示HA注销完成。
上面的过程描述了单级高速缓存系统的HA注销过程的示例性流程。应该理解,HA注销过程可以扩展到多级高速缓存系统。对于多级高速缓存系统,HA注销可以在最高级别高速缓存启动并向下遍历高速缓存层次结构。在这种情况下,在启动下一个高速缓存级别中的高速缓存遍历之前,较高级别高速缓存完成其HA注销(即,高速缓存遍历)。当最后一个高速缓存级别完成高速缓存遍历时,最终遍历完成。应该理解,HA注销过程适用于许多高速缓存配置。例如,所公开的技术适用于包括以下项的多级高速缓存层次结构:属于直写高速缓存的L1高速缓存;属于回写高速缓存并且包括L1高速缓存的L2高速缓存;以及属于回写高速缓存并且不包括L2高速缓存的L3高速缓存。
在各种实施例中,L2高速缓存向L3高速缓存发送HA日志块以便写入HA日志块。例如,L3高速缓存可以写入L2高速缓存的HA日志块(代表L2高速缓存),以便减少HA日志写入逻辑重复。当L2高速缓存完成其注销序列时,L2高速缓存向L3高速缓存发送命令以便启动L3高速缓存HA注销过程。当L3高速缓存完成其注销序列时,L3高速缓存向L2 高速缓存发回完成信号。L2高速缓存然后向生产者核心发送最终HA注销完成。
参考图5,示出根据本公开的被配置为记录HA数据的地址的数据处理系统500的相关部分。数据处理系统500例如可以对应于数据处理系统 100。如图所示,数据处理系统500包括处理器核心502、L2高速缓存510 和L3高速缓存550。为了启动检查点,在处理器核心502上执行的系统管理程序可以生成HA注销信号,该信号经由核心接口单元(未示出)传送到L2高速缓存510的存储队列(STQ)522。当HA注销信号到达STQ 522 的头时,STQ 522将HA注销信号传送到不可缓存(NC)控制器524,其通常被配置为处理各种非加载和非存储操作,例如高速缓存禁止操作和同步操作。根据本公开,NC控制器524还被配置为响应于读取声明(RC) 机器528指示所有未决HA存储操作均已完成(即,成功分派),启动L2 高速缓存510的高速缓存遍历。应该理解,RC机528和逐出(CO)机530 可以创建新HA高速缓存行。当RC机528向NC控制器524通知与在HA 注销信号之前的HA加载和HA存储关联的所有HA存储操作均已完成时, NC控制器524向STQ 522传达可以启动L2高速缓存510的高速缓存遍历。
响应于来自NC控制器524的通信,STQ 522将HA注销命令传送到清仓/遍历引擎526,其根据本公开修改以便响应于HA注销信号而启动高速缓存遍历(与高速缓存清仓相比)。备选地,系统管理程序可以经由串行通信(SCOM)接口(未示出),直接与清仓/遍历引擎526通信以便启动HA注销过程。在接收HA注销命令之后,清仓/遍历引擎526遍历L2 高速缓存510的目录以便定位HA高速缓存行(即,清仓/遍历引擎526检查与每个高速缓存行关联的HA位),并且与RC机528通信以便启动HA 日志表项的创建。响应于来自清仓/遍历引擎526的用于创建HA日志表项的通信,RC机528创建HA日志表项并且与CO机530通信,以便启动将创建的HA日志表项转移到缓冲区540。CO机530将HA日志表项的转移请求传送到高速缓存控制器532。
响应于转移请求,高速缓存控制器532利用HA逻辑538将HA日志表项存储在缓冲区540中的适当位置(例如,存储在乒部分(ping portion) 或乓部分(pong portion)中的适当位置)。当例如缓冲区540的乒部分或乓部分已满时,高速缓存控制器532从仲裁器534请求使用总线(未示出)的权限。当仲裁器534授予接入总线的权限时,经由存储总线将缓冲区540的乒或乓部分的内容转移到L3高速缓存550。L3高速缓存550然后可以将缓冲区540的乒或乓部分的内容缓存/注入到消费者高速缓存中,或者将缓冲区540的乒或乓部分的内容转移到主存储器。数据输出(DO) 控制器536向高速缓存控制器532通知何时转移缓冲区540的内容,以便可以重用缓冲区540的乒或乓部分,此时恢复高速缓存遍历直到完全遍历 L2高速缓存510(如创建HA日志表项的所有CO机530向清仓/遍历引擎 526指示的,所述CO机530提供不活动信号,该信号指示所有CO机530 均已创建HA日志表项)。
当到达高速缓存遍历的结尾时,清仓/遍历引擎526将“HA注销结束”信号传输到高速缓存控制器532。响应于接收HA注销结束信号,高速缓存控制器532可以启动填充(假设缓冲区540的乒或乓部分的内容未满) 缓冲区540的内容,或者启动将记录结束指示符插入缓冲区540中,并且启动将缓冲区540的乒或乓部分的内容转发到L3高速缓存550。高速缓存控制器532然后用信号通知L3高速缓存550开始HA注销过程。应该理解,L3高速缓存550的配置类似于L2高速缓存510。即,在接收HA注销信号之后,L3高速缓存550执行的HA注销过程类似于针对L2高速缓存510描述的HA注销过程。
参考图6,示出用于记录HA数据的地址的过程600,每次例如高速缓存(例如,L2高速缓存510)从处理器核心(例如,处理器核心502)接收命令时在方框602启动该过程600。接下来,在决策方框604,L2高速缓存510判定接收的命令是否对应于HA注销信号。当在方框604接收的命令不对应于HA注销信号时,控制转移到方框628,其中过程600结束。当在方框604接收的命令对应于HA注销信号时,控制转移到决策方框 606,其中L2高速缓存510判定当前RC操作(即,HA存储,其在HA 注销命令到达存储队列522的头之前启动)是否完成。响应于在方框606 未完成RC操作,控制在方框606循环。响应于在方框606完成RC操作,控制转移到方框608,其中启动高速缓存遍历。
接下来,在决策方框610,L2高速缓存510通过在L2高速缓存510 的目录中检查关联的HA位(参见图4),判定当前高速缓存行是否是HA 高速缓存行。响应于在方框610高速缓存行不是HA高速缓存行,控制转移到方框620,其中高速缓存遍历前进到下一个高速缓存行并且然后到达方框610。响应于在方框610高速缓存行是HA高速缓存行,控制转移到方框612,其中L2高速缓存510在缓冲区540中记录HA高速缓存行的地址。
然后,在决策方框614,L2高速缓存510判定高速缓存遍历是否完成。响应于在方框614高速缓存遍历完成,控制转移到方框622,其中L2高速缓存510填充缓冲区540的(相关部分的)内容(如果需要)。接下来,在方框624,L2高速缓存510将缓冲区540的内容写入到较低级别高速缓存(例如,L3高速缓存550)。然后,在方框626,L2高速缓存510向 L3高速缓存550提供HA注销信号。在方框626之后,过程600在方框 628结束。响应于在方框614高速缓存遍历未完成,控制转移到决策方框 616。在方框616,L2高速缓存510判定缓冲区540是否已满。响应于在方框616缓冲区540未满,控制转移到方框620,其中高速缓存遍历前进到下一个高速缓存行并且然后到达方框610。响应于在方框616缓冲区540 已满,控制转移到方框618,其中L2高速缓存510将缓冲区540的内容写入到L3高速缓存550,此时控制转移到方框620,其中高速缓存遍历前进到下一个高速缓存行并且然后到达方框610。
因此,在此公开了在高速缓存遍历期间,在检查点处记录高可用性 (HA)数据的地址的技术。
在上面的流程图中,图6中示出的方法可以体现在计算机可读介质中,该计算机可读介质包含计算机可读代码,以便当在计算设备上执行计算机可读代码时,执行一系列步骤。在某些实现中,所述方法的某些步骤可以组合、同时或以不同顺序执行,或者可能被省略,而不偏离本发明的精神或范围。因此,尽管以特定序列描述和示出所述方法步骤,但使用特定步骤序列并非旨在暗示对本发明的任何限制。可以针对步骤序列做出更改而不偏离本发明的精神或范围。因此,不应以限制的意义来理解使用特定序列,并且本发明的范围仅由所附权利要求来限定。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合,但不包括计算机可读信号介质。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器 (CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读信号介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在此将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把计算机程序指令存储在计算机可读存储介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
还应该理解,可以使用软件、固件或硬件的任意组合实现本发明实施例中的过程。作为以软件实现本发明的准备步骤,通常将编程代码(无论软件还是固件)存储在一个或多个机器可读存储介质中,这些介质例如包括固定(硬盘)驱动器、软盘、光盘、磁带、诸如ROM、PROM之类的半导体存储器,从而形成根据本发明的制造品。以下操作使用包含编程代码的制造品:直接从存储设备执行代码,将代码从存储设备复制到诸如硬盘、RAM之类的另一个存储设备中,或者使用诸如数字和模拟通信链路之类的传输类型介质传输代码以便远程执行。可以通过以下操作实现本发明的方法:将包含根据本发明的代码的一个或多个机器可读存储设备与适当的处理硬件组合以便执行包含在其中的代码。用于实现本发明的装置可以是一个或多个处理设备和存储子系统,它们包含或具有对根据本发明编码的程序(多个)的网络访问。
因此,重要的是,尽管在具有已安装(或已执行)软件的完整功能计算机(服务器)系统的上下文中描述本发明的示例性实施例,但所属技术领域的技术人员应该理解,本发明的示例性实施例的软件方面能够作为程序产品被以各种形式来分发,并且本发明的示例性实施例均可等同地适用而与实际用于执行所述分发的特定类型介质无关。
尽管参考示例性实施例描述了本发明,但所属技术领域的技术人员应该理解,在不偏离本发明的范围的情况下,可以做出各种更改并且可以以等同物替换其中的元素。此外,可以对本发明的教导做出许多修改以便适应特定系统、设备或其组件而不偏离本发明的基本范围。因此,并非旨在将本发明限于执行本发明的公开的特定实施例,而是旨在本发明将包括所有落入所附权利要求的范围内的实施例。此外,术语第一、第二等的使用并非表示任何重要性顺序,而是用来区分一个元素与另一个元素。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。

Claims (17)

1.一种操作高可用性HA数据处理系统的方法,包括:
响应于在高速缓存处接收HA注销指示,启动高速缓存遍历以便定位所述高速缓存中包括HA数据的高速缓存行;
响应于确定高速缓存行包括HA数据,在所述高速缓存中的缓冲区的第一部分中记录所述高速缓存行的地址;
响应于所述缓冲区的所述第一部分达到确定的填充水平,将所述缓冲区的所述第一部分的内容转移到另一个存储器;以及
响应于遍历所述高速缓存中的所有高速缓存行,结束所述高速缓存遍历,
其中所述高速缓存经由串行通信接口或者经由存储队列接收所述HA注销指示。
2.根据权利要求1的方法,还包括:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第一部分未达到所述确定的填充水平,填充所述缓冲区的所述第一部分,然后将所述缓冲区的所述第一部分的内容转移到所述另一个存储器。
3.根据权利要求1的方法,还包括:
响应于所述缓冲区的所述第一部分达到所述确定的填充水平,将包括HA数据的所述高速缓存行的后续行的地址记录到所述缓冲区的第二部分中;以及
响应于所述缓冲区的所述第二部分达到所述确定的填充水平,将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
4.根据权利要求3的方法,还包括:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第二部分未达到所述确定的填充水平,填充所述缓冲区的所述第二部分,然后将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
5.根据权利要求1的方法,其中所述高速缓存是级别2(L2)高速缓存,并且所述另一个存储器是级别3(L3)高速缓存。
6.根据权利要求1的方法,其中直到所有未决HA存储操作都完成时才启动所述高速缓存遍历。
7.一种高可用性HA数据处理系统,包括:
生产者核心;以及
生产者高速缓存,其耦合到所述生产者核心,其中所述生产者高速缓存被配置为:
响应于接收HA注销指示,启动高速缓存遍历以便定位所述高速缓存中包括HA数据的高速缓存行;
响应于确定高速缓存行包括HA数据,在所述高速缓存中的缓冲区的第一部分中记录所述高速缓存行的地址;
响应于所述缓冲区的所述第一部分达到确定的填充水平,将所述缓冲区的所述第一部分的内容转移到另一个存储器;以及
响应于遍历所述高速缓存中的所有高速缓存行,结束所述高速缓存遍历,
其中所述高速缓存经由串行通信接口或者经由存储队列接收所述HA注销指示。
8.根据权利要求7的数据处理系统,其中所述生产者高速缓存还被配置为:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第一部分未达到所述确定的填充水平,填充所述缓冲区的所述第一部分,然后将所述缓冲区的所述第一部分的内容转移到所述另一个存储器。
9.根据权利要求7的数据处理系统,其中所述生产者高速缓存还被配置为:
响应于所述缓冲区的所述第一部分达到所述确定的填充水平,将包括HA数据的所述高速缓存行的后续行的地址记录到所述缓冲区的第二部分中;以及
响应于所述缓冲区的所述第二部分达到所述确定的填充水平,将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
10.根据权利要求9的数据处理系统,其中所述生产者高速缓存还被配置为:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第二部分未达到所述确定的填充水平,填充所述缓冲区的所述第二部分,然后将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
11.根据权利要求7的数据处理系统,其中所述高速缓存是级别2(L2)高速缓存,并且所述另一个存储器是级别3(L3)高速缓存。
12.根据权利要求7的数据处理系统,其中直到所有未决HA存储操作都完成时才启动所述高速缓存遍历。
13.一种处理器,包括:
处理器核心;以及
高速缓存,其耦合到所述处理器核心,其中所述高速缓存被配置为:
响应于接收HA注销指示,启动高速缓存遍历以便定位所述高速缓存中包括HA数据的高速缓存行;
响应于确定高速缓存行包括HA数据,在所述高速缓存中的缓冲区的第一部分中记录所述高速缓存行的地址;
响应于所述缓冲区的所述第一部分达到确定的填充水平,将所述缓冲区的所述第一部分的内容转移到另一个存储器;以及
响应于遍历所述高速缓存中的所有高速缓存行,结束所述高速缓存遍历,
其中所述高速缓存经由串行通信接口或者经由存储队列接收所述HA注销指示。
14.根据权利要求13的处理器,其中所述高速缓存还被配置为:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第一部分未达到所述确定的填充水平,填充所述缓冲区的所述第一部分,然后将所述缓冲区的所述第一部分的内容转移到所述另一个存储器。
15.根据权利要求13的处理器,其中所述高速缓存还被配置为:
响应于所述缓冲区的所述第一部分达到所述确定的填充水平,将包括HA数据的所述高速缓存行的后续行的地址记录到所述缓冲区的第二部分中;以及
响应于所述缓冲区的所述第二部分达到所述确定的填充水平,将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
16.根据权利要求15的处理器,其中所述高速缓存还被配置为:
响应于在所述高速缓存遍历结束之前所述缓冲区的所述第二部分未达到所述确定的填充水平,填充所述缓冲区的所述第二部分,然后将所述缓冲区的所述第二部分的内容转移到所述另一个存储器。
17.根据权利要求13的处理器,其中所述高速缓存是级别2(L2)高速缓存,所述另一个存储器是级别3(L3)高速缓存,并且其中直到所有未决HA存储操作都完成时才启动所述高速缓存遍历。
CN201410612425.8A 2013-11-06 2014-11-04 高可用性数据处理系统及其方法 Active CN104636269B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/073,553 US9471491B2 (en) 2013-11-06 2013-11-06 Cache configured to log addresses of high-availability data
US14/073553 2013-11-06

Publications (2)

Publication Number Publication Date
CN104636269A CN104636269A (zh) 2015-05-20
CN104636269B true CN104636269B (zh) 2018-01-12

Family

ID=53007955

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410612425.8A Active CN104636269B (zh) 2013-11-06 2014-11-04 高可用性数据处理系统及其方法

Country Status (2)

Country Link
US (2) US9471491B2 (zh)
CN (1) CN104636269B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162754B2 (en) 2016-03-08 2018-12-25 International Business Machines Corporation Lateral cast out of cache memory
CN109032022B (zh) * 2018-08-08 2021-01-15 江苏拓米洛环境试验设备有限公司 试验箱报警秒接续程序智能无缝衔接运转方法
US11074181B2 (en) * 2019-07-01 2021-07-27 Vmware, Inc. Dirty data tracking in persistent memory systems
US10846222B1 (en) 2019-07-01 2020-11-24 Vmware, Inc. Dirty data tracking in persistent memory systems
KR20210079637A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN115809208B (zh) * 2023-01-19 2023-07-21 北京象帝先计算技术有限公司 缓存数据刷新方法、装置、图形处理系统及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958070A (en) * 1995-11-29 1999-09-28 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
CN104516832A (zh) * 2013-10-08 2015-04-15 国际商业机器公司 操作数据处理系统的方法、数据处理系统以及处理器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200620B2 (en) * 2003-09-29 2007-04-03 International Business Machines Corporation High availability data replication of smart large objects
US8095826B1 (en) 2004-06-29 2012-01-10 Symantec Operating Corporation Method and apparatus for providing in-memory checkpoint services within a distributed transaction
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US8417885B2 (en) 2010-02-24 2013-04-09 Avaya Inc. Method and apparatus for high availability (HA) protection of a running virtual machine (VM)
US8769533B2 (en) 2011-07-18 2014-07-01 International Business Machines Corporation Check-point based high availability: network packet buffering in hardware
US9817733B2 (en) 2011-10-05 2017-11-14 International Business Machines Corporation Resource recovery for checkpoint-based high-availability in a virtualized environment
US9189446B2 (en) * 2013-01-04 2015-11-17 Microsoft Technology Licensing, Llc Immutable sharable zero-copy data and streaming

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958070A (en) * 1995-11-29 1999-09-28 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
CN104516832A (zh) * 2013-10-08 2015-04-15 国际商业机器公司 操作数据处理系统的方法、数据处理系统以及处理器

Also Published As

Publication number Publication date
US9430382B2 (en) 2016-08-30
US20150127909A1 (en) 2015-05-07
US20150127906A1 (en) 2015-05-07
US9471491B2 (en) 2016-10-18
CN104636269A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
CN104636269B (zh) 高可用性数据处理系统及其方法
CN114341792B (zh) 存储集群之间的数据分区切换
CN104636182B (zh) 一种操作数据处理系统的方法、数据处理系统和处理器
CN104750658B (zh) 辅助式一致共享存储器
CN103823786B (zh) 外部高速缓存设备上的管理程序i/o分级
CN103597451B (zh) 用于高可用性的存储器镜像和冗余生成
US8555019B2 (en) Using a migration cache to cache tracks during migration
US9983935B2 (en) Storage checkpointing in a mirrored virtual machine system
CN106528327B (zh) 一种数据处理方法以及备份服务器
TWI793654B (zh) 雲端遊戲系統及操作雲端遊戲系統之方法
JP6898393B2 (ja) ストレージシステム及びデータ転送方法
US10931450B1 (en) Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10983913B2 (en) Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process
KR20180057639A (ko) 선택적 리소스 이동을 이용하는 네트워크 결합 메모리
CN104516832B (zh) 操作数据处理系统的方法、数据处理系统以及处理器
US20150193439A1 (en) Schemaless data access management
CN103493021A (zh) 虚拟机高可用性
CN104239227A (zh) 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法
CN109725842A (zh) 加速随机写入布局以用于混合存储系统内的桶分配的系统和方法
JP2014507028A (ja) コンピュータ・システムにおけるアプリケーション処理の管理のための方法、システム、コンピュータ・プログラム
CN104679662A (zh) 用于管理共享存储器的方法和系统
CN114860380A (zh) 数据同步的方法、装置、电子设备及计算机可读存储介质
CN106155948B (zh) 用于存储系统的方法、聚合配置引擎、聚合配置工具以及文件系统
TWI855519B (zh) 雲端遊戲系統及操作雲端遊戲系統之方法
Cully Extending systems with virtual hardware aggregation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant