Small-Block Log Aggregation for Write Amplification Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In storage systems, high write amplification occurs due to the mismatch between small logical log entries and fixed-size blocks in block-oriented devices, leading to increased latency and wasted storage, especially in scenarios with multiple instances of logical logs writing small amounts of data.

Innovation Solution

Implementing a system with an object manager that logs write requests in small-block logs, aggregates them into fixed-size data blocks, and flushes these blocks to storage on an as-needed basis, using a write-optimized data structure like a log-structured merge tree to reduce write amplification and latency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If small logical log entries are written directly to block-oriented storage devices, then data integrity and crash recovery are improved, but write amplification increases and storage efficiency deteriorates

Engineering Contradiction:
Improvedata integrityVSAvoidstorage efficiency
Core Design Contradiction:
ReliabilityVSLoss of substance

Solution Approach 1:

The patent merges multiple small logical log entries into a single physical log block before writing to storage. The log buffer accumulates multiple small entries (e.g., 4KB each) and combines them into one physical write operation, reducing write amplification while maintaining data integrity through the persistent log structure.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If small logical log entries are flushed immediately to disk, then data durability is improved, but latency increases due to frequent write operations

Engineering Contradiction:
Improvedata durabilityVSAvoidwrite latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary buffering of small log entries in memory before writing to disk. The log buffer holds multiple entries temporarily, allowing them to be aggregated into full physical blocks before the actual write operation, thereby reducing latency while ensuring durability through the persistent log structure.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent maintains a continuous log buffer in memory that accumulates small entries over time. This continuous buffering allows the system to maintain data durability while avoiding frequent interruptive write operations, as the buffer continuously collects entries until a full physical block is ready for writing.

Inventive Principle:
Principle #20Continuity of useful action

3Reliability

If multiple instances of logical logs write small amounts of data independently, then data integrity for each instance is maintained, but overall write amplification increases significantly

Engineering Contradiction:
Improvedata integrityVSAvoidwrite efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent merges small log entries from multiple independent logical log instances into a shared log buffer. This allows multiple instances (e.g., file system logs, database logs) to contribute their small entries to a common buffer, which then aggregates them into full physical blocks for efficient writing, reducing overall write amplification while maintaining integrity for each instance.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS11494276B2Reduced write amplification using small-block log
Publication Date: 2022.11.08 VMWARE INC
  • US11494276B2 patent drawing
  • US11494276B2 patent drawing
  • US11494276B2 patent drawing

AI summary

Processing write requests from clients includes logging the associated data into logs corresponding to the data objects targeted by the write requests. The logs are persisted by combining log entries from each of the logs into one ore more fixed-size data blocks. The fixed-size data blocks are inserted into a data tree stored on a block-based storage device.