Multipath I/O Driver Workload Prioritization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing storage systems face challenges in optimizing input-output (IO) processing performance across multiple distinct applications sharing a network, leading to suboptimal performance due to the lack of prioritization of IO workloads.
Innovation Solution
Implementing a multipath layer with a multi-path input-output (MPIO) driver that prioritizes IO operations based on application priority by allocating dispatch resources to different application buckets, allowing for efficient delivery of IO operations across selected paths in the network.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If dispatch resources are allocated equally to all applications, then system simplicity is maintained, but IO processing performance for high-priority applications deteriorates
Solution Approach 1:
The dispatch resources are segmented into multiple dispatchers, with each dispatcher responsible for a specific priority level. This segmentation allows the system to allocate resources differently based on application priority without requiring complex centralized allocation logic, thus improving IO processing performance for high-priority applications while maintaining manageable system complexity
Solution Approach 2:
Different qualities of service are provided to different applications based on their priority levels. High-priority applications receive dedicated dispatchers with higher resource allocation, while low-priority applications share remaining resources. This local differentiation resolves the contradiction by allowing performance optimization for critical applications without uniformly increasing system complexity
2Productivity
If more dispatch resources are allocated to high-priority applications, then IO processing performance for critical applications improves, but resource bursts from low-priority workloads worsen
Solution Approach 1:
The system dynamically adjusts resource allocation based on priority levels rather than using static allocation. Each dispatcher dynamically manages its allocated resources and can adapt to changing workload conditions. This dynamic approach allows the system to prevent resource bursts from low-priority applications while maintaining high performance for critical applications
Solution Approach 2:
The multipath layer implements feedback mechanisms where dispatchers monitor their workload and resource usage. When resource bursts are detected from low-priority applications, the system can adjust allocation in real-time. This feedback control resolves the contradiction by preventing resource bursts while maintaining high-priority application performance
3Productivity
If application priority levels are implemented, then IO workload prioritization improves, but system complexity increases
Solution Approach 1:
The multipath layer is segmented into multiple priority levels, with each level having its own dispatcher. This segmentation simplifies the prioritization logic by breaking down the complex task of managing all applications into smaller, manageable priority-based subsets, thus improving workload prioritization efficiency without proportionally increasing overall system complexity
Solution Approach 2:
The priority-based dispatcher structure serves multiple functions: it performs load balancing across paths, implements quality of service differentiation, and provides fault tolerance. This multi-functionality resolves the contradiction by achieving workload prioritization while using the same infrastructure for other essential functions, thereby limiting the net increase in system complexity
Data Source
AI summary
An apparatus comprises a host device configured to communicate over a network with a storage system. The host device comprises a multipath input-output driver configured to control delivery of input-output operations from the host device to the storage system over selected ones of a plurality of paths through the network. The input-output operations being generated by a plurality of applications of the host device and the multipath input-output driver having a plurality of dispatch resources. The host device is further configured to establish a plurality of application buckets for respective different application priority levels; and to allocate one or more dispatch resources to one or more of the plurality of applications depending upon the respective different application priority levels. In addition, the host device is configured to assign different ones of the applications of the host device to different ones of the application buckets. For a given one of the input-output operations, the host device is further configured to identify its corresponding one of the application buckets and utilize one or more of the allocated dispatch resources of the corresponding application bucket to control delivery of the given input-output operation to the storage system.


