# US 2021/0342180 A1 · Reduced impact application recovery

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0342180 A1
- Document ID: US20210342180A1
- Status: Published application
- Kind: A1
- Application number: 17/067,486
- Filed: 2020-10-09
- Published: 2021-11-04
- Earliest claimed: 2020-04-29
- Assignees: Memverge, Inc.
- Applicants: MemVerge, Inc.
- Inventors: Ronald S. Niles; Yue Li; Jun Gan; Chenggong Fan; Robert W. Beauchamp; Dahong Li
- Web page: https://patentgrep.com/patent/US20210342180A1

## CPC

- G06F 11/1438: {Restarting or rejuvenating}
- G06F 11/1469: {Backup restoration techniques}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0667: {at data level, e.g. file, record or object virtualisation}
- G06F 3/0676: {Magnetic disk device}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 9/461: {Saving or restoring of program or task context}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 11/1474: in transactions (updating of structured data in databases G06F16/23)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A memory image can be captured by generating metadata indicative of a state of volatile memory and/or byte-addressable PMEM at a particular time during execution of a process by an application. This memory image can be persisted without copying the in-memory data into a separate persistent storage by storing the metadata and safekeeping the in-memory data in the volatile memory and/or PMEM. Metadata associated with multiple time-evolved memory images captured can be stored and managed using a linked index scheme. A linked index scheme can be configured in various ways including a full index and a difference-only index. The memory images can be used for various purposes including suspending and later resuming execution of the application process, restoring a failed application to a previous point in time, cloning an application, and recovering an application process to a most recent state in an application log.

## Claims

### Claim 1

A method for mitigating a recovery impact on a primary application instance, the method comprising:
establishing a replica application instance, the replica application instance representing an asynchronous replica of the primary application instance;
causing the replica application instance to follow the execution of the primary application instance;
capturing a memory image based on the replica application instance during execution by the replica application instance; and
performing a recovery of the primary application instance by:
restoring the primary application instance to a restore point based on the memory image;
generating a catch-up log based on a full log associated with the primary application instance, the catch-up log including a subset of records from the full log that are beyond the restore point; and
causing the primary application instance to replay the catch-up log.

### Claim 2 (depends on 1)

The method of claim 1, wherein the primary application instance is executed in a primary execution environment and wherein the replica application instance is executed in a replica execution environment that is physically and/or logically separate from the primary execution environment.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
pre-positioning the memory image before performing the recovery of the primary application instance.

### Claim 4 (depends on 3)

The method of claim 3, wherein pre-positioning the memory image includes:
generating a copy of the memory image; and
storing the copy of the memory image in a recovery environment that is accessible to the primary execution environment.

### Claim 5 (depends on 1)

The method of claim 1, wherein causing the replica application instance to follow the execution of the primary application instance includes:
enabling the replica application instance to access records from the full log associated with the primary application instance; and
causing the replica application instance to perform transactions indicated in the records, the transactions previously performed by the primary application instance.

### Claim 6 (depends on 1)

The method of claim 1, wherein no memory images are captured based on the primary application instance.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
stopping execution by the replica application instance before performing the recovery of the primary application instance.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
isolating the primary application instance from one or more network connections before performing the recovery of the primary application instance;
determining that the primary application instance has completed replaying the catch-up log; and
reconnecting the primary application instance to the one or more network connections in response to determining that the primary application instance has completed replaying the catch-up log.

### Claim 9 (depends on 1)

The method of claim 1, wherein the memory image is one of a plurality of memory images captured based on the replica application instance during execution by the replica application instance, the method further comprising:
before restoring the primary application instance to the restore point based on the memory image:
identifying the memory image as a most recent memory image of the plurality of memory images; and
selecting the memory image in response to identifying the memory image as the most recent memory image.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
establishing a replica relationship between the primary application instance and the replica application instance.

### Claim 11 (depends on 1)

The method of claim 1, further comprising:
detecting a failure in the primary application instance and/or an environment in which the primary application instance is executing;
wherein the recovery of the primary application instance is performed in response to detecting the failure.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
enabling the replica application instance to use persistent memory (PMEM) as volatile-mode memory to store and access in-memory data during execution;
wherein capturing the memory image includes safekeeping, in the PMEM, a particular state of the in-memory data at a particular time of capture.

### Claim 13 (depends on 12)

The method of claim 12, wherein safekeeping the particular state of the in-memory data includes preventing modification of the in-memory data from the particular state to a new state.

### Claim 14 (depends on 13)

The method of claim 13, wherein preventing modification of the in-memory data includes setting write protection in mappings between a logical address space of the replica application instance and the PMEM.

