# US 11,907,081 B2 · 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 11,907,081 B2
- Document ID: US11907081B2
- Status: Granted
- Kind: B2
- Application number: 17/067,486
- Filed: 2020-10-09
- Published: 2021-11-04
- Granted: 2024-02-20
- 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/US11907081B2

## 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 in a primary execution environment, the method comprising:
establishing a replica application instance in a replica execution environment different from the primary execution environment, the replica application instance representing an asynchronous replica of the primary application instance;
causing the primary application instance to asynchronously communicate log entries to the replica application instance, wherein the log entries are kept by the primary application instance as it executes an application process so as to enable the replica application instance to perform same transactions as the primary application instance;
causing a state of the replica application instance to follow behind a state of the execution of the primary application instance by executing, at the replica application instance, transactions in the log entries;
generating a memory image of the replica application instance during said execution by the replica application instance, wherein the memory image is a copy of the state of the replica application instance that is stored in memory allocated to the replica application instance in the replica execution environment; and
performing a recovery of the primary application instance by:
restoring the primary application instance to a restore point based on the copy of the state of the replica 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 that were logged after the restore point; and
causing the primary application instance to replay the catch-up log so that the primary application instance executes the application process and performs transactions as reflected in the catch-up log.

### Claim 2 (depends on 1)

The method of claim 1, wherein the replica execution environment 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 no memory images are captured based on the primary application instance.

### Claim 6 (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 7 (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 8 (depends on 1)

The method of claim 1, wherein the memory image is one of a plurality of memory images captured 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 9 (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 10 (depends on 1)

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

### Claim 11 (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, the state of the replica application instance at a particular time of capture.

### Claim 12 (depends on 11)

The method of claim 11, 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 13 (depends on 12)

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

### Claim 14 (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 15

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 in a replica execution environment different from a primary execution environment, the replica application instance representing an asynchronous replica of a primary application instance in the primary execution environment;
cause the primary application instance to asynchronously communicate log entries to the replica application instance, wherein the log entries are kept by the primary application instance as it executes an application process so as to enable the replica application instance to perform same transactions as the primary application instance;
cause a state of the replica application instance to follow behind a state of the execution of the primary application instance by executing, at the replica application instance, transactions in the log entries;
generate a memory image of the replica application instance during said execution by the replica application instance, wherein the memory image is a copy of the state of the replica application instance that is stored in memory allocated to the replica application instance in the replica execution environment; and
perform a recovery of the primary application instance by:
restoring the primary application instance to a restore point based on the copy of the state of the replica 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 that were logged after the records of the restore point; and
causing the primary application instance to replay the catch-up log so that the primary application instance executes the application process and performs transactions as reflected in the catch-up log.
