KR20140049058A - 트랜잭션 메모리 시스템 내구성 부여 - Google Patents

트랜잭션 메모리 시스템 내구성 부여 Download PDF

Info

Publication number
KR20140049058A
KR20140049058A KR1020147006553A KR20147006553A KR20140049058A KR 20140049058 A KR20140049058 A KR 20140049058A KR 1020147006553 A KR1020147006553 A KR 1020147006553A KR 20147006553 A KR20147006553 A KR 20147006553A KR 20140049058 A KR20140049058 A KR 20140049058A
Authority
KR
South Korea
Prior art keywords
memory
memory system
transactional
data
transactional memory
Prior art date
Application number
KR1020147006553A
Other languages
English (en)
Other versions
KR101574451B1 (ko
Inventor
메울 에이 샤
스타브로스 해리조폴로스
아리프 에이 머천트
모힛 색제나
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
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 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20140049058A publication Critical patent/KR20140049058A/ko
Application granted granted Critical
Publication of KR101574451B1 publication Critical patent/KR101574451B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1474Saving, restoring, recovering or retrying in transactions
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/466Transaction processing
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

트랜잭션 메모리 시스템은 트랜잭션을 위하여 1차 저장소로서 휘발성 메모리를 사용한다. 휘발성 메모리에 대한 데이터 손실의 경우에 트랜잭션 메모리 시스템이 일관성 상태로 복구되도록 트랜잭션 메모리 시스템에 내구성을 부여하는 것이 가능하도록 하기 위해 데이터는 비휘발성 메모리 내에 선택적으로 저장된다.

Description

트랜잭션 메모리 시스템 내구성 부여{IMPARTING DURABILITY TO A TRANSACTIONAL MEMORY SYSTEM}
본 발명은 트랜잭션 메모리 시스템(transactional memory system)에 내구성(durability)을 부여하는 것에 관한 것이다.
트랜잭션 메모리 시스템은 애플리케이션 프로그래머들이 자신들의 프로그램들을 많은 프로세서들 또는 프로세싱 코어들에 걸쳐 안전하게 그리고 용이하게 스케일링(scale)하는 것을 가능하게 한다. 전형적인 트랜잭션 메모리 시스템에서, 복수의 애플리케이션 스레드(thread)들이 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)와 같은 휘발성 메모리를 공유하는데, 스레드들 사이는 휘발성 메모리에 액세스하기 위해 격리되어 있다. 트랜잭션 메모리 시스템은 전형적으로 자기 스토리지, 회전 디스크, 테이프 드라이브 등과 같이, 상대적으로 느린 액세스 시간들을 가지는 대용량 저장소를 사용하는 종래의 트랜잭션 데이터베이스 시스템보다 더 빠르다.
도 1은 예시 구현에 따른 물리적 머신의 계층도이다.
도 2는 예시 구현에 따른 트랜잭션 메모리 시스템에 내구성을 부여하는 기술을 도시하는 흐름도이다.
도 3은 예시 구현에 따른 트랜잭션 메모리 시스템에 내구성을 부여하는 아키텍처를 도시하는 도면이다.
도 4는 예시 구현에 따른 트랜잭션 레코드들을 로그(log)하는 기술을 도시하는 흐름도이다.
도 5는 예시 구현에 따른 체크포인트를 생성하는 기술을 도시하는 흐름도이다.
휘발성 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))를 자신의 주 저장소로 이용하는 트랜잭션 메모리 시스템에 내구성을 부여하기 위한 시스템들 및 기술들이 본원에 개시된다. 본 컨텍스트에서, “트랜잭션 메모리 시스템”은 다수의 프로세싱 엔티티(entity)들(예를 들어 스레드들)이 메모리에 액세스하기 위하여 스레드들 사이를 격리하면서도 메모리를 공유할 수 있는 시스템이다. 트랜잭션 메모리 시스템은 소정의 프로세싱 엔티티가 다른 프로세싱 엔티티들에게 논리적으로 단일 시점에서 발생하는 것으로 보이는 트랜잭션을 수행하면서도 실제로 이 트랜잭션이 상기 소정의 프로세싱 엔티티에 의해 기록 동작들, 판독 동작들 및 산재된 계산들의 시퀀스를 수반할 수 있는 것을 가능하게 한다.
비 제한적인 예로서, 소정의 프로세싱 엔티티는, 메모리 내의 데이터 구조를 수정하기 위한 목적의 트랜잭션을 수행할 수 있는데, 이는 데이터 구조의 파라미터들을 판독하는 동작, 상기 구조의 파라미터를 수정하는 동작, 결과적인 수정된 파라미터를 다시 메모리로 기록하는 동작을 수반한다. 비록 상술한 바와 같이 트랜잭션이 다수의 메모리 동작들을 수반할 수 있고 이 메모리 동작들의 일부가 메모리와 병행하여 발생할 수 있을지라도, 메모리에 있어서 한 시점에서 단일 트랜잭션이 발생하도록 트랜잭션 메모리 시스템이 트랜잭션들을 조정(regulate)한다. 소정의 프로세싱 엔티티에 대한 소정의 트랜잭션의 결과들은 트랜잭션 메모리 시스템이 이 트랜잭션을 메모리에 커밋(commit)한 후에 다른 프로세싱 엔티티들에게 보일 수 있게 된다.
트랜잭션 메모리 시스템은 특정한 구현에 따라 소프트웨어 기반(예를 들어 운영 시스템과 함께 동작하는 소프트웨어, 운영 시스템의 일부인 소프트웨어, 운영 시스템과 전적으로 별개인 소프트웨어를 사용하여 구현되는)이거나 또는 하드웨어 기반(예를 들어 비제한적인 예로써 마이크로프로세서 내부의 하드웨어를 사용하여 구현되는)일 수 있다.
트랜잭션 메모리 시스템의 특정한 형태와는 관계 없이, 트랜잭션 메모리 시스템은 트랜잭션들에 대한 원자성(atomicity), 일관성(consistency) 및 격리성의 속성들을 주입한다. 도 1을 참조하면, 본원에 개시되는 예시 구현들에 따르면, 내구성 트랜잭션 메모리 시스템(39)은 이 3개의 속성들 및 트랜잭션 내구성 엔진(50)을 가지는 트랜잭션 메모리 시스템(40)(소프트웨어 또는 하드웨어 트랜잭션 메모리 시스템일 수 있다)을 포함하고, 트랜잭션 메모리 시스템(39)이 휘발성 메모리(36)를 트랜잭션들을 위한 1차 저장소로서 사용할지라도, 이 트랜잭션 내구성 엔진(50)은 트랜잭션들에 대한 추가의 내구성의 속성을 부여한다. 더 후술되는 바와 같이, 휘발성 메모리(36)가 잠재적으로 휘발성 메모리(36)의 컨텐츠를 삭제하거나 원치 않게 변경할 수 있는 사건을 당할 수 있을지라도, 트랜잭션 내구성 엔진(50)은 그와 같은 사건이 발생하는 경우 트랜잭션 메모리 시스템(40)의 일관성 상태(consistent state)가 복구될 수 있는 것을 보장하기 위해 데이터를 비휘발성 메모리(37) 내에 선택적으로 저장할 수 있다.
도 1에 도시되는 바와 같이, 일부 예시 구현들에 따르면, 내구성 트랜잭션 메모리 시스템(39), 휘발성 메모리(36) 및 비휘발성 메모리(37)가 물리적 머신(10)의 일부일 수 있다. 본 컨텍스트에서, “물리적 머신”은 이 머신이 실행 가능한 프로그램 명령들 및 하드웨어로 구성되는 실제 머신임을 나타낸다. 물리적 머신들의 예들은 컴퓨터들(예를 들어, 애플리케이션 서버들, 스토리지 서버들, 웹 서버들 등), 통신 모듈들(예를 들어, 스위치들, 라우터들 등) 및 다른 유형들의 머신들을 포함한다. 물리적 머신(10)은 하나의 캐비닛(또는 랙(rack)) 내에 위치될 수 있고; 또는 대안으로, 물리적 머신(10)은 다수의 캐비닛들(또는 랙들)에 위치될 수 있다.
물리적 머신(10)은 애플리케이션 서버, 스토리지 서버 팜(farm)(또는 스토리지 에어리어 네트워크), 웹 서버 팜, 스위치 또는 라우터 팜, 또는 다른 유형의 데이터 센터 등으로 구현될 수 있다. 또한, 물리적 머신(10)이 도 1에서 박스 내에 포함되는 것으로 도시될지라도, 물리적 머신(10)은 분산형의 병렬 프로세싱 시스템을 제공하는 다수의 노드들을 가지는 분산형 머신일 수 있음을 유의한다.
본원에서 기술되는 특정한 예에 따르면, 물리적 머신(10)은 하나 또는 다수의 프로세서들(34)과 같은 머신(10)의 하드웨어에 의해 수행되는 머신 실행 가능 명령들을 포함한다. 일반적으로, 프로세서(34)는 하나 또는 다수의 중앙 처리 장치(CPU)들일 수 있고/있거나 하나 이상의 CPU들의 하나 또는 다수의 프로세싱 코어들(34)일 수 있다.
머신 실행 가능 명령들(machine executable instructions)에 대한 비제한적인 예로서, 물리적 머신(10)은 운영 시스템(28)을 형성하는 명령들의 세트들뿐만 아니라 실행될 때 각각의 애플리케이션들(26) 및 드라이버들(30)을 형성하는 머신 실행 가능 명령들의 세트들을 포함할 수 있다. 다른 예시 구현들에 따르면, 물리적 머신(10)은 운영 시스템(28)을 포함하지 않을 수 있고/있거나 드라이버들(30)을 포함하지 않을 수 있다. 예시 구현에 따르면, 머신 실행 가능 명령들의 세트는 실행될 때 트랜잭션 메모리 시스템(40)을 형성할 수 있고 머신 실행 가능 명령들의 세트는 실행될 때 내구성 엔진(50) 및 트랜잭션 메모리 시스템(40)을 포함하는 내구성 트랜잭션 메모리 시스템(39)을 형성할 수 있으나, 이 구성요소들 중 어떠한 구성요소도 다른 예시 구현들에 따른 하드웨어 내에서 구현될 수 있다.
이의 다른 특징들 중에서, 물리적 머신(10)은 일부 예시 구현들에 따르면, 드라이버들(30) 중 하나 이상을 통해 동작되고 전체적으로 비휘발성 메모리(37)를 형성하는 고체 상태 드라이브(solid state drive; SSD)(31)들뿐만 아니라 적어도 하나의 캐시(35)와 같은, 추가 하드웨어를 포함할 수 있다. 비제한적인 예로서, 소정의 SSD(31)는 다른 예시 구현들에 따르면, 비록 SSD(31)가 상변화 메모리(phase change memory; PCM) 또는 멤리스터 메모리(memristor memory)와 같은 비휘발성 저장 매체들 내에 데이터를 저장할 수 있을지라도, NAND 플래시 메모리를 포함할 수 있다.
도 1과 함께 도 2를 참조하면, 요약하면, 트랜잭션 내구성 엔진(50)은 실행될 때 물리적 머신(10)으로 하여금 내구성 트랜잭션 메모리 시스템(39)에 내구성을 부여하기 위한 기술(150)을 수행하게 한다. 기술(150)에 의하면, 물리적 머신(10)은 휘발성 메모리(36)를 자신의 1차 저장소로 사용하는(블록 154) 트랜잭션 메모리 시스템을 포함하고; 휘발성 메모리(36)에 대한 데이터 손실의 경우 트랜잭션 메모리 시스템(40)이 일관성 상태로 복구되도록 내구성 트랜잭션 메모리 시스템(39)에 내구성을 부여하기 위해서 비휘발성 메모리(37) 내에 데이터를 선택적으로 저장한다(블록 158).
더 상세한 예로서, 도 3은 하나의 예시 구현에 따라 트랜잭션 내구성 엔진(50)에 의해 사용되는 아키텍처를 도시한다. 도 3과 함께 도 1을 참조하면, 이 예의 경우에, 내구성 트랜잭션 메모리 시스템(39)은 휘발성 메모리 저장소(199)(예를 들어, 휘발성 메모리(36)에 의해 만들어지는 저장소) 내의 메모리 힙(heap)(200)을 자신의 1차 저장소로 사용한다. 즉, 메모리 힙(200)은 트랜잭션 메모리 시스템(40)의 현재 상태 및 애플리케이션 상태의 완전한 레코드를 포함하고 더 후술되는 바와 같이, 트랜잭션 내구성 엔진(50)에 의해 청크(chunk)들(204)로 분할된다.
또한 도 1 및 도 3에 도시되는 바와 같이, 트랜잭션 내구성 엔진(50)은 자체의 데이터를 비휘발성 메모리 저장소(220)(예를 들어, 비휘발성 메모리(37) 내의 저장소)에 저장한다. 더 구체적으로, 트랜잭션 내구성 엔진(50)은 휘발성 메모리 저장소(199)가 데이터 손실을 겪는 경우에 내구성 트랜잭션 메모리 시스템(39)이 일관성 상태로 복구될 수 있는 것을 보장하기 위해 파티셔닝(partitioning)된 로깅(logging)(즉, 로그 파티션들(260)에 저장되는 레코드들) 및 체크포인트들(280)의 사용을 통해 비휘발성 메모리 저장소(220) 내에 데이터를 저장한다. 로그 파티션(260)은 일반적으로 특정한 프로세싱 엔티티와 연관되고 대응하는 트랜잭션들을 식별하는 레코드들이 기록되는 비휘발성 메모리 저장소(220)에서의 데이터 구조이다. 체크포인트(280)는 일반적으로 어떤 포인트 또는 포인트들의 범위에서 휘발성 메모리 힙(200)의 상태의 완전한 레코드로서, 체크포인트(280)는 로그 파티션들(260)에 저장되는 레코드들에 의해 제공되는 로깅(logging)된 트랜잭션 정보와 함께 내구성 트랜잭션 메모리 시스템(39)의 일관성 상태를 복구하는 데 사용될 수 있다.
내구성 트랜잭션 메모리 시스템(39) 및 트랜잭션 내구성 엔진(50) 이 둘 모두는 예시 구현들에 따르면, 논리 시퀀스 번호(logical sequence number; LSN)들의 사용에 의존한다. LSN은 연관되는 트랜잭션의 순서를 정의하고 트랜잭션들의 일부 순서와 일관성을 갖는다. 총칭하여, LSN들은 트랜잭션들이 커밋된 순서를 정의한다. 비제한적인 예로서, LSN들은 순차적인 정수들일 수 있다. 그러나, 다른 예시 구현들에 따르면, LSN들은 많은 잠재적인 구현들에 따라 순서화된 값들의 임의의 세트일 수 있다.
일반적으로, 프로세싱 엔티티들(예를 들어 트랜잭션 스레드들(202))은 트랜잭션들을 생성하고(소정의 트랜잭션은 기록 동작들, 판독 동작들 및 산재된 계산들의 시퀀스이다) 트랜잭션 메모리 시스템(40)은 각각의 트랜잭션에 LSN을 할당한다. 트랜잭션 내구성 엔진(50)은 LSN들을 재할당하지 않고 오히려 LSN이 얼마나 사용되고 있는지에 따라, LSN들을 상이한 방식들로 지정한다. 예를 들어, 더 후술되는 바와 같이, 트랜잭션 내구성 엔진(50)은 더 후술되는 바와 같이, 이들 LSN들 중 일부를 각각 로그 및 파티셔닝된 로그들의 상태를 나타내는 “로거(logger) LSN들(255)”로서 지정한다. 로거 LSN은 비휘발성 메모리(37) 내의 로그 파티션(260)에 기록되어 왔던 로그 큐(log queue)(252)로부터의 가장 최근의 트랜잭션의 LSN이다. 트랜잭션 내구성 엔진(50)은 또한 “커밋된 LSN”을 사용하고, 이 커밋된 LSN은 모든 로거 LSN(255)의 최소이고 비휘발성 메모리 저장소(220)에 모든 이전의 트랜잭션 레코드들(254)이 기록되었던 트랜잭션의 LSN이다.
트랜잭션 내구성 엔진(50)은 또한 다른 LSN들을 사용한다. 이 방식에서, “청크 LSN"(205)은 연관되는 청크(204)를 체크포인트한 마지막 트랜잭션의 LSN을 칭한다. “시작 LSN”(290)은 유효한 체크포인트(280) 내의 모든 이전의 트랜잭션들이 체크포인트(280)에 반영되는 것을 나타낸다. “종료 LSN”(294)은 후속 트랜잭션들이 체크포인트(280)에 명백하게 반영되지 않는 것을 나타낸다.
이제 더 상세한 설명들로 들어가서, 일부 구현들에 따르면, 트랜잭션 내구성 엔진(50)은 물리적 머신(10)으로 하여금 트랜잭션들을 생성하는 각각의 프로세싱 엔티티에 대해 대응하는 로거 스레드(250)를 만들도록 하는 로거(54)(도 1을 참조)를 포함한다. 다음의 비제한적인 예의 경우에, 로거 스레드는 각각의 트랜잭션 스레드(202)에 대해 생성된다고 가정되고 트랜잭션 스레드들(202)은 하나 또는 다수의 애플리케이션들(26)의 실행(들)과 연관될 수 있다. 소정의 트랜잭션 스레드(202)가 자체의 힙(200) 갱신들을 완료한 후에, 트랜잭션 스레드(202)는 자신이 휘발성 메모리 저장소(199)에 저장된 연관되는 로그 큐(queue)(252)에 행했던 갱신들의 대응하는 트랜잭션 레코드(254)를 인큐(enqueue)한다. 일반적으로, 각각의 로그 큐(252)는 소정의 트랜잭션 스레드(202) 및 로그 파티션(260)과 연관되고(본 예의 경우); 각각의 로그 큐(252)는 힙(200)에 커밋되었던 연관되는 트랜잭션들을 반영하는 트랜잭션 레코드들(254)을 저장한다.
주기적으로, 로거 스레드(250)는 커밋된 LSN 값을 트랜잭션 스레드들(202)에 보고하는데, 이는 커밋된 LSN 값보다 작거나 같은 LSN 값들을 가지는 모든 트랜잭션들이 비휘발성 메모리 영역(220)에 저장되었음을 의미한다. 커밋된 LSN 계산이 행해지는 레이트(rate)는 시간 임계 및 트랜잭션 로그 기록들의 세트의 완료의 결합과 같은 다수의 다양한 요인들에 기초할 수 있다. 더욱이, 트랜잭션 스레드(202)는 대응하는 트랜잭션들이 커밋되었음을 호출 애플리케이션들(26)에게 고지한다. 애플리케이션들(26)은 내구성 트랜잭션 메모리 시스템(39)이 동기 또는 비동기 동작 모드에 있는지에 따라 이 확인을 대기할 수도 하지 않을 수도 있음에 주목한다.
더 구체적으로, 내구성 트랜잭션 메모리 시스템(39)이 동기 동작 모드에 있으면, 시스템(39)은 트랜잭션이 휘발성(36) 및 비휘발성(37) 메모리들에 저장된 후에 소정의 트랜잭션이 커밋되었음을 호출 애플리케이션 또는 스레드에 확인한다. 내구성 트랜잭션 메모리 시스템(39)이 비동기 동작 모드에 있으면, 시스템(39)은 트랜잭션이 휘발성 메모리(36)에 저장되었으나 비휘발성 메모리(37)에 저장되지 않은 후에 소정의 트랜잭션이 커밋되었음을 호출 애플리케이션(26) 또는 스레드에 확인한다. 그러므로, 정전과 같이(비제한적인 예로서) 휘발성 메모리(36)의 온전함을 손상시키는 경우를 제외하고, 진정한 동기 시스템에 의해 체험될 수 있을 지연을 초래하지 않고도 일관성이 보존된다. 게다가, 일부 구현들에 따르면, 내구성 트랜잭션 메모리 시스템(39)은 소정의 비동기 트랜잭션의 내구성을 판단하기 위해 애플리케이션(26) 또는 스레드에 대한 인터페이스를 제공한다(즉, 애플리케이션(26)/스레드는 소정의 비동기 트랜잭션이 비휘발성 메모리(37)에 저장되었는지를 판단하기 위해 인터페이스를 사용할 수 있다).
일부 예시 구현들에서, 로거 스레드(250)는, 큐잉된 레코드들의 크기가 크기 임계를 초과하는지 또는 상기 기록들이 로그 파티션(260)에 마지막으로 갱신된 후에 어떤 시간 간격이 경과했는지와 같은 그러한 요인들에 따라, 선입선출(first-in first-out; FIFO) 순서로 대응하는 로그 파티션(260)에 로그 큐(252)로부터의 트랜잭션 레코드들(254)의 세트를 주기적으로 기록한다. 일부 예시 구현들에 따르면, 비휘발성 메모리 저장소(220)은 다수의 로거 스레드들(250)로부터의 그와 같은 기록 요청들 다수를 인큐하고 하나 이상의 로그 파티션(260)을 동시에 또는 병행하여 갱신하기 위하여 이것들을 기록한다. 새로운 레코드들이 비휘발성 메모리 저장소(220) 내에 저장될 때, 비휘발성 메모리(37)는 적절한 로거 스레드(들)(250)를 고지하고; 로거 스레드(들)(250)은 그 후에 각각의 로그 큐(252)에 대한 내구성 LSN들을 반영하기 위해 대응하는 로거 LSN(들)(255)을 갱신한다.
그러므로, 도 3과 함께 도 4를 참조하면, 일부 예시 구현들에 따르면, 로거 스레드(250)는 기술(300)을 수행한다. 기술(300)에 의하면, 트랜잭션 기록들은 블록 304에 의해, 로그 큐(252) 내로 수신된다. 로거 스레드(250)는 로그 큐(252)로부터의 레코드들을 비휘발성 메모리 저장소(220) 내의 로그 파티션(260)에 기록할 시간인지를 판단한다(다이아몬드 308). 만일 기록할 시간이라면, 로거 스레드(250)는 블록 312에 의해 레코드들을 로그 파티션(260)에 기록하고 기록 동작들의 완료 시에 블록 314에 의해 로거 LSN을 갱신한다.
그리고 나서 제어는 다이아몬드 318로 진행되고, 여기서 로거 스레드(250)는 커밋된 LSN을 보고할 시간인지를 판단한다(다이아몬드 318). 만일 보고할 시간이라면, 로거 스레드(250)는 블록 322에 의해, 커밋된 LSN을 대응하는 트랜잭션 스레드(들)(202)로 통신한다. 그리고 나서 제어는 블록 304로 복귀된다.
비제한적인 예로서, 로거 스레드(250)는 비휘발성 메모리 저장소(220)에서 로그 기록이 완료될 때마다 또는 로거 스레드(250)가 마지막 보고된 커밋된 LSN보다 더 큰 LSN를 가지는 대응하는 계류 중인 로그 기록들 및 이전의 체크가 세팅된 시간 임계를 초과한 이후의 시간을 가지는 경우 커밋된 LSN을 판단할 수 있다. 대안으로, 다른 예시 구현들에 따르면, 트랜잭션 메모리 관리자(50)는 커밋된 LSN을 주기적으로 판단하기 위해 물리적 머신(10)으로 하여금 로거 스레드들(250)과 별개인 스레드를 생성하도록 한다. 어떤 경우이든 새로 커밋되는 LSN의 통신은 메시지를 통하거나(비제한적인 예들로서) 또는 트랜잭션 스레드들(202)이 폴링(polling)을 통해 액세스할 수 있는 공통 장소에 커밋된 LSN을 포스팅(posting)함으로써 이를 트랜잭션 스레드들(202) 모두에 보고할 수 있다.
도 3과 함께 도 1을 참조하면, 체크포인트(280)를 생성하기 위해, 트랜잭션 내구성 엔진(50)은 실행될 때 물리적 머신(10)으로 하여금 대응하는 체크포인터 스레드(270)를 생성하도록 하는 체크포인터(checkpointer)(52)를 포함한다. 상술한 바와 같이, 체크포인트(280)는 어떤 포인트 또는 포인트들의 범위에서 메모리 힙(200)의 상태의 완전한 레코드로서, 체크포인트(280)는 로그 파티션들(260)에 로깅되는 레코드들과 함께 내구성 트랜잭션 메모리 시스템(39)의 가장 최근의 일관성 상태를 복구하는 데 사용될 수 있다.
일부 예시 구현들에 따르면 체크포인트(280)는 소정의 단일 시간에서 메모리 힙(200)의 스냅샷일 수 없음에 유의한다. 대신, 일부 예시 구현들에 따르면, 체크포인트(280)는 시간 범위에 걸쳐 청크들(204)을 반영한다. 일반적으로, 체크포인트(280)는 비휘발성 메모리 저장소(220)에 저장되고 연관되는 시작 LSN(290), 연관되는 종료 LSN(294)을 가지고, 또한 연관되는 유효 플래그(flag)(296)를 포함할 수 있다.
체크포인트(280)는 시작 LSN(290)보다 작거나 동일한 LSN을 가지는 트랜잭션들 모두를 반영하고; 체크포인트(280)는 종료 LSN(294)보다 더 큰 LSN을 가지는 트랜잭션들을 반영하지 않는다. 체크포인트(280)가 시작 LSN(290) 및 종료 LSN(294) 사이의 LSN들을 가지는 트랜잭션들 모두를 반영하지 않을 수 있음에 유의한다.
일반적으로, 소정의 체크포인트(280)는, 종료 LSN(294)보다 더 작거나 동일한 모든 레코드들(254)이 로그 파티션들(260)에 기록되고 시작 LSN(290)보다 더 큰 모든 레코드들(254)이 로그 파티션들(260)에 남는 경우 유효하다. 시작 LSN(290)보다 작거나 같은 모든 레코드들(254)은 폐기될 수 있다. 일반적으로, 비휘발성 메모리 저장소(220) 내에 저장되는 다수의 체크포인트들(280)이 존재할 수 있고, 거기에는 항상 적어도 하나의 유효 체크포인트(280)가 존재한다.
체크포인트(280)는 일부 예시 구현들에 따라, 다음과 같이 생성될 수 있다. 메모리 힙(200)의 적어도 하나의 카피는 트랜잭션들이 가동될 수 있기 전에 존재한다. 예를 들어, 체크포인트 초기화 프로세스는 단지 메모리 힙(200)을 비휘발성 메모리 저장소(220)에 카피할 수 있다. 어떠한 트랜잭션들도 실행되지 않았기 때문에, 시작(290) 및 종료(294) LSN들은 각각 초기 값을 가진다(예를 들어 각각 영 및 무한대). 이 이후에, 트랜잭션들이 시작할 수 있고, 체크포인터 스레드(270)는 다음과 같이 새로운 체크포인트(280)를 생성한다. 새로운 체크포인트 생성 프로세스의 시작 시에, 체크포인터 스레드(270)는 비휘발성 메모리 저장소(220) 내에 비어 있는 체크포인트 스터브(stub)를 생성하고, 여기서 시작 LSN(290)은 자체의 초기 값(예를 들어 영(0))을 가지고, 종료 LSN(294)은 초기 값(비제한적인 예들로서, 최대 수 또는 무한대를 나타내는 수)을 가지고, 유효 플래그(296)는 거짓(false)이다.
새로운 체크포인트(280)의 생성 시에, 메모리 힙(200)의 청크(204)는 트랜잭션을 사용하는 임시 버퍼에 카피되고 상기 트랜잭션의 LSN은 상기 청크(204)에 대한 청크 LSN(205)로서 세팅된다. 임시 버퍼의 컨텐츠는 그 후에 새로운 체크포인트(280) 내에 청크(204)의 카피를 생성하기 위해 비휘발성 메모리(37)에 카피된다. 제 1 청크(204)는 시작 LSN(290)을 세팅하고 마지막 청크(204)는 종료 LSN(294)을 세팅한다. 청크들(204)이 카피되고 비휘발성 메모리 저장소(220)에 기록됨에 따라, 종료 LSN(294)은 최신의 청크 LSN(204)로 갱신된다.
카핑 프로세스의 종료 시에, 체크포인터 스레드(270)는 모든 로거 LSN(255) 값들이 결정된 종료 LSN(294)과 같거나 더 큰지를 검증함으로써 체크포인트(280)가 유효한지를 판단하는데, 이는 체크포인트(280) 내에서 반영되는 모든 갱신들이 로그에 저장되었음을 나타낸다. 만일 그렇지 않으면, 체크포인터 스레드(270)는 이 조건이 더 이상 유효하지 않을 때까지 일시 정지된다(이는 로거 스레드들(250)이 차단되지 않은 경우 결국 참이 된다). 대안으로, 체크포인터 스레드(270)는 이 조건들이 유효한 것을 보장하기 위해 로거 스레드들(250)이 로그 파티션들(260)에 대한 충분한 로그 큐들을 기록하게끔 할 수 있다. 후속해서, 체크포인터 스레드(270)는 유효 플래그(296)를 참 상태로 세팅한다.
예시 구현들에 따르면, 체크포인터 스레드(270)는 하나 또는 다수의 구 체크포인트들(280)을 제거할 수 있거나 더 오래된 체크포인트(들)(280)에 의해 점유된 메모리 공간을 재사용할 수 있다. 유효 체크포인트들의 시작 LSN보다 더 오래된 로그 레코드들은 또한 폐기될 수 있는데, 왜냐하면 이 레코드들은 일부 예시 구현들에 따라 새로 생성되는 체크포인트(280)에서 반영되기 때문이다. 가장 새로운 체크포인트(280)가 유효한 것으로 검증된 후에 더 오래된 체크포인트(들)(280)이 제거되므로, 비휘발성 메모리 저장소(220) 내에는 항상 적어도 하나의 유효 체크포인트(280)가 저장되어 있다.
요약하면, 도 3과 함께 도 5를 참조하면, 예시 구현에 따르면, 체크포인터 스레드(270)는 기술(350)을 수행할 수 있다. 기술(350)에 의해, 체크포인터 스레드(270)는, 블록 358에 따라 메모리 힙(200) 내의 청크들(204)을 새로운 체크포인트(280)로 카피(블록 358)하기 전에 새로운 체크포인트(280)를 위해 비 휘발성 메모리 저장소(220) 및 휘발성 메모리 저장소(199) 내의 LSN 시작, LSN 종료 및 유효 플래그들을 초기화한다(블록 354). 후속해서, 체크포인터 스레드(270)는 블록 362에 의해, 메모리 내의 제 1 청크에 대한 종료 LSN(294) 및 시작 LSN(290)을 갱신한다.
더 많은 카핑이 필요하다고 판단하는(다이아몬드 366) 체크포인터 스레드(270)에 응답하여, 청크(204)는 블록 358에 의해 카피되는 것이 계속된다. 게다가, 더 많은 카핑이 발생해야 한다면, 블록 362에 의해 제 1 청크 이후의 후속 청크들에 대하여 종료 LSN(및 시작 LSN이 아닌)이 갱신된다. 도 5는 실제로 카핑이 루프 내에서 소정의 회수로 반복하여 발생할 수 있고, 병렬 카핑을 수반할 수 있고, 기타 등등일 때의 새로운 체크포인트(280)에 대한 데이터의 카핑을 단지 개략적으로 도시한다. 카핑이 완료된 후에, 체크포인터 스레드(270)는 체크포인트가 유효한지를 판단한다(다이아몬드 370). 만일 유효하다면, 체크포인터 스레드(270)는 블록 374에 의해 비휘발성 메모리 저장소(220)에 유효 플래그를 참으로 세팅하고 비휘발성 메모리 저장소(220) 내의 시작 및 종료 LSN들을 갱신한다.
도 1 및 도 3을 다시 참조하면, 일부 예시 구현들에 따르면, 트랜잭션 내구성 엔진(50)은 고장(failure)(예를 들어 정전에 의한 데이터 손실)이 발생하는 경우 저장된 트랜잭션 메모리 데이터를 복구하기 위해 다른 구성요소, 복구 빌더(recovery builder)(58)를 포함한다. 이 복구에서, 복구 빌더(58)는 물리적 머신(10)에 의해 실행될 때, 내구성 트랜잭션 메모리 시스템(39)에 대해 일관성 상태를 복구한다. 일반적으로, 복구 빌더(58)는 가장 새로운 유효 체크포인트(280)를 사용하고 LSN 순서로 로깅된 레코드들을 적용한다. 이 방식에서, 소정의 레코드의 LSN이 청크 LSN보다 더 작으면, 로그 레코드는 상기 청크(204)에 대해 무시될 수 있다. 리빌딩 후에, 메모리 힙(200)은 모든 커밋된 트랜잭션들을 반영한다. 체크포인트들(280)에 대한 유효 플래그가 저장되지 않았다면, 복구 빌더(58)는 각각의 로거에 대한 로거 LSN(255)가 체크포인트(280)의 종료 LSN보다 작지 않은지를 판단함으로써 체크포인트들(280)의 유효성을 판단한다. 로거 LSN들은 로그 파티션(260)의 마지막 LSN으로서 확인될 수 있는데, 각각의 로거 스레드(250)가 트랜잭션 레코드들의 LSN들의 순서로 이 트랜잭션 레코드들을 기록하기 때문이다.
본원에서 제한된 수의 예들이 기술되었으나, 본 발명의 이점을 가지는 당업자는 이로부터 다수의 수정들 및 변형들을 인정할 것이다. 첨부된 청구항들이 모든 그러한 수정들 및 변형들을 커버하는 것이 의도된다.

