US 12,411,712 B2
Predictable and adaptive quality of service for storage
Pratapa Reddy Vaka, Saratoga, CA (US); Pradeep Sindhu, Los Altos Hills, CA (US); Jaspal Kohli, Sunnyvale, CA (US); and Srihari Raju Vegesna, San Jose, CA (US)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Dec. 1, 2021, as Appl. No. 17/457,230.
Prior Publication US 2023/0168934 A1, Jun. 1, 2023
Int. Cl. G06F 9/50 (2006.01); G06F 9/48 (2006.01); H04L 67/1097 (2022.01)
CPC G06F 9/5022 (2013.01) [G06F 9/4881 (2013.01); H04L 67/1097 (2013.01); G06F 2209/505 (2013.01)] 18 Claims
OG exemplary drawing
 
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.