Adaptive Prefetching for Small File Restore in Deduplication Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current deduplication storage systems face inefficiencies in restoring small files due to limited prefetching mechanisms, leading to slower restoration performance compared to large file workloads, as they lack the ability to effectively utilize read-ahead hints and queue-based mechanisms for small file restoration.

Innovation Solution

The implementation of an adaptive prefetching mechanism using extended Data Domain APIs, which introduces a queue-based system to prioritize and process small file read requests, allowing for intelligent prefetching and memory-efficient 'just-in-time' data retrieval by queuing small files and routing them through multiple threads for optimized performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a simple read-ahead prefetch mechanism is used, then the system structure remains simple, but small file restoration performance deteriorates significantly

Engineering Contradiction:
Improveprefetch mechanism complexityVSAvoidsmall file restoration speed
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent implements preliminary action by introducing a read-ahead prefetch mechanism that proactively loads data into the read-ahead cache before it is actually needed. The system calculates a prefetch offset based on the read offset and prefetch horizon, then issues prefetch requests to load data in advance. This allows small files to be restored faster by having data already cached when needed, directly addressing the performance deterioration issue while maintaining manageable system complexity through structured prefetch request processing.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If small files are bundled into containers, then restoration performance improves, but system flexibility and ease of operation deteriorate

Engineering Contradiction:
Improverestoration performanceVSAvoidfile access flexibility
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent applies segmentation by treating individual small files as separate restore units rather than forcing them into containerized bundles. Each small file can be restored independently through the prefetch mechanism, maintaining file system flexibility and ease of operation while achieving improved restoration performance. The system segments the restore process into individual file operations that can be optimized through prefetching without requiring containerization.

Inventive Principle:
Principle #1Segmentation

3Device complexity

If traditional file opening and queuing semantics are used, then the API remains simple, but prefetch efficiency and restoration speed deteriorate

Engineering Contradiction:
ImproveAPI complexityVSAvoidrestoration speed
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent extends the traditional file opening and queuing semantics to include preliminary prefetch actions. When a file is opened for restoration, the system automatically calculates prefetch offsets and issues prefetch requests before the actual read operations. This enhanced API maintains simplicity by automating the prefetch process while significantly improving restoration speed through proactive data loading and read-ahead cache utilization.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11836054B2File restore performance in a deduplication file system using adaptive prefetching
Publication Date: 2023.12.05 DELL PROD LP
  • US11836054B2 patent drawing
  • US11836054B2 patent drawing
  • US11836054B2 patent drawing

AI summary

Embodiments of small file restore process in deduplication file system wherein restoration requires issuing a read request within an I/O request to the file system. A prefetch queue processor creates an intent to read the file, rather than opening the file upon receiving the request. During this step, the application passes the file handle of the file, and the destination handle where the data must be read into. As the queue is processed, the prefetch for the request (handle/offset/length) is passed to the file server. The filesystem processes the request to equivalently ‘open’ the file, and bring the data into memory. As the read request for the same file reaches the filesystem the file data is read from memory for writing to the destination handle.