IP Library Granted Patent US 10,637,917
Granted Patent B2
US 10,637,917 · App. 15/966,210 · Granted Apr 28, 2020

Host device load balancing using port load reported by storage system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,637,917
App. No.
15/966,210
Granted
Apr 28, 2020
Kind
B2
Abstract

An apparatus in one embodiment comprises a host device configured to communicate over a network with a storage system comprising a plurality of storage devices. The host device includes a set of input-output queues and a multi-path input-output driver configured to select input-output operations from the set of input-output queues for delivery to particular ports of the storage system over the network in accordance with a load balancing algorithm. The multi-path input-output driver is further configured to receive notification from one or more of the ports indicating that at least a given one of the ports has exceeded a designated threshold level of port load, and to adjust the load balancing algorithm based at least in part on the received notification. The notification illustratively comprises one of at least first and second possible codes for interpretation by the multi-path input-output driver, with the first code being associated with a current port load value for the given port, and the second code being associated with a wait time before sending additional input-output operations to the given port.

Claims (55)

1. An apparatus comprising:

a host device configured to communicate over a network with a storage system comprising a plurality of storage devices;

the host device comprising:

a set of input-output queues; and

a multi-path input-output driver configured to select input-output operations from the set of input-output queues for delivery to particular ports of the storage system over the network in accordance with a load balancing algorithm;

wherein the multi-path input-output driver is further configured:

to receive notification from one or more of the ports indicating that at least a given one of the ports has exceeded a designated threshold level of port load;

to determine whether the notification comprises a first code or a second code; and

to adjust the load balancing algorithm based at least in part on the received notification;

wherein adjusting the load balancing algorithm comprises implementing a first type of adjustment to the load balancing algorithm responsive to receipt of the first code in the notification and implementing a second type of adjustment to the load balancing algorithm different than the first type of adjustment responsive to receipt of the second code in the notification, the second code being different from the first code;

wherein the first code indicates that a particular portion of the notification contains a current port load value for the given port and wherein the multi-path input-output driver provides the first type of adjustment based at least in part on the current port load value; and

wherein the second code indicates that a particular portion of the notification contains information specifying an amount of time that the multi-path input-output driver should wait before sending additional input-output operations to the given port and wherein the multi-path input-output driver provides the second type of adjustment based at least in part on the specified amount of time.

2. The apparatus of claim 1 further comprising one or more additional host devices each configured to communicate over the network with the storage system and wherein each additional host device comprises a set of input-output queues and a multi-path input-output driver configured to select input-output operations from the set of input-output queues for delivery to particular ports of the storage system over the network.

3. The apparatus of claim 1 wherein the multi-path input-output driver of the host device is configured to periodically send at least one predetermined command to one or more of the ports requesting a current port load value.

4. The apparatus of claim 3 wherein the predetermined command comprises at least one of the following commands:

a vendor unique mode sense command;

a vendor unique log sense command; and

another type of vendor unique command.

5. The apparatus of claim 3 wherein the multi-path input-output driver of the host device is configured to utilize current port load values received from respective ones of the ports in response to the one or more predetermined commands to substantially evenly distribute processing of the input-output operations across the ports of the storage system in accordance with the load balancing algorithm.

6. The apparatus of claim 1 wherein the notification comprises a current port load value for the given port that is greater than the threshold level of port load.

7. The apparatus of claim 1 wherein the notification comprises an indication that at least one input-output operation previously delivered to the given port by the host device is designated as a failed input-output operation.

8. The apparatus of claim 7 wherein the multi-path input-output driver is configured to resend the input-output operation designated as a failed input-output operation in the notification from the given port to another one of the ports.

9. The apparatus of claim 1 wherein the multi-path input-output driver is configured to send a first additional input-output operation to the given port after waiting the specified amount of time.

10. The apparatus of claim 9 wherein the multi-path input-output driver is configured to resume sending other additional input-output operations to the given port in accordance with the load balancing algorithm responsive to receipt of an affirmative acknowledgement status from the given port for the first additional input-output operation.

11. A method comprising:

