Invariant Verification for Persistent Memory Data Integrity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Persistent memory systems are more susceptible to software failures that can corrupt the state of in-memory data structures, leading to application crashes or security vulnerabilities due to the modification of durable state through regular load/store memory instructions.

Innovation Solution

A framework for invariant verification that allows programmers to express and enforce memory-safety invariants, such as object overlap and reference counts, using log files to check and ensure consistency at specific points like transaction commits, and leveraging crash consistency mechanisms for non-volatile memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If regular load/store memory instructions are used to modify durable state in persistent memory, then low latency persistence is achieved, but the system becomes more susceptible to software failures that corrupt data structure state

Engineering Contradiction:
Improvepersistence latencyVSAvoiddata structure state integrity
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The system performs preliminary actions by logging memory operations before they are executed. The log captures the intended operations in advance, allowing the system to verify consistency and recover if failures occur, thus preventing corruption while maintaining low-latency persistence through direct memory access.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A log structure serves as an intermediary between the load/store instructions and the persistent memory. This intermediary records all operations and provides a mechanism to verify data structure invariants, enabling the system to detect and prevent corruption while preserving the performance benefits of direct memory access.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If in-memory data structures are persisted directly on byte-addressable non-volatile memory, then flexible and low-latency persistence is achieved, but the data structures become more vulnerable to accidental corruption

Engineering Contradiction:
Improvepersistence flexibility and speedVSAvoidsoftware failure susceptibility
Core Design Contradiction:
ProductivityVSObject-affected harmful factors

Solution Approach 1:

The system logs all memory operations before execution, creating a preliminary record of intended state changes. This allows verification of data structure invariants before commits, preventing corrupted states from being persisted while maintaining the flexibility and speed of direct memory access for persistent data structures.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback by checking data structure invariants against the logged operations. This feedback mechanism verifies that operations maintain expected invariants before allowing persistence, providing a safety check that prevents corruption while preserving the performance characteristics of direct memory access.

Inventive Principle:
Principle #23Feedback

3Reliability

If a framework for invariant verification is implemented to check data consistency, then reliability and integrity are improved, but system complexity increases due to additional verification mechanisms

Engineering Contradiction:
Improvedata integrityVSAvoidverification framework complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The log structure serves as an intermediary that simplifies the verification process. By recording all operations in a structured format, the log enables invariant checking without requiring complex verification logic throughout the system, thus improving reliability while managing complexity through a centralized logging mechanism.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system creates a copy of the operation history in the log structure. This copy allows verification of data structure invariants without modifying the original data structures or requiring complex real-time verification, simplifying the overall system while improving reliability through independent validation.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10248493B2Invariant determination
Publication Date: 2019.04.02 HEWLETT PACKARD ENTERPRISE DEV LP
  • US10248493B2 patent drawing
  • US10248493B2 patent drawing
  • US10248493B2 patent drawing

AI summary

Examples disclosed herein relate to determining that an operation is accessing data on a persistent memory and retrieving a log of the operation. The examples may also include determining a type of the data being accessed by the persistent memory by the operation and identifying, from the log, a location in the persistent memory of the data accessed by the operation. The examples may also include determining contents of the data accessed by the persistent memory by the operation and determining whether the contents of the data hold an invariant corresponding to the type of data.