Per-thread buffer pools for QoS differentiation in storage systems
Find Innovative SolutionsGenerate 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
Engineering 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
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
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
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
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
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
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
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
Data Source
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.


