IP Library Granted Patent US 11,144,226
Granted Patent B2
US 11,144,226 · App. 16/459,166 · Granted Oct 12, 2021

Intelligent path selection and load balancing

Inventors: Zhengyu Yang (San Diego, CA); Nithya Ramakrishnan (San Diego, CA); Allen Russell Andrews (El Cajon, CA); Sudheendra Grama Sampath (San Diego, CA); T. David Evans (San Diego, CA); Clay Mayers (San Diego, CA)
Assignee: Samsung Electronics Co., Ltd.
G06F3/0635G06F3/0604G06F3/0611G06F3/0659G06F3/0673G06F13/1668G06F13/4027
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 11,144,226
App. No.
16/459,166
Granted
Oct 12, 2021
Kind
B2
Abstract

A method for dispatching input-output in a system. The system may include a centralized processing circuit, a plurality of persistent storage targets, a first input-output processor, and a second input-output processor. The method may include determining whether the first input-output processor is connected to a first target of the plurality of persistent storage targets; determining whether the second input-output processor is connected to the first target; and in response to determining that both the first input-output processor is connected to the first target, and the second input-output processor is connected to the first target, dispatching a first plurality of input-output requests, each to either the first input-output processor or the second input-output processor, the dispatching being in proportion to a service rate of the first input-output processor to the first target and a service rate of the second input-output processor to the first target, respectively.

Claims (114)

1. A method for dispatching input-output, the method comprising:

determining whether a first input-output processor is connected to a first target of a plurality of persistent storage targets, the first input-output processor being connected to a first sub-set of the plurality of persistent storage targets;

determining whether a second input-output processor is connected to the first target, the second input-output processor being connected to a second sub-set of the plurality of persistent storage targets comprising at least one persistent storage target that is different from at least one of the first sub-set; and

in response to determining that

the first input-output processor is connected to the first target from among the first sub-set, and

the second input-output processor is connected to the first target from among the second sub-set,

dispatching a first plurality of input-output requests, each to either

the first input-output processor or

the second input-output processor,

the dispatching being in proportion to

a service rate of the first input-output processor to the first target and

a service rate of the second input-output processor to the first target, respectively.

2. The method of claim 1 , wherein the first input-output processor and the second input-output processor are connected by a bridge, the method further comprising:

in response to determining that:

the first input-output processor is connected to the first target; and

the second input-output processor is connected to the first target via the bridge,

estimating a first service rate, for a configuration in which input-output requests are dispatched to only the first input-output processor;

estimating a second service rate, for a configuration in which input-output requests are dispatched to both the first input-output processor and the second input-output processor;

comparing the first service rate with the second service rate;

in response to determining that the first service rate exceeds the second service rate, dispatching a second plurality of input-output requests to the first input-output processor, and

in response to determining that the first service rate does not exceed is less than the second service rate:

dispatching a first subset of a third plurality of input-output requests to the first input-output processor; and

dispatching a second subset of the third plurality of input-output requests to the second input-output processor.

3. The method of claim 2 , wherein the estimating of the second service rate comprises:

finding a maximum value of a service rate function over an adjustable parameter,

the adjustable parameter being a fraction of input-output requests to be dispatched to the second input-output processor,

the service rate function being a model of a total service rate to the first target.

4. The method of claim 3 , wherein the service rate function is a function of a penalty function, the penalty function being a function for estimating a reduction in service rate from the first input-output processor directly to the first target as a result of routing of input-output requests:

through the second input-output processor,

through the bridge, and

through the first input-output processor,

to the first target.

5. The method of claim 4 , wherein the finding of the maximum value comprises using a gradient descent method.

6. The method of claim 4 , wherein the penalty function is a polynomial function.

7. The method of claim 4 , wherein the penalty function is a linear function.

8. The method of claim 1 , further comprising:

in response to determining that:

the first target is target-unreachable by the first input-output processor; and

the first target is target-unreachable by the second input-output processor,

returning an error message.

9. The method of claim 1 , wherein the first input-output processor comprises a first network interface card and a second network interface card,

the method further comprising dispatching a first input-output request of the first plurality of input-output requests and a second input-output request of the first plurality of input-output requests to the first network interface card and the second network interface card in a round robin sequence.

10. The method of claim 1 , wherein the first input-output processor comprises a first network interface card comprising a first queue pair and a second queue pair,

the method further comprising

estimating a workload spike degree, the workload spike degree being a measure of workload of the first network interface card according to centralized queue job numbers of the first network interface card, and

selecting a strategy for assigning each incoming input-output request to a respective queue pair of the first network interface card.

11. The method of claim 10 , wherein the estimating of the workload spike degree comprises calculating the workload spike degree according to:

centralized queue queued job numbers at a first time and a second time,

