IP Library Granted Patent US 12,411,712
Granted Patent B2
US 12,411,712 · App. 17/457,230 · Granted Sep 9, 2025

Predictable and adaptive quality of service for storage

Inventors: Pratapa Reddy Vaka (Saratoga, CA); Pradeep Sindhu (Los Altos Hills, CA); Jaspal Kohli (Sunnyvale, CA); Srihari Raju Vegesna (San Jose, CA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5022G06F9/4881H04L67/1097G06F2209/505
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 12,411,712
App. No.
17/457,230
Granted
Sep 9, 2025
Kind
B2
Abstract

This disclosure describes a set of techniques that include establishing and managing quality of service standards across storage cluster resources in a data center. In one example, this disclosure describes a method that includes establishing a quality of service standard for a tenant sharing a storage resource with a plurality of tenants, wherein the storage resource is provided by the plurality of storage nodes in the storage cluster; allocating a volume of storage within the storage cluster, wherein allocating the volume of storage includes identifying a set of storage nodes to provide the storage resource for the volume of storage, and wherein the set of storage nodes are a subset of the plurality of storage nodes; and scheduling operations to be performed by the set of storage nodes for the volume of storage.

Claims (81)

1. A method comprising:

establishing, by a storage cluster having a plurality of storage nodes, a quality of service standard for each of a plurality of tenants sharing a storage resource, wherein the quality of service standard includes a guaranteed allocation of the storage resource for the tenant and a maximum allocation of the storage resource for the tenant, wherein the quality of service standards for the plurality of tenants allow for oversubscription where utilization of the storage resource can exceed 100%, and wherein the storage resource is provided by the plurality of storage nodes in the storage cluster;

allocating, by the storage cluster and based on the quality of service standards, a plurality of volumes of storage within the storage cluster, wherein allocating a volume of the plurality of volumes of storage includes identifying a set of storage nodes to provide the storage resource for the volume of storage, and wherein the set of storage nodes are a subset of the plurality of storage nodes;

upon detecting that utilization of the storage resource is above a predetermined threshold, moving one or more of the plurality of volumes to address a risk that the quality of service standards for the plurality of tenants are not satisfied;

scheduling, by the storage cluster and based on the quality of service standards, operations to be performed by the set of storage nodes for a given volume of storage, wherein scheduling operations includes:

enqueuing, within a first storage node in the set of storage nodes, a plurality of demands to use the storage resource provided by the first storage node;

maintaining a credit count associated with the plurality of demands;

periodically increasing the credit count over time;

dequeuing, based on the increased credit count, one of the plurality of demands to enable an operation to be performed by a data processing unit of the first storage node; and

after the dequeuing, decreasing the credit count; and

executing the enabled operation to be performed by the data processing unit of the first storage node associated with the dequeued one of the plurality of demands.

2. The method of claim 1 , wherein establishing the quality of service standard includes:

establishing, for a first operation type, a first guaranteed allocation of the storage resource for operations of the first operation type for the tenant;

establishing, for the first operation type, a first maximum allocation of the storage resource for operations of the first operation type for the tenant;

establishing, for a second operation type, a second guaranteed allocation of the storage resource for operations of the second operation type for the tenant; and

establishing, for the second operation type, a second maximum allocation of the storage resource for operations of the second operation type for the tenant.

3. The method of claim 1 , wherein establishing the quality of service standard includes:

establishing, for read operations, a guaranteed allocation of the storage resource for read operations for the tenant and a maximum allocation of the storage resource for read operations for the tenant; and

establishing, for write operations, a guaranteed allocation of the storage resource for write operations for the tenant and a maximum allocation of the storage resource for write operations for the tenant.

4. The method of claim 1 , wherein the storage resource is a first storage resource, wherein each of the plurality of tenants share the first storage resource and a second storage resource in the storage cluster, and wherein establishing the quality of service standard includes:

establishing a guaranteed allocation of the second storage resource for the tenant; and

establishing a maximum allocation of the second storage resource for the tenant.

5. The method of claim 1 , wherein the storage resource includes at least one of:

storage capacity, input/output processing cycles, bandwidth, processor processing cycles, or accelerator resources.

6. The method of claim 1 , wherein allocating the volume of the plurality of volumes of storage includes:

maintaining a count associated with the storage resource across the plurality of storage nodes in the storage cluster; and

adjusting the count based on identifying the set of storage nodes to provide the storage resource for the volume of storage.

7. The method of claim 1 , the method further comprising:

deallocating, by the storage cluster, the volume of the plurality of volumes of storage, wherein deallocating the volume includes making at least some resources associated with the set of storage nodes for the volume available to be allocated to a new volume of storage.

8. The method of claim 1 , wherein the plurality of tenants includes a first tenant and a second tenant, the method further comprising:

establishing a first guaranteed allocation of the storage resource for the first tenant, and a first maximum allocation of the storage resource for the first tenant; and

establishing a second guaranteed allocation of the storage resource for the second tenant, and a second maximum allocation of the storage resource for the second tenant,

wherein the first guaranteed allocation is different than the second guaranteed allocation.

9. The method of claim 8 ,

wherein the first maximum allocation is different than the second maximum allocation.

10. A storage cluster comprising:

a network; and

a plurality of computing systems, at least one of the computing systems comprising one or more processors, each interconnected over the network, wherein the plurality of computing systems includes a plurality of storage nodes comprising one or more storage machines, and wherein the plurality of computing systems are collectively configured to:

establish a quality of service standard for each of a plurality of tenants sharing a storage resource, wherein the quality of service standard includes a guaranteed allocation of the storage resource for the tenant and a maximum allocation of the storage resource for the tenant, wherein the quality of service standards for the plurality of tenants allow for oversubscription where utilization of the storage resource can exceed 100%, and wherein the storage resource is provided by the plurality of storage nodes in the storage cluster;

allocate, based on the quality of service standards, a plurality of volumes of storage within the storage cluster, wherein allocating a volume of the plurality of volumes of storage includes identifying a set of storage nodes to provide the storage resource for the volume of storage, and wherein the set of storage nodes are a subset of the plurality of storage nodes;

upon detecting that utilization of the storage resource is above a predetermined threshold, move one or more of the plurality of volumes to address a risk that the quality of service standards for the plurality of tenants are not satisfied;

schedule, based on the quality of service standards, operations to be performed by the set of storage nodes for a given volume of storage, wherein scheduling operations includes:

enqueuing, within a first storage node in the set of storage nodes, a plurality of demands to use the storage resource provided by the first storage node;

maintaining a credit count associated with the plurality of demands;

periodically increasing the credit count over time;

dequeuing, based on the increased credit count, one of the plurality of demands to enable an operation to be performed by a data processing unit of the first storage node; and

after the dequeuing, decreasing the credit count; and

execute the enabled operation to be performed by the data processing unit of the first storage node associated with the dequeued one of the plurality of demands.

11. The storage cluster of claim 10 , wherein to establish the quality of service standard, the computing systems are further configured to:

establish, for a first operation type, a first guaranteed allocation of the storage resource for operations of the first operation type for the tenant;

establish, for the first operation type, a first maximum allocation of the storage resource for operations of the first operation type for the tenant;

establish, for a second operation type, a second guaranteed allocation of the storage resource for operations of the second operation type for the tenant; and

establish, for the second operation type, a second maximum allocation of the storage resource for operations of the second operation type for the tenant.

12. The storage cluster of claim 10 , wherein to establish the quality of service standard, the computing systems are further configured to:

establish, for read operations, a guaranteed allocation of the storage resource for read operations for the tenant and a maximum allocation of the storage resource for read operations for the tenant; and

establish, for write operations, a guaranteed allocation of the storage resource for write operations for the tenant and a maximum allocation of the storage resource for write operations for the tenant.

13. The storage cluster of claim 10 , wherein the resource is a first storage resource, wherein each of the plurality of tenants share the first storage resource and a second storage resource in the storage cluster, and wherein to establish the quality of service standard, the computing systems are further configured to:

establish a guaranteed allocation of the second storage resource for the tenant; and

establish a maximum allocation of the second storage resource for the tenant.

14. The storage cluster of claim 10 , wherein the storage resource includes at least one of:

storage capacity, input/output processing cycles, bandwidth, processor processing cycles, or accelerator resources.

15. The storage cluster of claim 10 , wherein to allocate the volume of the plurality of volumes of storage, the computing systems are further configured to:

maintain a count associated with the storage resource across the plurality of storage nodes in the storage cluster; and

adjust the count based on identifying the set of storage nodes to provide the storage resource for the volume of storage.

16. The storage cluster of claim 10 , wherein the computing systems are further configured to:

deallocate the volume of the plurality of volumes of storage, wherein deallocating the volume includes making at least some resources associated with the set of storage nodes for the volume available to be allocated to a new volume.

17. The storage cluster of claim 10 , wherein the plurality of tenants include a first tenant and a second tenant, and wherein to establish the quality of service standard, the computing systems are further configured to:

establish a first guaranteed allocation of the storage resource for the first tenant, and a first maximum allocation of the storage resource for the first tenant; and

establish a second guaranteed allocation of the storage resource for the second tenant, and a second maximum allocation of the storage resource for the second tenant,

wherein the first guaranteed allocation is different than the second guaranteed allocation.

18. A storage cluster comprising processing circuitry and a system for storing computing instructions, wherein the processing circuitry has access to the system for storing computing instructions and is configured to:

establish a quality of service standard for each of a plurality of tenants sharing a storage resource, wherein the quality of service standard includes a guaranteed allocation of the storage resource for the tenant and a maximum allocation of the storage resource for the tenant, wherein the quality of service standards for the plurality of tenants allow for oversubscription where utilization of the storage resource can exceed 100%, and wherein the storage resource is provided by the plurality of storage nodes in the storage cluster;

allocate, based on the quality of service standards, a plurality of volumes of storage within the storage cluster, wherein allocating a volume of the plurality of volumes of storage includes identifying a set of storage nodes to provide the storage resource for the volume of storage, and wherein the set of storage nodes are a subset of the plurality of storage nodes;

upon detecting that utilization of the storage resource is above a predetermined threshold, move one or more of the plurality of volumes to address a risk that the quality of service standards for the plurality of tenants are not satisfied;

schedule, based on the quality of service standard, operations to be performed by the set of storage nodes for a given volume of storage, wherein scheduling operations includes:

enqueuing, within a first storage node in the set of storage nodes, a plurality of demands to use the storage resource provided by the first storage node;

maintaining a credit count associated with the plurality of demands;

periodically increasing the credit count over time;

dequeuing, based on the increased credit count, one of the plurality of demands to enable an operation to be performed by a data processing unit of the first storage node; and

after the dequeuing, decreasing the credit count; and

execute the enabled operation to be performed by the data processing unit of the first storage node associated with the dequeued one of the plurality of demands.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2022
From: VAKA, PRATAPA REDDY; SINDHU, PRADEEP; KOHLI, JASPAL; VEGESNA, SRIHARI RAJU
To: FUNGIBLE, INC.
Reel/Frame 058695/0671 →
Continuity (1)
Related Publication 20230168934A1 · Jun 1, 2023
References Cited (32)
US 9176708B2 · Gallant et al. · 2015 [cited by applicant]
US 9515956B2 · Hu et al. · 2016 [cited by applicant]
US 10481801B1 · Baitule et al. · 2019 [cited by applicant]
US 10540288B2 · Noureddine et al. · 2020 [cited by applicant]
US 10565112B2 · Noureddine et al. · 2020 [cited by applicant]
US 10574579B2 · Puttagunta et al. · 2020 [cited by applicant]
US 10659254B2 · Sindhu et al. · 2020 [cited by applicant]
US 10686729B2 · Sindhu et al. · 2020 [cited by applicant]
US 10841245B2 · Gray et al. · 2020 [cited by applicant]
US 10929175B2 · Goyal et al. · 2021 [cited by applicant]
US 11048634B2 · Noureddine et al. · 2021 [cited by applicant]
US 11178262B2 · Goel et al. · 2021 [cited by applicant]
US 20030079018A1 · Lolayekar · 2003 [cited by examiner]
US 20030079019A1 · Lolayekar · 2003 [cited by examiner]
US 20030191857A1 · Terrell · 2003 [cited by examiner]
US 20030223445A1 · Lodha · 2003 [cited by examiner]
US 20040133622A1 · Clubb · 2004 [cited by examiner]
US 20040193827A1 · Mogi · 2004 [cited by examiner]
US 20050235072A1 · Smith · 2005 [cited by examiner]
US 20060106749A1 · Ganfield · 2006 [cited by examiner]
US 20070015525A1 · Beming · 2007 [cited by examiner]
US 20100131957A1 · Kami · 2010 [cited by examiner]
US 20120317358A1 · Ando · 2012 [cited by examiner]
US 20140337577A1 · Burton · 2014 [cited by examiner]
US 20190108231A1 · Patterson · 2019 [cited by examiner]
US 20190236150A1 · Zaslavsky · 2019 [cited by examiner]
US 20200167097A1 · Huen et al. · 2020 [cited by applicant]
US 20200183841A1 · Noureddine et al. · 2020 [cited by applicant]
US 20200280462A1 · Sindhu et al. · 2020 [cited by applicant]
US 20200314026A1 · Sindhu et al. · 2020 [cited by applicant]
US 20210349824A1 · Noureddine et al. · 2021 [cited by applicant]
U.S. Appl. No. 17/454,731, filed Nov. 12, 2021, naming inventors Goel et al. [cited by applicant]