Claims (15)

  1. 트랜잭션 메모리 시스템(transactional memory system)이 상기 트랜잭션 메모리 시스템과 연관되는 트랜잭션들을 위해 휘발성 메모리를 1차 저장소로 사용하는 단계와,
    상기 휘발성 메모리에 대한 데이터 손실의 경우에 상기 트랜잭션 메모리 시스템이 일관성 상태(consistent state)로 복구되도록 상기 트랜잭션 메모리 시스템에 내구성을 부여하기 위해 비휘발성 메모리에 데이터를 선택적으로 저장하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 저장된 데이터를 상기 트랜잭션 메모리 시스템에 의해 상기 데이터를 생성했던 트랜잭션들에 할당되는 순서화 식별자들과 연관시키는 단계를 더 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 선택적으로 저장하는 단계는 상기 비휘발성 메모리에 상기 트랜잭션 메모리 시스템에 의해 프로세싱되는 트랜잭션들의 기록들을 파티션(partition)들로 로깅(logging)하는 단계를 포함하고, 상기 파티션들의 각각은 엔티티를 생성하는 상이한 트랜잭션과 연관되는
    방법.
  4. 제 1 항에 있어서,
    상기 선택적으로 저장하는 단계는 상기 트랜잭션 메모리 시스템에 의해 사용되는 상기 휘발성 메모리에서 힙(heap)의 전체 기록을 나타내는 체크포인트를 상기 비휘발성 메모리에 저장하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 선택적으로 저장하는 단계는,
    체크포인트를 생성하기 위해 상기 휘발성 메모리 내에 저장되는 데이터를 제 1 비휘발성 메모리 영역 내로 카피하는 단계와 상기 체크포인트의 생성 이후에 발생하는 트랜잭션들을 반영하는 레코드들을 제 2 비휘발성 메모리 영역에 로깅하는 단계를 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 선택적으로 저장하는 단계는 NAND 플래시 메모리, 상변화 메모리, 멤리스터 메모리 중 적어도 하나에 상기 데이터를 선택적으로 저장하는 단계를 포함하는
    방법.
  7. 제 1 항에 있어서,
    상기 휘발성 메모리에서의 데이터 손실에 응답하여, 트랜잭션 메모리 데이터를 재구성하는 단계를 더 포함하는
    방법.
  8. 적어도 하나의 머신 판독 가능 저장 매체를 포함하는 물품으로서, 상기 머신 판독 가능 저장 매체는 실행 시에 적어도 하나의 프로세서를 가지는 시스템으로 하여금,
    트랜잭션 메모리 시스템과 연관되는 트랜잭션들을 위해 휘발성 메모리를 1차 저장소로 이용하게 하고,
    상기 휘발성 메모리에 대한 데이터 손실의 경우에 상기 트랜잭션 메모리 시스템이 일관성 상태로 복구되도록 상기 트랜잭션 메모리 시스템에 내구성을 부여하기 위해 비휘발성 메모리에 데이터를 선택적으로 저장하게 하는 명령들을 저장하는
    물품.
  9. 장치로서,
    휘발성 메모리―상기 휘발성 메모리는 상기 휘발성 메모리와의 트랜잭션들을 생성하는 복수의 스레드(thread)들에 의해 생성되는 트랜잭션 메모리 데이터를 저장함―와,
    비휘발성 메모리와,
    트랜잭션 메모리 시스템을 포함하고, 상기 트랜잭션 메모리 시스템은,
    상기 트랜잭션들을 위해 상기 휘발성 메모리를 1차 저장소로 사용하고, 상기 휘발성 메모리에 대한 데이터 손실의 경우에 상기 트랜잭션 메모리 시스템이 일관성 상태로 복구되도록 상기 트랜잭션 메모리 시스템에 내구성을 부여하기 위해 상기 비휘발성 메모리에 데이터를 선택적으로 저장하도록 구성되는
    장치.
  10. 제 9 항에 있어서,
    상기 트랜잭션 메모리 시스템은 상기 저장된 데이터를 상기 트랜잭션 메모리 시스템에 의해 상기 데이터를 생성했던 트랜잭션들에 할당되는 순서화 식별자들과 연관시키도록 더 구성되는
    장치.
  11. 제 9 항에 있어서,
    상기 트랜잭션 메모리 시스템은 상기 비휘발성 메모리에 상기 트랜잭션 메모리 시스템에 의해 프로세싱되는 트랜잭션들의 기록들을 파티션들로 로깅하도록 더 구성되고, 상기 파티션들의 각각은 엔티티를 생성하는 상이한 트랜잭션과 연관되는
    장치.
  12. 제 9 항에 있어서,
    상기 트랜잭션 메모리 시스템은 상기 트랜잭션 메모리 시스템에 의해 사용되는 상기 휘발성 메모리에서 힙의 전체 레코드를 나타내는 체크포인트를 상기 비휘발성 메모리 내에 저장하도록 더 구성되는
    장치.
  13. 제 9 항에 있어서,
    상기 비휘발성 메모리는 NAND 플래시 메모리, 상변화 메모리 및 멤리스터 메모리 중 적어도 하나를 포함하는
    장치.
  14. 제 9 항에 있어서,
    상기 트랜잭션 메모리 시스템은 상기 휘발성 메모리에서의 데이터 손실에 응답하여 트랜잭션 메모리 데이터를 재구성하도록 더 구성되는
    장치.
  15. 제 9 항에 있어서,
    상기 트랜잭션 메모리 시스템은 비동기 트랜잭션들이 상기 비휘발성 메모리에 저장되었음을 나타내는 확인들을 상기 스레드들에 제공하도록 더 구성되는
    장치.