mean centralized queue queued job numbers at the first and the second time, and SCV is a squared coefficient of variation.

12. The method of claim 10 , further comprising: comparing the workload spike degree with a first threshold; and

estimating a length of the first queue pair,

wherein, in response to determining that the workload spike degree exceeds the first threshold, the method further comprises:

assigning each incoming input-output request to queue pairs in the first network interface card in a round robin sequence.

13. The method of claim 12 , further comprising:

comparing the workload spike degree with a second threshold, the second threshold being less than the first threshold;

estimating a length of the first queue pair; and

estimating a length of the second queue pair,

wherein, in response to determining that the workload spike degree is less than the first threshold and that the workload spike degree exceeds the second threshold, the method further comprises:

assigning an incoming input-output request to a shorter one of the first queue pair and the second queue pair.

14. The method of claim 12 , wherein the estimating the length of the first queue pair comprises estimating the length of the first queue pair based on a number of input-output requests in the first queue pair.

15. The method of claim 12 , wherein the estimating of the length of the first queue pair comprises estimating the length of the first queue pair based on an actual workload amount in the first queue pair.

16. A system comprising:

a centralized processing circuit,

a plurality of persistent storage targets,

a first input-output processor, and

a second input-output processor, the centralized processing circuit being configured to:

determine whether the first input-output processor is connected to a first target of the plurality of persistent storage targets, the first input-output processor being connected to a first sub-set of the plurality of persistent storage targets;

determine whether the second input-output processor is connected to the first target, the second input-output processor being connected to a second sub-set of the plurality of persistent storage targets comprising at least one persistent storage target that is different from at least one of the first sub-set; and

in response to determining that

the first input-output processor is connected to the first target from among the first sub-set, and

the second input-output processor is connected to the first target from among the second sub-set,

dispatch a first plurality of input-output requests, each to either

the first input-output processor or

the second input-output processor,

the dispatching being in proportion to

a service rate of the first input-output processor to the first target and

a service rate of the second input-output processor to the first target, respectively.

17. The system of claim 16 , further comprising a bridge connecting the first input-output processor and the second input-output processor,

wherein the centralized processing circuit is further configured to:

in response to determining that:

the first input-output processor is connected to the first target; and

the second input-output processor is connected to the first target via the bridge,

estimate a first service rate, for a configuration in which input-output requests are dispatched to only the first input-output processor;

estimate a second service rate, for a configuration in which input-output requests are dispatched to both the first input-output processor and the second input-output processor;

compare the first service rate with the second service rate;

in response to determining that the first service rate exceeds the second service rate, dispatch a second plurality of input-output requests to the first input-output processor, and

in response to determining that the first service rate does not exceed is less than the second service rate:

dispatch a first subset of a third plurality of input-output requests to the first input-output processor, and

dispatch a second subset of the third plurality of input-output requests to the second input-output processor.

18. The system of claim 17 , wherein the estimating of the second service rate comprises:

finding a maximum value of a service rate function over an adjustable parameter,

the adjustable parameter being a fraction of input-output requests to be dispatched to the second input-output processor,

the service rate function being a model of a total service rate to the first target.

19. The system of claim 18 , wherein the service rate function is a function of a penalty function, the penalty function being a function for estimating a reduction in service rate from the first input-output processor directly to the first target as a result of routing of input-output requests:

through the second input-output processor,

through the bridge, and

through the first input-output processor,

to the first target.

20. A method for dispatching input-output in a system, the system comprising:

centralized means for processing,

a plurality of persistent storage targets,

a first input-output processor, and

a second input-output processor, the method comprising:

determining whether the first input-output processor is connected to a first target of the plurality of persistent storage targets, the first input-output processor being connected to a first sub-set of the plurality of persistent storage targets;

determining whether the second input-output processor is connected to the first target, the second input-output processor being connected to a second sub-set of the plurality of persistent storage targets comprising at least one persistent storage target that is different from at least one of the first sub-set;

in response to determining that both

the first input-output processor is connected to the first target from among the first sub-set, and

the second input-output processor is connected to the first target from among the second sub-set,

dispatching a first plurality of input-output requests, each to either

the first input-output processor or

the second input-output processor,

the dispatching being in proportion to

a service rate of the first input-output processor to the first target and

a service rate of the second input-output processor to the first target, respectively.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2019
From: YANG, ZHENGYU; RAMAKRISHNAN, NITHYA; ANDREWS, ALLEN RUSSELL; SAMPATH, SUDHEENDRA GRAMA; EVANS, T. DAVID; MAYERS, CLAY
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 050876/0025 →
Continuity (2)
Provisional Application 62832616 · Apr 11, 2019
Related Publication 20200326868A1 · Oct 15, 2020
Cited By (1)
US 12,681,668