### Claim 15 (depends on 12)

The method of claim 12, wherein enabling the replica application instance to use the PMEM as volatile-mode memory includes:
virtualizing a memory object as anonymous byte-addressable memory for use by the replica application instance.

### Claim 16 (depends on 15)

The method of claim 15, wherein the memory object is a distributed memory object.

### Claim 17 (depends on 1)

The method of claim 1,
wherein the memory image is one of a plurality of memory images captured at different times during execution by the replica application instance; and
wherein the plurality of memory images are managed using a linked difference-only index and/or a linked full-index.

### Claim 18

A computer system comprising:
a processor; and
a memory having instructions stored thereon, which when executed by the processor, cause the computer system to:
establish a replica application instance, the replica application instance representing an asynchronous replica of the primary application instance;
cause the replica application instance to follow the execution of the primary application instance;
capture a memory image based on the replica application instance during execution by the replica application instance; and
perform a recovery of the primary application instance by:
restoring the primary application instance to a restore point based on the memory image;
generating a catch-up log based on a full log associated with the primary application instance, the catch-up log including a subset of records from the full log that are beyond the restore point; and
causing the primary application instance to replay the catch-up log.

### Claim 19

A method comprising:
at periodic intervals during execution of an application process by a primary application instance:
generating a catch-up log based on a full log associated with the primary application instance, the catch-up log including a subset of records from the full log; and
causing a replica application instance to replay the catch-up log;
capturing a memory image, based on the replica application instance, after the replica application instance has completed replaying a respective catch-up log; and
positioning the memory image to enable access to the primary application instance for recovery.

### Claim 20 (depends on 19)

The method of claim 19, further comprising:
performing a recovery of the primary application instance based on the memory image.

### Claim 21 (depends on 20)

The method of claim 20, wherein the catch-up log is a first catch-up log, the subset of records is a first subset of records, and wherein performing the recovery of the primary application instance includes:
restoring the primary application instance to a restore point based on the memory image;
generating a second catch-up log based on the full log associated with the primary application instance, the second catch-up log including a second subset of records from the full log that are beyond the restore point; and
causing the primary application instance to replay the second catch-up log.

### Claim 22 (depends on 20)

The method of claim 20, further comprising:
isolating the primary application instance from one or more network connections before performing the recovery of the primary application instance;
determining that the primary application instance has completed replaying the catch-up log; and
reconnecting the primary application instance to the one or more network connections in response to determining that the primary application instance has completed replaying the catch-up log.

### Claim 23 (depends on 20)

The method of claim 20, further comprising:
detecting a failure in the primary application instance and/or an environment in which the primary application instance is executing;
wherein the recovery of the primary application instance is performed in response to detecting the failure.

### Claim 24 (depends on 19)

The method of claim 19, wherein a new memory image is captured each time after the replica application instance has completed replaying a respective catch-up log.

### Claim 25 (depends on 19)

The method of claim 19, wherein the primary application instance is executed in a primary execution environment and wherein the replica application instance is executed in a replica execution environment that is physically and/or logically separate from the primary execution environment.

### Claim 26 (depends on 25)

The method of claim 25, wherein positioning the memory image includes:
generating a copy of the memory image; and
storing the copy of the memory image in a recovery environment that is accessible to the primary execution environment.

### Claim 27 (depends on 19)

The method of claim 19, wherein no memory images are captured based on the primary application instance.

### Claim 28 (depends on 19)

The method of claim 19, further comprising:
enabling the replica application instance to use persistent memory (PMEM) as volatile-mode memory to store and access in-memory data during execution;
wherein capturing the memory image includes safekeeping, in the PMEM, a particular state of the in-memory data at a particular time of capture.

### Claim 29 (depends on 28)

The method of claim 28, wherein safekeeping the particular state of the in-memory data includes preventing modification of the in-memory data from the particular state to a new state.

### Claim 30 (depends on 29)

The method of claim 29, wherein preventing modification of the in-memory data includes setting write protection in mappings between a logical address space of the replica application instance and the PMEM.

### Claim 31 (depends on 28)

The method of claim 28, wherein enabling the replica application instance to use the PMEM as volatile-mode memory includes:
virtualizing a memory object as anonymous byte-addressable memory for use by the replica application instance.

### Claim 32 (depends on 31)

The method of claim 31, wherein the memory object is a distributed memory object.

### Claim 33 (depends on 19)

The method of claim 19,
wherein the memory image is one of a plurality of memory images captured at different times during execution by the replica application instance; and
wherein the plurality of memory images are managed using a linked difference-only index and/or a linked full-index.
