Storage Controller Load Balancing via Channel Workload Thresholds
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Storage devices face challenges in load balancing due to resource limitations, leading to uneven workload distribution across channels, resulting in idle periods and excessive workloads, which affects channel availability.
Innovation Solution
A storage device with a controller that manages workloads by queuing commands in a pending queue when a channel's workload exceeds a threshold, allocating descriptors only when the workload is appropriate, thereby optimizing channel availability through load balancing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If commands are randomly allocated to channels without workload checking, then command processing speed is improved, but workload imbalance occurs causing idle periods and excessive workloads on certain channels
Solution Approach 1:
The storage controller checks the workload of each channel before allocating commands, using feedback from workload monitoring to make dynamic allocation decisions. This prevents allocating commands to channels that have already reached threshold workload, thereby avoiding workload imbalance while maintaining high command processing speed.
Solution Approach 2:
The command allocation system dynamically adjusts channel selection based on real-time workload conditions. Instead of static or random allocation, the controller adapts its allocation strategy by monitoring channel workloads and selecting appropriate channels dynamically, ensuring both high productivity and reliable channel availability.
2Reliability
If workload monitoring and threshold checking are implemented, then channel availability is improved, but device complexity increases
Solution Approach 1:
The workload management function is segmented into distinct components: workload checking, threshold comparison, and conditional command allocation. This modular approach allows the controller to implement reliable workload monitoring through discrete, manageable functions rather than a monolithic complex system.
Solution Approach 2:
The controller performs preliminary workload checking before command allocation, preventing workload imbalance before it occurs. This proactive approach simplifies the overall system by avoiding the need for complex remedial mechanisms that would be required if imbalance already existed.
3Reliability
If commands are queued in pending queue instead of immediate allocation, then workload balance is improved, but processing time increases
Solution Approach 1:
The pending queue serves as an intermediary mechanism that temporarily holds commands when channels are unavailable. This mediator approach allows the system to maintain workload balance while minimizing processing time delays, as commands are quickly transferred to available channels rather than undergoing complex reallocation processes.
Solution Approach 2:
The controller periodically checks the pending queue and allocates commands to channels as they become available. This periodic action ensures workload balance is maintained while processing time is minimized, as commands in the pending queue are quickly dispatched when channel capacity is freed up.
Data Source
AI summary
Disclosed is a storage device including a nonvolatile memory and a storage controller connected to the nonvolatile memory through a plurality of channels and controlling the nonvolatile memory. The storage controller is configured to receive a command from a host device, check a workload of a mapping channel, to which the command is to be allocated, from among the plurality of channels, and queue the command without allocating the command to the mapping channel in response to the workload of the mapping channel exceeding a threshold workload, increase the workload of the mapping channel in response to the workload of the mapping channel not being greater than the threshold workload, and allocate a descriptor for performing an operation according to the command to the command.


