LRU Buffer Segmentation for Parallel IO Contention
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current storage virtualization technologies fail to fully utilize the parallel processing potential of multicore platforms, leading to bottlenecks and contention in executing IO requests, as they typically process IO operations serially despite having multiple cores available.
Innovation Solution
The implementation of an LRU buffer management system that configures a doubly linked list of segments, allowing parallel access by multiple CPUs, and includes a head and tail portion for efficient allocation and freeing of buffers, enabling parallel execution of IO requests and bypassing traditional OS IO scheduling for faster processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If traditional sequential IO processing is used, then system simplicity is maintained, but parallel processing potential of multicore platforms is not realized
Solution Approach 1:
The LRU buffer is segmented into multiple doubly-linked lists, each associated with a specific CPU core. This segmentation allows each core to independently manage its own buffer list without contention, enabling parallel processing while maintaining LRU eviction semantics across the entire buffer pool.
Solution Approach 2:
The patent introduces a new dimension to buffer management by organizing buffers not just in a single LRU sequence, but in a multi-dimensional structure where buffers are distributed across multiple CPU-specific lists. This allows parallel access from multiple cores simultaneously without interfering with each other.
2Productivity
If a single LRU buffer list is used, then buffer management is simple, but contention occurs when multiple CPUs access it simultaneously
Solution Approach 1:
The buffer management structure is segmented into multiple independent doubly-linked lists, one for each CPU core. This eliminates contention by providing each core with its own dedicated access path to the buffer pool, while still maintaining global LRU eviction semantics through periodic consolidation or coordinated management.
Solution Approach 2:
The patent introduces intermediary structures (multiple CPU-specific buffer lists) that mediate between the multiple CPUs and the shared buffer pool. These intermediaries allow parallel access while maintaining the overall LRU buffer management semantics, acting as a buffer between the competing access patterns.
3Speed
If OS IO scheduling is used, then request processing follows traditional sequencing, but latency increases due to serial execution
Solution Approach 1:
The patent extracts the buffer management functionality from the traditional OS IO scheduling path, creating a dedicated parallel buffer management system that operates independently of the serial OS scheduling layer. This allows IO requests to be serviced in parallel without being constrained by traditional OS scheduling sequences.
Solution Approach 2:
Buffers are pre-allocated and organized in CPU-specific lists before IO requests arrive. This preliminary organization allows immediate parallel access when requests come in, eliminating the need for serial allocation and reducing latency.
Data Source
AI summary
An LRU buffer configuration for performing parallel IO operations is disclosed. In one example, the LRU buffer configuration is a doubly linked list of segments. Each segment is also a doubly linked list of buffers. The LRU buffer configuration includes a head portion and a tail portion, each including several slots (pointers to segments) respectively accessible in parallel by a number of CPUs in a multicore platform. Thus, for example, a free buffer may be obtained for a calling application on a given CPU by selecting a head slot corresponding to the given CPU, identifying the segment pointed to by the selected head slot, locking that segment, and removing the buffer from the list of buffers in that segment. Buffers may similarly be returned according to slots and corresponding segments and buffers at the tail portion.


