Adaptive Trigger-Based Data Prefetching for Storage Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional data prefetching mechanisms face challenges in identifying access patterns and managing prefetching for sequential access streams, leading to increased latency and cache pollution, especially in large-scale data storage systems with concurrent access streams.

Innovation Solution

Implementing adaptive trigger-based sequential prefetching, where triggers are used to identify sequential access streams and dynamically adjust prefetch window sizes based on resource contention, application requirements, and cache capacity to optimize data movement from slower to faster storage media.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional prefetching mechanisms track significant state about each active access stream, then access patterns can be identified, but device complexity and overhead increase

Engineering Contradiction:
Improveaccess pattern identification accuracyVSAvoidprefetching mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the prefetching mechanism into independent trigger-based units. Instead of tracking global state for all access streams, the system creates discrete triggers at specific data block locations that independently initiate prefetching when encountered. This segmentation eliminates the need for complex centralized state tracking while maintaining effective access pattern identification.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The prefetching mechanism becomes self-service through automatic trigger creation and execution. When a sequential access pattern is detected, triggers are automatically placed at appropriate locations in the data stream. These triggers self-initiate prefetching operations without requiring continuous external control or state management, reducing system overhead and complexity.

Inventive Principle:
Principle #25Self-service

2Loss of time

If prefetch window size is increased to improve data availability, then latency is reduced, but cache pollution increases

Engineering Contradiction:
ImproveI/O request latencyVSAvoidcache pollution
Core Design Contradiction:
Loss of timeVSObject-generated harmful factors

Solution Approach 1:

The prefetch window size is made dynamic rather than fixed. The system adjusts the window size based on actual cache availability and resource contention conditions. When cache pressure is high, the window size is reduced to prevent pollution. When cache resources are abundant, the window size is increased to improve data availability and reduce latency, optimizing the balance between these competing objectives.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system implements feedback mechanisms that monitor cache resource usage and prefetching effectiveness. This feedback is used to dynamically adjust prefetch window sizes and trigger frequencies. When feedback indicates cache pollution is occurring, the system responds by reducing prefetch aggressiveness. When feedback shows cache resources are underutilized, the system increases prefetching to improve performance.

Inventive Principle:
Principle #23Feedback

3Adaptability or versatility

If multiple concurrent sequential access streams are supported, then system versatility improves, but overhead in maintaining stream state increases

Engineering Contradiction:
Improveconcurrent access stream supportVSAvoidstream state maintenance overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

Each concurrent sequential access stream is handled by independent, segmented trigger mechanisms rather than a unified state-tracking system. Triggers are created at specific locations within each stream's data blocks and operate independently. This segmentation allows multiple streams to be supported simultaneously without requiring complex cross-stream state management, as each stream's prefetching is self-contained and autonomous.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts the state-tracking burden from the central prefetching controller and places it locally at trigger points within the data stream itself. Instead of maintaining global state about all streams, the system embeds trigger information directly in the data structure, eliminating the need for external state maintenance while supporting multiple concurrent streams.

Inventive Principle:
Principle #2Taking out (Extraction)

4Loss of time

If data is prefetched aggressively to stay ahead of read requests, then latency is reduced, but resource contention increases

Engineering Contradiction:
Improvedata access latencyVSAvoidresource contention
Core Design Contradiction:
Loss of timeVSStress or pressure

Solution Approach 1:

The prefetching aggressiveness is dynamically adjusted based on real-time resource conditions. When resource contention is low, the system prefetches more aggressively to reduce latency. When resource contention increases, the system automatically backs off prefetching intensity. This dynamic adjustment allows the system to optimize latency reduction while preventing excessive resource contention, adapting to changing system conditions in real-time.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9990296B2Systems and methods for prefetching data
Publication Date: 2018.06.05 ORACLE INT CORP
  • US9990296B2 patent drawing
  • US9990296B2 patent drawing
  • US9990296B2 patent drawing

AI summary

Implementations described and claimed herein provide systems and method for prefetching data. In one implementation, whether a read request for a first data block is part of a sequential access stream is determined. A first trigger for a subsequent data block in the sequential access stream is recorded. A first set of data blocks is prefetched. The first set of data blocks is defined by a first prefetch window associated with the first trigger. A second trigger is recorded for a second subsequent data block in the sequential access stream. A second set of data blocks is prefetched. The second set of data blocks is defined by a second prefetch window associated with the first trigger. A size of the prefetch windows may be dynamically adjusted based on resource contention with the prefetching.