KR1020147006553A 2011-09-14 2011-09-14 트랜잭션 메모리 시스템 내구성 부여 KR101574451B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/051516 WO2013039494A1 (en) 2011-09-14 2011-09-14 Imparting durability to a transactional memory system

Publications (2)

Publication Number Publication Date
KR20140049058A true KR20140049058A (ko) 2014-04-24
KR101574451B1 KR101574451B1 (ko) 2015-12-03

Family

ID=47883572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006553A KR101574451B1 (ko) 2011-09-14 2011-09-14 트랜잭션 메모리 시스템 내구성 부여

Country Status (4)

Country Link
US (1) US10817390B2 (ko)
EP (1) EP2756406B1 (ko)
KR (1) KR101574451B1 (ko)
WO (1) WO2013039494A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123683A (ko) * 2015-07-22 2017-11-08 후아웨이 테크놀러지 컴퍼니 리미티드 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜
KR102184841B1 (ko) * 2019-06-27 2020-11-30 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318205B2 (en) 2014-01-30 2019-06-11 Hewlett Packard Enterprise Development Lp Managing data using a number of non-volatile memory arrays
US10268503B2 (en) 2015-06-24 2019-04-23 International Business Machines Corporation Performance of virtual machine fault tolerance micro-checkpointing using transactional memory
JP6626976B2 (ja) * 2015-12-16 2019-12-25 アビニシオ テクノロジー エルエルシー 高スループット、高信頼性のデータ処理システム
US10609174B2 (en) * 2017-04-11 2020-03-31 Microsoft Technology Licensing, Llc Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system
US10445238B1 (en) * 2018-04-24 2019-10-15 Arm Limited Robust transactional memory
US10901850B2 (en) * 2019-01-22 2021-01-26 International Business Machines Corporation Thread checkpoint table for computer processor
US11740928B2 (en) * 2019-08-26 2023-08-29 International Business Machines Corporation Implementing crash consistency in persistent memory
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100204027B1 (ko) 1996-02-16 1999-06-15 정선종 이중면 비휘발성 메모리를 이용한 데이타베이스 회복 장치 및 그 방법
KR100484485B1 (ko) * 2002-10-01 2005-04-20 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
KR100746198B1 (ko) 2005-07-08 2007-08-06 삼성전자주식회사 데이터 저장장치, 데이터 저장방법, 및 그 기록매체
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7844946B2 (en) * 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
US8806096B1 (en) * 2007-04-20 2014-08-12 Netapp, Inc. Increased concurrency of an initialization process of multiple data storage units of a volume
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US8041895B2 (en) 2008-01-28 2011-10-18 Spansion Llc Translation table coherency mecahanism using cache way and set index write buffers
US8032736B2 (en) 2008-02-26 2011-10-04 International Business Machines Corporation Methods, apparatus and articles of manufacture for regaining memory consistency after a trap via transactional memory
US8166481B2 (en) 2008-10-20 2012-04-24 Microsoft Corporation Transaction processing in transactional memory
US8180733B2 (en) 2009-03-19 2012-05-15 Novell, Inc. Selective durability in a directory database
KR101644125B1 (ko) 2009-09-22 2016-07-29 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US9298469B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123683A (ko) * 2015-07-22 2017-11-08 후아웨이 테크놀러지 컴퍼니 리미티드 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜
US11614959B2 (en) 2015-07-22 2023-03-28 Huawei Technologies Co., Ltd. Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock
KR102184841B1 (ko) * 2019-06-27 2020-11-30 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치

