Parallel Data Stack Lockless Threading I/O Contention
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In data storage systems, contention between control and data paths due to synchronization primitives degrades I/O performance and scalability, as they contend for shared data objects, leading to delays and reduced parallelism.
Innovation Solution
A parallel data stack is implemented with a lockless threading model where control and data paths operate independently without synchronization primitives, allowing multiple data paths to access shared data structures simultaneously without inconsistency, eliminating the need for synchronization between control and data paths.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If synchronization primitives are used between control path and data path to ensure data object consistency, then data integrity is maintained, but I/O performance degrades and scalability is reduced due to contention and overhead
Solution Approach 1:
The system segments the data path into multiple independent threads, each with its own work queue. This segmentation allows parallel processing of I/O operations without requiring synchronization between threads, as each thread operates independently on its own queue. The control path is also segmented into multiple control path threads, each managing specific data objects. This segmentation eliminates contention while maintaining data integrity through ownership boundaries.
Solution Approach 2:
The patent introduces work queues as intermediary structures between the control path and data path. Instead of direct synchronization between control and data path threads, management operations are submitted to work queues that data path threads process asynchronously. This intermediary mechanism decouples the control and data paths, eliminating the need for synchronization primitives while ensuring operations are completed in order.
2Stability of the object's composition
If synchronization primitives are acquired by data path processes to protect data objects, then consistency is ensured, but overhead increases and parallelism is reduced
Solution Approach 1:
Each data path thread serves itself by processing operations from its own dedicated work queue. The thread independently manages its queue without needing to acquire locks or synchronize with other threads. This self-service approach eliminates synchronization overhead while maintaining consistency through the ordered processing of queue elements and the ownership model where each thread is responsible for its own queue's data objects.
3Productivity
If control path and data path access the same data objects, then resource utilization is improved, but contention increases leading to delays
Solution Approach 1:
The system segments data objects into groups owned by specific control path threads. Each control path thread manages a subset of data objects, and data path threads process operations on these objects without contention because the ownership relationships are established through the work queue mechanism. This segmentation allows multiple control and data path threads to operate simultaneously on different data objects, improving resource utilization without access delays.
4Reliability
If synchronization mechanisms are implemented to protect data object accesses, then race conditions are prevented, but performance and parallelism are degraded
Solution Approach 1:
The system dynamically assigns ownership of data objects to control path threads based on the operation type and data object characteristics. This dynamic ownership assignment allows the system to adapt to different access patterns and minimize contention. The work queue mechanism dynamically routes operations to appropriate data path threads, enabling parallel processing while preventing race conditions through the ownership model rather than static synchronization mechanisms.
Data Source
AI summary
According to one embodiment, a method includes: assigning a target port to a control path thread of an application to access data stored in a storage device of a data storage system; creating a storage device path corresponding to the target port; running the data path thread to access the data stored in the storage device; and running a control path thread to process a management work request to operate on one of objects including the target port, the storage device path, and the storage device. The control path thread is configured to send the management work request to the data path thread asynchronously. The data path thread is configured to complete the management work request and send a management work request completion response to the control path thread asynchronously.


