IP Library Granted Patent US 10,423,447
Granted Patent B2
US 10,423,447 · App. 15/411,231 · Granted Sep 24, 2019

Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization

Inventors: Sourabh Yerfule (San Jose, CA); Gurunatha Karaje (San Jose, CA); Mandar Samant (San Jose, CA); Sagar Trehan (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F9/4881G06F3/061G06F3/067G06F3/0655G06F3/0659G06F3/0688G06F9/5027G06F9/5038H04L67/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,423,447
App. No.
15/411,231
Granted
Sep 24, 2019
Kind
B2
Abstract

Methods for scheduling operations in a scheduler hierarchy of a storage system. One method includes scheduling a first IO having a first cost at a first flow scheduler of a first flow configured to schedule IOs accessing a volume as executed on a first core processor. A global cost is updated with the first cost, wherein the global cost is shared by a plurality of flows of a plurality of core processors. An intervening cost is determined of at least one IO possibly scheduled before the first set of IOs by one or more flow schedulers of one or more flows configured to schedule IOs accessing the volume as executed on the plurality of core processors. A current cost is updated based on the first cost and the intervening cost. IOs and MBPS limits are set independently for the volume, each controlling scheduling through a corresponding accumulating current cost.

Claims (46)

1. A method for scheduling operations in a storage system including a scheduler hierarchy, comprising:

scheduling a first Input/Output (IO) of a first flow scheduler of a first flow, the first flow scheduler to schedule IOs accessing a volume as executed on a first core processor, wherein the first IO has a first cost corresponding to access to the volume by the first IO;

updating a global cost with the first cost, wherein the global cost is an accumulating cost that corresponds to access to the volume by IOs scheduled by a plurality of flow schedulers of a plurality of core processors, including the first core processor, of a CPU;

determining an intervening cost of at least one IO scheduled by one or more of the plurality of flow schedulers based on the global cost for execution by the plurality of core processors; and

updating an accumulating current cost for the first flow scheduler based on the first cost and the intervening cost.

2. The method of claim 1 , wherein the first cost is an IO count.

3. The method of claim 1 , wherein the first cost is a number of bytes.

4. The method of claim 1 , wherein the first flow scheduler comprises a write flow scheduler or a read flow scheduler.

5. The method of claim 1 , wherein determining an intervening cost comprises:

determining a difference between a global cost last seen by the first flow scheduler and the updated global cost, wherein the difference comprises the intervening cost.

6. The method of claim 5 , further comprising:

updating the global cost last seen with the updated global cost.

7. The method of claim 1 , further comprising:

independently setting IOPS and MBPS limits for the volume, each controlling scheduling of IOs through a corresponding accumulating current cost.

8. The method of claim 1 , further comprising:

independently setting IOPS and MBPS limits for a folder, each controlling scheduling of IOs through a corresponding accumulating current cost, wherein the folder includes one or more of volumes and folders in combination.

9. A storage system, comprising:

a non-volatile memory (NVRAM) to store incoming write requests;

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

a hard disk drive (HDD); and

a central processing unit (CPU) comprising a plurality of core processors and to execute instructions to:

schedule a first Input/Output (IO) of a first flow scheduler of a first flow, the first flow scheduler to schedule IOs accessing a volume as executed on a first core processor, wherein the first IO has a first cost corresponding to access to the volume by the first IO;

update a global cost with the first cost, wherein the global cost is an accumulating cost that corresponds to access to the volume by IOs scheduled by a plurality of flow schedulers of the plurality of core processors, including the first core processor;

determine an intervening cost of at least one IO scheduled by one or more of the plurality of flow schedulers based on the global cost for execution by the plurality of core processors, wherein the plurality of flow schedulers are to schedule IOs accessing the volume as executed on the plurality of core processors; and

update an accumulating current cost for the first flow scheduler based on the first cost and the intervening cost.

10. The storage system of claim 9 , wherein the first cost is an IO count.

11. The storage system of claim 9 , wherein the first cost is a number of bytes.

12. The storage system of claim 9 , wherein the first flow scheduler comprises a write flow scheduler or a read flow scheduler.

13. The storage system of claim 9 , wherein, to determine the intervening cost, the CPU to execute the instructions to:

determine a difference between a global cost last seen by the first flow scheduler and the updated accumulating global cost, wherein the difference comprises the intervening cost.

14. The storage system of claim 13 , the CPU to execute the instructions to:

update the global cost last seen with the updated accumulating global cost.

15. A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to:

schedule a first Input/Output (IO) of a first flow scheduler of a first flow, the first flow scheduler to schedule IOs accessing a volume as executed on a first core processor, wherein the first IO has a first cost corresponding to access to the volume by the first IO;

update a global cost with the first cost, wherein the global cost is an accumulating cost that corresponds to access to the volume by IOs by a plurality of flow schedulers of a plurality of core processors of a CPU, including the first core processor;

determine an intervening cost of at least one IO scheduled by one or more of the plurality of flow schedulers based on the global cost for execution by the plurality of core processors, wherein the plurality of flow schedulers are to schedule IOs accessing the volume as executed on the plurality of core processors; and

update an accumulating current cost for the first flow scheduler based on the first cost and the intervening cost.

16. The computer-readable medium of claim 15 , wherein the first cost is an IO count.

17. The computer-readable medium of claim 15 , wherein the first cost is a number of bytes.

18. The computer-readable medium of claim 15 , wherein the first flow comprises a write flow scheduler or a read flow scheduler.

19. The computer-readable medium of claim 15 , wherein to determine the intervening cost, the instructions are further to cause the processor to:

determine a difference between a global cost last seen by the first flow scheduler and the updated accumulating global cost, wherein the difference comprises the intervening cost.

20. The computer-readable medium of claim 19 , wherein the instructions are further to cause the processor to:

update the global cost last seen with the updated accumulating global cost.

21. The computer-readable medium of claim 15 , wherein the instructions are further to cause the processor to:

independently set IOPS and MBPS limits for the volume, each controlling scheduling of IOs through a corresponding accumulating current cost.

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 Jan 20, 2017
From: YERFULE, SOURABH; KARAJE, GURUNATHA; SAMANT, MANDAR; TREHAN, SAGAR
To: NIMBLE STORAGE, INC.
Reel/Frame 041028/0041 →
Continuity (4)
Continuation In Part 15277779 · Sep 27, 2016
Continuation 14748179 · Jun 23, 2015
Provisional Application 62058015 · Sep 30, 2014
Related Publication 20170132040A1 · May 11, 2017