configuring a multi-path input-output driver of a host device to select input-output operations from a set of input-output queues of the host device for delivery to particular ports of a storage system over a network in accordance with a load balancing algorithm;

wherein the multi-path input-output driver in conjunction with selecting the input-output operations performs the following steps:

receiving notification from one or more of the ports indicating that at least a given one of the ports has exceeded a designated threshold level of port load;

determining whether the notification comprises a first code or a second code; and

adjusting the load balancing algorithm based at least in part on the received notification;

wherein adjusting the load balancing algorithm comprises implementing a first type of adjustment to the load balancing algorithm responsive to receipt of the first code in the notification and implementing a second type of adjustment to the load balancing algorithm different than the first type of adjustment responsive to receipt of the second code in the notification, the second code being different from the first code;

wherein the first code indicates that a particular portion of the notification contains a current port load value for the given port and wherein the multi-path input-output driver provides the first type of adjustment based at least in part on the current port load value; and

wherein the second code indicates that a particular portion of the notification contains information specifying an amount of time that the multi-path input-output driver should wait before sending additional input-output operations to the given port and wherein the multi-path input-output driver provides the second type of adjustment based at least in part on the specified amount of time.

12. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by a host device comprising a multi-path input-output driver and a set of input-output queues, the host device being configured to communicate over a network with a storage system, causes the multi-path input-output driver:

to select input-output operations from the set of input-output queues for delivery to particular ports of the storage system in accordance with a load balancing algorithm;

to receive notification from one or more of the ports indicating that at least a given one of the ports has exceeded a designated threshold level of port load;

to determine whether the notification comprises a first code or a second code; and

to adjust the load balancing algorithm based at least in part on the received notification;

wherein adjusting the load balancing algorithm comprises implementing a first type of adjustment to the load balancing algorithm responsive to receipt of the first code in the notification and implementing a second type of adjustment to the load balancing algorithm different than the first type of adjustment responsive to receipt of the second code in the notification, the second code being different from the first code;

wherein the first code indicates that a particular portion of the notification contains a current port load value for the given port and wherein the multi-path input-output driver provides the first type of adjustment based at least in part on the current port load value; and

wherein the second code indicates that a particular portion of the notification contains information specifying an amount of time that the multi-path input-output driver should wait before sending additional input-output operations to the given port and wherein the multi-path input-output driver provides the second type of adjustment based at least in part on the specified amount of time.

13. The computer program product of claim 12 wherein the multi-path input-output driver of the host device is configured to periodically send at least one predetermined command to one or more of the ports requesting a current port load value.

14. The computer program product of claim 13 wherein the predetermined command comprises at least one of the following commands:

a vendor unique mode sense command;

a vendor unique log sense command; and

another type of vendor unique command.

15. The computer program product of claim 13 wherein the multi-path input-output driver of the host device is configured to utilize current port load values received from respective ones of the ports in response to the one or more predetermined commands to substantially evenly distribute processing of the input-output operations across the ports of the storage system in accordance with the load balancing algorithm.

16. The method of claim 11 wherein the multi-path input-output driver of the host device is configured to periodically send at least one predetermined command to one or more of the ports requesting a current port load value.

17. The method of claim 16 wherein the predetermined command comprises at least one of the following commands:

a vendor unique mode sense command;

a vendor unique log sense command; and

another type of vendor unique command.

18. The method of claim 16 wherein the multi-path input-output driver of the host device is configured to utilize current port load values received from respective ones of the ports in response to the one or more predetermined commands to substantially evenly distribute processing of the input-output operations across the ports of the storage system in accordance with the load balancing algorithm.

19. The method of claim 11 wherein the notification comprises a current port load value for the given port that is greater than the threshold level of port load.

20. The method of claim 11 wherein the notification comprises an indication that at least one input-output operation previously delivered to the given port by the host device is designated as a failed input-output operation.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (046366/0014) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0093 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 046366/0014 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2018
From: MALLICK, SANJIB; RAO, VINAY G.; JUNG, JAEYOO; DON, ARIEH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045666/0991 →