Also Published As

Publication number Publication date
KR101574451B1 (ko) 2015-12-03
WO2013039494A1 (en) 2013-03-21
EP2756406A4 (en) 2015-08-19
EP2756406A1 (en) 2014-07-23
EP2756406B1 (en) 2020-07-22
US20140237172A1 (en) 2014-08-21
US10817390B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
KR101574451B1 (ko) 트랜잭션 메모리 시스템 내구성 부여
US20200213380A1 (en) De-multiplexing streaming data from a fast write ahead durable log into segments
CN109074306B (zh) 分布式存储系统中的混合垃圾收集
US11086850B2 (en) Persisting of a low latency in-memory database
US10430298B2 (en) Versatile in-memory database recovery using logical log records
US7908448B1 (en) Maintaining data consistency in mirrored cluster storage systems with write-back cache
US10049036B2 (en) Reliable distributed messaging using non-volatile system memory
CN103092903B (zh) 数据库日志并行化
US9767015B1 (en) Enhanced operating system integrity using non-volatile system memory
US9251233B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US9760480B1 (en) Enhanced logging using non-volatile system memory
US10089320B2 (en) Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication
EP2590078B1 (en) Shadow paging based log segment directory
CN109725840A (zh) 利用异步冲刷对写入进行节流
CN108694231A (zh) 使用nvm并通过多个日志记录缓冲器来预写式日志记录
CN106776147B (zh) 一种差异数据备份方法和差异数据备份装置
US9990150B2 (en) Method to provide transactional semantics for updates to data structures stored in a non-volatile memory
JP6432805B2 (ja) 区分化インメモリデータセットのためのredoロギング
US9934110B2 (en) Methods for detecting out-of-order sequencing during journal recovery and devices thereof
US9898468B2 (en) Single pass file system repair with copy on write
US10089220B1 (en) Saving state information resulting from non-idempotent operations in non-volatile system memory
KR102179669B1 (ko) 데이터 유닛들의 컬렉션 체크포인팅
US11175999B2 (en) Management of backup volume extents via a tiered storage mechanism
CN116483284B (zh) 一种读写虚拟硬盘的方法、装置、介质及电子设备
JP2006012142A (ja) 非ディスク永続メモリを利用したチェックポイント方法およびシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181112

Year of fee payment: 4