Storage Index Segmentation for Memory Thrashing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Large storage servers face inefficiencies due to duplicative data, leading to memory overflow issues and performance slowdowns as the index becomes too large, requiring storage in slower secondary memory and causing thrashing between memory and secondary storage.

Innovation Solution

A storage system index is maintained using a combination of data structures like Bloom filters, tables of contents, and accelerator cache files to enable efficient data access, reducing I/O accesses and optimizing storage by quickly determining the presence or absence of data chunks and managing key inserts and lookups efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If the index is maintained in memory to enable quick data access, then data access speed is improved, but memory space runs out and thrashing occurs between memory and secondary storage

Engineering Contradiction:
Improvedata access speedVSAvoidmemory space
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The index is segmented into multiple levels: a primary index structure (hash table) in memory for quick lookups, and secondary index structures (sorted arrays, B-trees) in persistent storage for capacity expansion. This segmentation allows the system to maintain fast access for frequently queried keys while storing less frequently accessed index entries in secondary storage, thereby resolving the contradiction between memory space availability and data access speed.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If the index is stored in secondary storage to save memory space, then memory usage is reduced, but performance slows down due to thrashing between memory and secondary storage

Engineering Contradiction:
Improvememory usageVSAvoidstorage server performance
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

Different portions of the index are assigned different storage locations based on their access patterns. Hot data (frequently accessed keys) are kept in memory, while cold data (less frequently accessed keys) are stored in secondary storage. This local quality differentiation ensures that memory resources are allocated to the most performance-critical index entries, maintaining high productivity while reducing overall memory usage.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system pre-loads frequently accessed index entries into memory before they are actually needed, and pre-allocates memory buffers for index operations. This preliminary action reduces the frequency of memory-secondary storage thrashing by ensuring that commonly accessed index data is already in memory when queries occur, thereby maintaining performance while managing memory resources efficiently.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If duplicative data is stored in the storage system to maintain separate versions of files, then version control is enabled, but storage capacity is wasted

Engineering Contradiction:
Improveversion control capabilityVSAvoidstorage capacity
Core Design Contradiction:
Adaptability or versatilityVSVolume of stationary object

Solution Approach 1:

The system merges common data chunks from different file versions into a single stored copy, while maintaining references to the original versions through the index. When a file is versioned, only the differing portions (delta changes) are stored as separate chunks, while the common base chunks are shared across all versions. This merging approach enables full version control capability while dramatically reducing the total storage capacity required compared to storing complete duplicate copies of each version.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8386494B2Providing data structures for determining whether keys of an index are present in a storage system
Publication Date: 2013.02.26 VALTRUS INNOVATIONS LTD
  • US8386494B2 patent drawing
  • US8386494B2 patent drawing
  • US8386494B2 patent drawing

AI summary

Keys of an index are associated with corresponding data chunks in a storage system. In response to a request for a particular key, a particular location is accessed in a first data structure which is maintained in a first storage using a first portion of the particular key. In response to the particular location containing a first value, indicating that the particular key is not present in the index. In response to the particular location containing a second value, a map is accessed using a second portion of the particular key to retrieve an entry in a second data structure maintained in a second storage. The second data structure provides a collision chain to link entries of the second data structure that share a common value of the second portion of the particular key. The first data structure, map, and second data structure are part of the index.