Decentralized Cache Coherency via Generation Numbers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed computing environments, maintaining cache coherency across multiple computing systems and virtual machines hosting shared network-attached storage systems is challenging, leading to performance bottlenecks and single points of failure due to centralized cache management strategies.

Innovation Solution

A cache coherency method where a cache manager intercepts read and file open requests, determines object generation numbers, and updates metadata in a cache database to ensure that only valid objects are cached, allowing for decentralized management and scalability without introducing new bottlenecks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a centralized cache management strategy is used, then cache coherency can be maintained, but performance bottlenecks and single points of failure are introduced

Engineering Contradiction:
Improvecache coherencyVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the centralized cache management into decentralized cache managers at each computing system. Each cache manager independently manages its local cache using shared metadata (generation numbers) from the storage system, eliminating the need for a centralized management point while maintaining coherency through distributed coordination.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces generation numbers as an intermediary mechanism that mediates between multiple decentralized cache managers and the shared storage system. These generation numbers act as a coordination protocol that allows independent cache managers to maintain coherency without direct communication or centralized control, resolving the bottleneck issue.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If a centralized cache manager checks all cache accesses, then cache coherency is maintained, but another performance bottleneck is introduced

Engineering Contradiction:
Improvecache coherencyVSAvoidaccess time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

Each decentralized cache manager performs self-service by independently checking generation numbers and making its own coherence decisions without requiring approval from a centralized manager. This autonomous operation eliminates the additional bottleneck of centralized validation while maintaining coherency through shared metadata.

Inventive Principle:
Principle #25Self-service

3Productivity

If caching is implemented in a distributed environment, then performance bottleneck of shared storage is alleviated, but cache coherency issues increase

Engineering Contradiction:
Improvestorage system performanceVSAvoidcache coherency management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent changes the approach to coherency management by using generation numbers as a simple scalar parameter instead of complex centralized coordination protocols. This parameter-based approach allows distributed cache managers to maintain coherency through straightforward comparison operations, reducing management complexity while enabling performance improvement.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9489389B2System and method for maintaining cache coherency
Publication Date: 2016.11.08 PERNIXDATA INC
  • US9489389B2 patent drawing
  • US9489389B2 patent drawing
  • US9489389B2 patent drawing

AI summary

A cache manager maintains coherency of cached objects used by applications in a computing system. The cache manager maintains a cache memory of objects as they are accessed by an application. The cache manager tracks cached objects on a per-application basis using a cache database, storing for each object metadata comprising the generation number of the application using the cached object, and the file generation number of the file from which the object was read. The cache manager determines whether cached objects are valid and can be used by the application, or are stale and must be reloaded, by using these generation numbers when an application attempts to use a file or object. In this fashion, cache coherency is maintained even in a distributed environment without the centralized cache management bottlenecks of prior approaches and without the need to eagerly purge the cache of stale versions of objects.