IP Library Granted Patent US 10,394,606
Granted Patent B2
US 10,394,606 · App. 15/270,791 · Granted Aug 27, 2019

Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy

Inventors: Sourabh Yerfule (San Jose, CA); Mandar Samant (San Jose, CA); Gurunatha Karaje (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F9/5038G06F3/061G06F3/067G06F3/0659G06F9/4881H04L67/1097H04L67/2842H04L67/2852H04L67/32H04L67/322
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,394,606
App. No.
15/270,791
Granted
Aug 27, 2019
Kind
B2
Abstract

Methods and systems are presented for allocating resources based on dynamic weight accumulation performed in a bottom-up fashion in a scheduler hierarchy of a storage system. One method includes assigning weights to leaf schedulers at a bottom level of schedulers in a scheduler hierarchy comprising a plurality of levels of schedulers. Between two levels, each parent scheduler is associated with a unique plurality of children schedulers. For each leaf scheduler that is active, the method includes propagating a corresponding weight of a corresponding leaf scheduler to every higher level in the scheduler hierarchy, such that a corresponding scheduler at a corresponding level is associated with an accumulation of weights of its descendent schedulers. The method includes distributing resources assigned to the scheduler hierarchy based on accumulated weights at each level, such that the corresponding scheduler is proportioned resources based on the accumulation of weights of its descendent schedulers.

Claims (55)

1. A method for resource allocation, the method comprising:

assigning a plurality of weights to a plurality of child schedulers, each child scheduler associated with multiplier the child schedulers being in a scheduler hierarchy with a plurality of parent schedulers, wherein each of the plurality of parent schedulers is associated with a unique group of the child schedulers;

for each child scheduler that is active, propagating a value based on the assigned weight of the child scheduler upwards in said scheduler hierarchy through a respective chain of schedulers to cause a given scheduler at a given level in the respective chain of schedulers to be associated with an accumulation of values based on the weights of descendent schedulers of the given scheduler along the respective chain;

for the given scheduler at the given level, factoring in the multiplier applied to said accumulated values of the descendant schedulers in the respective chain of schedulers to generate a multiplied value;

propagating said multiplied value upwards through said respective chain of schedulers; and

distribute a given set of resources assigned to said scheduler hierarchy based on multiplied value at each level of schedulers to cause the schedulers in the scheduler hierarchy to be proportioned resources from said given set of resources based on said multiplied value.

2. The method of claim 1 , further comprising applying the multiplier to the given scheduler, wherein the given schedule is located above a level containing the child scheduler in the scheduler hierarchy.

3. The method of claim 1 , wherein said multiplier comprises a number greater than or equal to 1.

4. The method of claim 1 , wherein said scheduler hierarchy comprises:

a top level comprising a foreground input/output (IO) scheduler;

a first sublevel below and adjacent to said top level, wherein said first sublevel comprises a Read Admit Scheduler, a Write Admit Scheduler, and a Continuing Scheduler;

a second sublevel below and adjacent to said first sublevel, wherein said second sublevel comprises a plurality of folders, each of the plurality of folders being associated with one of said Read Admit Scheduler and Write Admit Scheduler; and

a third sublevel below and adjacent to said second sublevel, wherein said third sublevel comprises a plurality of volumes, each of the plurality of volumes being associated with one of said plurality of folders and said Continuing scheduler.

5. The method of claim 4 , wherein said first sublevel further comprises a Remote Write Admit Scheduler.

6. The method of claim 1 , further comprising:

triggering accumulation of said plurality of values periodically based on a predetermined period.

7. The method of claim 6 , wherein said predetermined period comprises 200 ms.

8. The method of claim 1 , further comprising:

triggering accumulation of said plurality of values after a change in status of a scheduler in said scheduler hierarchy.

9. The method of claim 1 , wherein said given set of resources comprises a plurality of CPU cycles.

10. The method of claim 1 , wherein said scheduler hierarchy comprises:

a top level comprising a data disk input/output (IO) scheduler.

11. The method of claim 1 , wherein, for each child scheduler that is active, the value based on the assigned weight is equivalent to at least one of the assigned weight or a dynamic weight based on the assigned weight.

12. A storage system comprising:

a non-volatile memory (NVRAM) for storing incoming write requests;

a solid state device (SSD) configured as read cache memory;

a hard disk drive (HDD) for permanent data storage; and

a central processing unit (CPU), wherein a CPU scheduler of said CPU is to:

assigning a plurality of weights to a plurality of child schedulers, each child scheduler associated with multiplier, the bottom schedulers being in a scheduler hierarchy with a plurality of parent schedulers, wherein each of the plurality of parent schedulers is associated with a unique group of the bottom schedulers;

for each bottom scheduler that is active, propagate a value based on the assigned weight of the bottom scheduler upwards in said scheduler hierarchy through a respective chain of schedulers to cause a given scheduler at a given level in the respective chain of schedulers to be associated with an accumulation of values based on the weights of descendent schedulers of the given scheduler along the respective chain; and

for the given scheduler at the given level, factoring in the multiplier applied to said accumulated values of the descendant schedulers in the respective chain of schedulers to generate a multiplied value;

propagate said multiplied value upwards through said respective chain of schedulers; and

distribute a given set of resources assigned to said scheduler hierarchy based on multiplied value at each level of schedulers to cause the schedulers in the scheduler hierarchy to be proportioned resources from said given set of resources based on said multiplied value.

13. The storage system of claim 11 , wherein said scheduler hierarchy comprises:

a top level comprising a foreground input/output (IO) scheduler;

a first sublevel below and adjacent to said top level, wherein said first sublevel comprises a Read Admit Scheduler, a Write Admit Scheduler, and a Continuing Scheduler;

a second sublevel below and adjacent to said first sublevel, wherein said second sublevel comprises a plurality of folders, each of the plurality of folders being associated with one of said Read Admit Scheduler and Write Admit Scheduler; and

a third sublevel below and adjacent to said second sublevel, wherein said third sublevel comprises a plurality of volumes, each of the plurality of volumes being associated with one of said plurality of folders and said Continuing scheduler.

14. The storage system of claim 11 , wherein said CPU scheduler accumulates said plurality of values periodically based on a predetermined period.

15. The storage system of claim 11 , wherein said CPU scheduler accumulates said plurality of values based on an event.

16. The storage system of claim 12 , wherein, for each bottom scheduler that is active, the value based on the assigned weight is equivalent to at least one of the assigned weight or a dynamic weight based on the assigned weight.

17. A non-transitory computer-readable storage medium storing a computer program for allocating cycles of a CPU (central processing unit), wherein the computer program, when executed by the CPU is to cause the CPU to:

assigning a plurality of weights to a plurality of child schedulers, each child scheduler associated with multiplier, the bottom schedulers being in a scheduler hierarchy with a plurality of parent schedulers, wherein each of the plurality of parent schedulers is associated with a unique group of the bottom schedulers;

for each bottom scheduler that is active, propagate a value based on the assigned weight of the bottom scheduler upwards in said scheduler hierarchy through a respective chain of schedulers to cause a given scheduler at a given level in the respective chain of schedulers to be associated with an accumulation of values based on the weights of descendent schedulers of the given scheduler along the respective chain;

for the given scheduler at the given level, factor in the multiplier applied to said accumulated values of the descendant schedulers in the respective chain of schedulers to generate a multiplied value;

propagate said multiplied value upwards through said respective chain of schedulers; and

distribute a given set of resources assigned to said scheduler hierarchy based on multiplied value at each level of schedulers to cause the schedulers in the scheduler hierarchy to be proportioned resources from said given set of resources based on said multiplied value.

18. The storage medium of claim 17 , wherein said scheduler hierarchy comprises:

a top level comprising a foreground input/output (IO) scheduler;

a first sublevel below and adjacent to said top level, wherein said first sublevel comprises a Read Admit Scheduler, a Write Admit Scheduler, and a Continuing Scheduler;

a second sublevel below and adjacent to said first sublevel, wherein said second sublevel comprises a plurality of folders, each of the plurality of folders being associated with one of said Read Admit Scheduler and Write Admit Scheduler; and

a third sublevel below and adjacent to said second sublevel, wherein said third sublevel comprises a plurality of volumes, each of the plurality of volumes being associated with one of said plurality of folders and said Continuing scheduler.

19. The storage medium of claim 17 , further comprising wherein the computer program is further to cause the CPU to:

trigger accumulation of said plurality of values periodically based on a predetermined period.

20. The storage medium of claim 17 , wherein, for each bottom scheduler that is active, the value based on the assigned weight is equivalent to at least one of the assigned weight or a dynamic weight based on the assigned weight.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2016
From: YERFULE, SOURABH; SAMANT, MANDAR; KARAJE, GURUNATHA
To: NIMBLE STORAGE, INC.
Reel/Frame 039815/0222 →
Continuity (3)
Continuation In Part 14748179 · Jun 23, 2015
Provisional Application 62058015 · Sep 30, 2014
Related Publication 20170010919A1 · Jan 12, 2017