Version Tracking for Distributed Shared Memory Corruption

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory corruption detection schemes for distributed node systems are complex and add performance overhead, making it difficult to effectively debug and detect memory corruption in clustered applications.

Innovation Solution

Implementing a version value system where nodes in a distributed node system associate a version value with shared cache lines, allowing for the detection of memory corruption by comparing the version value of a pointer with the version value stored in the shared cache line, and using this system to maintain coherence between nodes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If version number checking is implemented for memory corruption detection in distributed shared memory systems, then memory corruption detection capability is improved, but system complexity and performance overhead increase

Engineering Contradiction:
Improvememory corruption detection capabilityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system divides memory into fixed-size cache line units (e.g., 64 bytes) and applies version number tracking at the cache line level rather than at the entire memory or application level. This segmentation allows selective monitoring of only those memory regions that are actually shared between nodes, reducing overall system complexity while maintaining detection capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Version numbers are pre-associated with shared cache lines when they are created or modified. This preliminary tagging enables immediate detection of unauthorized modifications without requiring complex runtime analysis or post-execution verification, simplifying the detection mechanism.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If version number checking is implemented for memory corruption detection, then memory corruption detection capability is improved, but system performance deteriorates due to overhead

Engineering Contradiction:
Improvememory corruption detection capabilityVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs version number comparisons only for cache lines that are actually shared between nodes and accessed during execution, rather than checking all memory accesses. This selective approach minimizes the performance overhead while maintaining comprehensive detection capability for shared memory corruption.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system implements version checking selectively - only for shared cache lines in distributed memory systems, not for all memory operations. This partial application of the detection mechanism achieves the necessary reliability improvement without incurring the full overhead of universal memory checking.

Inventive Principle:
Principle #16Partial or excessive action

3Difficulty of detecting and measuring

If existing debugging solutions are used for clustered applications, then some debugging capability is provided, but programming model complexity increases and performance overhead is added

Engineering Contradiction:
Improvedebugging capabilityVSAvoidprogramming model complexity
Core Design Contradiction:
Difficulty of detecting and measuringVSDevice complexity

Solution Approach 1:

The version number mechanism is integrated directly into the memory management infrastructure of the distributed system, allowing the system to self-detect memory corruption automatically. This eliminates the need for external debugging tools or complex programming model changes, as the detection capability is built-in and transparent to applications.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3123331B1Memory corruption detection support for distributed shared memory applications
Publication Date: 2021.08.25 ORACLE INT CORP
  • EP3123331B1 patent drawingFigure 1
  • EP3123331B1 patent drawingFigure 2
  • EP3123331B1 patent drawingFigure 3

AI summary

Nodes in a distributed node system are configured to support memory corruption detection when memory is shared between the nodes. Nodes in the distributed node system share data in units of memory referred to herein as "shared cache lines." A node associates a version value with data in a shared cache line. The version value and data may be stored in a shared cache line in the node's main memory. When the node performs a memory operation, it can use the version value to determine whether memory corruption has occurred. For example, a pointer may be associated with a version value. When the pointer is used to access memory, the version value of the pointer may indicate the expected version value at the memory location. If the version values do not match, then memory corruption has occurred.