Load balancing technique for a storage array
First Claim
1. A method comprising:
- receiving from a host, a plurality of write requests directed towards a logical unit (LUN), each write request having data, the write request processed at a storage system having a memory coupled to a processor via a memory bus, the processor coupled to at least one storage controller attached to at least one shelf of solid state drives (SSDs);
generating an input/output (I/O) workload from the plurality of write requests, the I/O workload including a de-duplication operation;
looking ahead into an I/O queue having the I/O workload to predict an expected load on each I/O channel of a plurality of I/O channels included in the at least one storage controller; and
controlling a back-end latency of the I/O workload to the SSDs by load balancing the I/O workload among the plurality of I/O channels based on the expected work load on each I/O channel, thereby for the plurality of write requests maintaining a predictable front-end latency to the host.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique for load balancing uses heuristic-based algorithms with respect to input/output (I/O) latency of workloads destined to storage devices, e.g., solid state drives (SSDs), of a storage array attached to a storage system. Illustratively, “front-end” requests received from a host result in a back-end workload as those requests are processed by a storage I/O stack of the storage system and stored on the storage array. Accordingly, the technique maintains a consistent latency for the host requests (front-end) to control latency for the back-end workload. The load balancing technique illustratively load balances fixed (back-end) workloads having similar I/O sizes and I/O patterns. Illustratively, the technique balances the workloads across a plurality of storage ports over one or more I/O paths to the SSDs. Access to the SSDs may then be distributed among the storage ports.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving from a host, a plurality of write requests directed towards a logical unit (LUN), each write request having data, the write request processed at a storage system having a memory coupled to a processor via a memory bus, the processor coupled to at least one storage controller attached to at least one shelf of solid state drives (SSDs); generating an input/output (I/O) workload from the plurality of write requests, the I/O workload including a de-duplication operation; looking ahead into an I/O queue having the I/O workload to predict an expected load on each I/O channel of a plurality of I/O channels included in the at least one storage controller; and controlling a back-end latency of the I/O workload to the SSDs by load balancing the I/O workload among the plurality of I/O channels based on the expected work load on each I/O channel, thereby for the plurality of write requests maintaining a predictable front-end latency to the host. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method comprising:
-
receiving from a host, a plurality of write request directed towards a logical unit (LUN), each write request having data, the write request processed at a storage system having a memory coupled to a processor via a memory bus, the processor coupled to at least one storage controller attached to at least one shelf of multi-stream solid state drives (SSDs); generating an input/output (I/O) workload from the plurality of write requests, the workload including the data and metadata associated with the data; and controlling a back-end latency of the I/O workload to the SSDs by load balancing the I/O workload among a plurality of I/O channels included in the at least one storage controller such that the plurality of write requests maintain a predictable front-end latency to the host, wherein a first stream for each SSD is used for the data and a second stream different from the first stream for each SSD is used for the metadata.
-
-
12. A system comprising:
-
a storage system having a memory connected to a processor via a bus; at least one storage shelf coupled to the processor via at least one storage controller, each storage shelf having a plurality of solid state drives (SSDs); a storage I/O stack executing on the processor of the storage system, the storage I/O stack configured to; receive from a host, a plurality of write requests directed towards a logical unit (LUN), each write request having data; generate an input/output (I/O) workload from the plurality of write requests, the I/O workload including a de-duplication operation; look ahead into an I/O queue having the I/O workload to predict an expected load on each I/O channel of a plurality of I/O channels included in the at least one storage controller; and control a back-end latency of the I/O workload to the SSDs by load balancing the I/O workload among the plurality of I/O channels based on the expected work load on each I/O channel, thereby for the plurality of write requests maintaining a predictable front-end latency to the host. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
Specification