Per-thread buffer pools for QoS differentiation in storage systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional data storage systems face inefficiencies due to the use of a single global buffer pool for handling network frames, leading to bottlenecks in high-volume data traffic and prioritization issues among multi-threaded processes, especially in cloud and enterprise environments.

Innovation Solution

Implementing a system where each MSI-X thread context has a unique receive buffer list and kernel resources, allowing for out-of-order handling of storage operations based on quality-of-service (QoS) priorities assigned to each operation, and pre-allocating resources according to service levels.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single global buffer pool is used for handling network frames, then device complexity is reduced, but productivity decreases due to bottlenecks in high-volume data traffic

Engineering Contradiction:
Improvebuffer management structureVSAvoiddata traffic handling throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent segments the single global buffer pool into multiple per-thread buffer pools, where each buffer pool is dedicated to a specific thread context. This segmentation eliminates contention between threads for buffer access, allowing parallel processing of network frames without the bottlenecks inherent in a shared buffer structure, thereby increasing throughput while maintaining manageable complexity through modular organization

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements local quality by providing each thread context with its own dedicated buffer pool and associated kernel resources, rather than having all threads share a common pool. This localized resource allocation ensures that each thread has immediate access to the buffer space it needs without waiting for other threads, improving productivity through reduced contention while keeping the overall system complexity distributed and manageable

Inventive Principle:
Principle #3Local quality

2Ease of operation

If a single global buffer pool is used, then ease of operation is improved, but reliability deteriorates due to prioritization issues among multi-threaded processes

Engineering Contradiction:
Improvebuffer allocation managementVSAvoidquality of service differentiation
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

By segmenting the buffer pool into per-thread dedicated buffers, the patent enables reliable quality of service differentiation where each thread can be assigned appropriate buffer resources based on its priority requirements. High-priority threads receive dedicated buffer space that is not subject to contention from lower-priority threads, ensuring reliable service level agreement while maintaining operational simplicity through automatic buffer management

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements preliminary action by pre-allocating buffer pools to each thread context before network processing begins. This pre-allocation ensures that when high-priority storage operations arrive, the corresponding thread contexts already have dedicated buffer resources available, eliminating the need for complex runtime prioritization and ensuring reliable quality of service differentiation from the outset

Inventive Principle:
Principle #10Preliminary action

3Device complexity

If resources are not pre-allocated according to service levels, then device complexity is reduced, but loss of time increases due to delayed handling of high-priority operations

Engineering Contradiction:
Improveresource allocation mechanismVSAvoidstorage operation handling time
Core Design Contradiction:
Device complexityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by pre-allocating buffer pools and kernel resources to each thread context based on their assigned service levels before processing begins. This pre-allocation ensures that when high-priority storage operations arrive, the corresponding thread contexts immediately have the resources needed to process them without delay, significantly reducing loss of time while keeping the resource allocation mechanism relatively simple through automated service-level-based assignment

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10740034B2Front-end quality of service differentiation in data systems
Publication Date: 2020.08.11 LIQID INC
  • US10740034B2 patent drawing
  • US10740034B2 patent drawing
  • US10740034B2 patent drawing

AI summary

Systems, methods, apparatuses, and software for data storage systems are provided herein. In one example, a data storage apparatus includes a processor configured to assign service levels in a queue for handling storage operations directed to one or more data storage drives. The processor can pre-allocate resources in the queue for selected ones of the service levels before ones of the storage operations associated with the selected ones of the service levels are received by the processor. The processor receives the storage operations, and based at least on the service levels, services the storage operations from the queue with the one or more data storage drives.