Adaptive Load Balancing for NVMe Storage MPIO Drivers
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing multi-path input-output (MPIO) techniques with NVMe architecture in storage systems suffer from inefficiencies due to inadequate load balancing and queue management, leading to suboptimal performance and resource utilization.
Innovation Solution
The implementation of an adaptive load balancing mechanism within the MPIO driver that determines IO load weights and queue depth weights for each path, calculating an adaptive weight to select the most efficient path for IO operations, thereby optimizing resource allocation and balancing the load across multiple communication adapters and IO submission queues.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If existing multi-pathing techniques are used with NVMe architecture, then path redundancy is provided, but inefficiencies occur due to inadequate load balancing and queue management
Solution Approach 1:
The patent implements dynamic load balancing by continuously monitoring IO load weights and queue depth weights for each path, and adaptively selecting paths based on current system state. The MPIO driver dynamically adjusts path selection decisions based on real-time metrics rather than using static routing, thereby resolving the contradiction between maintaining path redundancy and achieving optimal IO efficiency.
Solution Approach 2:
The system employs feedback mechanisms by calculating IO load weights based on dispatched operations and queue depth weights based on pending operations. This feedback loop allows the MPIO driver to make informed path selection decisions that optimize performance while maintaining redundancy, addressing the efficiency problem without sacrificing reliability.
2Productivity
If multiple IO submission queues are used across communication adapters, then parallelism and throughput are increased, but load distribution becomes suboptimal without adaptive management
Solution Approach 1:
The patent changes the parameter of path selection from static to dynamic by introducing adaptive weight calculations. The MPIO driver computes IO load weights and queue depth weights as variables that change based on current system state, enabling optimal load distribution across multiple IO submission queues while maintaining high throughput.
Solution Approach 2:
The system performs preliminary assessment of path conditions by calculating weights for each path before IO operation dispatch. This preliminary action allows the MPIO driver to pre-determine the optimal path based on current load and queue depth, ensuring efficient load distribution across multiple queues before operations are submitted.
3Ease of manufacture
If path selection is based on static routing, then implementation is simple, but performance is suboptimal due to inability to adapt to changing system conditions
Solution Approach 1:
The patent transitions from static routing to dynamic path selection by implementing adaptive weight-based decision making. The MPIO driver continuously evaluates IO load weights and queue depth weights, making path selection a dynamic process that adapts to changing system conditions, thereby improving performance while maintaining reasonable implementation complexity.
Solution Approach 2:
The system implements self-service path selection where the MPIO driver autonomously monitors system state, calculates weights, and selects optimal paths without external intervention. This self-managing approach improves performance by adapting to real-time conditions while keeping the implementation relatively simple through automated decision-making.
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 plurality of communication adapters, each of which comprises a corresponding plurality of input-output (IO) submission queues, and a multi-path input-output (MPIO) driver configured to obtain an IO operation that targets a given logical volume of the storage system and to identify a plurality of paths between the host device and the given logical volume. Each identified path comprises a communication adapter and a corresponding IO submission queue of that communication adapter. An IO load weight and a queue depth weight are determined for each identified path. An adaptive weight for each identified path is determined as a function of the determined IO load weight and the determined queue depth weight for that identified path and a target path is selected from the identified paths based at least in part on the determined adaptive weights.


