Persistent Memory Variable Logging for Multithreaded Consistency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing systems fail to maintain consistency and integrity of persistent variables across multiple execution entities in a multithreaded program, leading to corruption and inconsistencies that cannot be resolved by rebooting, especially in non-volatile memory environments.

Innovation Solution

A logging mechanism is implemented to record modifications to persistent variables, allowing for the determination of the order of modifications and enabling the computation of a globally consistent state, which is maintained through a log structure that supports non-blocking, concurrent access and updates, ensuring data integrity even across crashes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a logging mechanism is implemented to record modifications to persistent variables, then data consistency and integrity are improved, but device complexity increases

Engineering Contradiction:
Improvedata consistencyVSAvoidlogging mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The logging mechanism is segmented into discrete log entries, each representing a specific modification event to a persistent variable. Each log entry contains structured information about the modification (address, old value, new value, timestamp), allowing the system to maintain consistency without requiring a monolithic complex logging system. The log structure is divided into manageable units that can be processed independently during recovery operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary logging of modifications to persistent variables as they occur during normal execution. By recording modification events in advance before crashes or failures happen, the system prepares recovery information ahead of time. This preliminary action eliminates the need for complex real-time analysis during failure recovery, reducing the complexity burden during critical recovery operations.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If a log structure supports non-blocking concurrent access, then productivity is improved, but device complexity increases

Engineering Contradiction:
Improveconcurrent computation efficiencyVSAvoidconcurrent access control complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The log structure employs dynamic data structures that can be safely accessed and modified by multiple execution entities concurrently. The system uses atomic operations and memory ordering guarantees to enable dynamic updates to the log without blocking other threads. Execution entities can traverse and read log entries safely even when the structure is being built and modified, allowing efficient concurrent computation of properties like globally consistent states without requiring complex locking mechanisms.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system introduces an intermediary log structure that mediates between multiple execution entities accessing persistent variables. This intermediary layer provides a consistent view of modifications across threads while allowing each thread to access and modify the log independently. The intermediary structure uses synchronization primitives and memory barriers to coordinate access, enabling concurrent computation without requiring direct complex coordination between all execution entities.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If the system computes globally consistent states in multithreaded environments, then measurement precision is improved, but loss of time increases

Engineering Contradiction:
Improveglobally consistent state computationVSAvoidrecovery time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The system performs preliminary computation of globally consistent states during normal execution by continuously traversing and analyzing log entries as modifications occur. This ongoing computation maintains an up-to-date understanding of the system state without requiring a separate time-consuming analysis phase after crashes. The preliminary action of continuously updating consistency information allows rapid recovery operations when failures occur.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system maintains continuous computation of globally consistent states through ongoing traversal and analysis of log entries during normal operation. Rather than performing consistency computation only during recovery, the system continuously updates and maintains this information as execution progresses. This continuity ensures that when crashes occur, the recovery process can leverage already-computed consistency information, significantly reducing recovery time while maintaining measurement precision.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS9002791B2Logging modifications to a variable in persistent memory
Publication Date: 2015.04.07 HEWLETT PACKARD ENTERPRISE DEV LP
  • US9002791B2 patent drawing
  • US9002791B2 patent drawing
  • US9002791B2 patent drawing

AI summary

A log entry is created in persistent memory that represents a modification to a variable that resides in persistent memory. A log entry is created in persistent memory that represents a synchronization operation. A program-order based dynamic ordering relationship is created between two successive log entries within an execution entity. A synchronization-order based dynamic ordering relationship is created between two log entries corresponding to synchronization operations in concurrently executing distinct execution entities of said execution instance.