Dynamic load balancing by analyzing performance of volume to quality of service
Systems and methods for quality of service management are provided. According to one embodiment, a non-transitory computer-readable medium comprises instructions that when executed by the processing resource cause the processing resource to generate an inertial parameter that represents a resistance to moving a first volume from a first protection domain in a distributed storage system and rebalance, when the inertial parameter indicates the first volume should not be removed from the protection domain, a compute load between one or more available protection domains having capacity for additional volumes. The compute load includes one of a plurality of volumes other than the volume.
1 . A method performed by one or more processing resources of one or more computer systems, the method comprising:
generating an inertial parameter for a volume of a plurality of volumes based on one or more real-time performance metrics for one or more compute processes of the volume,
wherein the inertial parameter represents a resistance to moving the volume from a protection domain of a plurality of protection domains in a distributed storage system;
determining a dynamic threshold, wherein the dynamic threshold is lower when heavyweight background operations are running than when lightweight background operations are running;
identifying a subset of volumes, of the plurality of volumes, for rebalancing between the plurality of protection domains, including determining to exclude the volume from the subset of volumes when the inertial parameter exceeds the dynamic threshold; and
rebalancing the subset of volumes between available protection domains of the plurality of protection domains, wherein the available protection domains include ones of the plurality of protection domains having capacity for additional volumes.
2 . The method of claim 1 , wherein generating an inertial parameter comprises:
determining the one or more real-time performance metrices including at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume; and
applying a weighting factor to the at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume.
3 . The method of claim 1 , wherein the one or more real-time performance metrics include a volume size, and generating the inertial parameter comprises:
determining a score from the one or more performance metrics; and
dividing the score by a parameter corresponding to a square root of the volume size to calculate the inertial parameter.
4 . The method of claim 1 , comprising:
collecting the one or more real-time performance metrics on a periodic basis, wherein a period for the periodic basis is dependent on operational conditions of the volume.
5 . The method of claim 1 , comprising:
determining a performance capacity of one or more protection domains; and
identifying the available protection domains from the one or more protection domains based on the available protection domains having sufficient performance capacity to accept additional volumes.
6 . The method of claim 1 , wherein generating the inertial parameter comprises:
determining an exponential moving average across the one or more performance metrics; and
basing the inertial parameter on the exponential moving average.
7 . The method of claim 1 , wherein the one or more real-time performance metrics comprises at least one of a percentage of processor utilization metric, an input/output (I/O) throughput metric, an average I/O size metric, an average read latency, or an average write latency.
8 . A system comprising:
a processing resource; and
a non-transitory computer-readable medium, coupled to the processing resource, having stored therein instructions that when executed by the processing resource cause the processing resource to:
generate an inertial parameter representing a resistance to moving a volume from a storage server node in a distributed storage system, wherein generation of the inertial parameter includes:
collecting one or more real-time performance metrics from which the inertial parameter is generated,
determining a score from the one or more performance metrics, and
dividing the score by a root configurable depending on influence desired for a volume size;
determine a subset of volumes should be rebalanced within the distributed storage system, which includes a determination to exclude that the volume from the subset of volumes based on the inertial parameter; and
rebalance the subset of volumes between one or more available storage server nodes in the distributed storage system that have capacity for additional volumes.
9 . The system of claim 8 , wherein the determination to exclude the volume comprises:
lowering a dynamic threshold when heavyweight background operations are running; and
determining the inertial parameter exceeds the dynamic threshold.
10 . The system of claim 8 , wherein generation of the inertial parameter comprises:
determining at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume; and
generating a weighting factor to the at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume.
11 . The system of claim 8 , wherein generation of the inertial parameter comprises:
determining an exponential moving average across the one or more performance metrics; and
basing the inertial parameter on the exponential moving average.
12 . The system of claim 8 , wherein generation of the inertial parameter comprises:
collecting one or more real-time performance metrics from which the inertial parameter is generated;
weighing historic metrics of the real-time performance metrics greater than recent metrics of the real-time performance metrics.
13 . The system of claim 8 , wherein the instructions cause the processing resource to:
collect real-time performance metrics from which the inertial parameter is generated on a periodic basis, wherein a period for the periodic basis is dependent on operational conditions of the volume.
14 . The system of claim 8 , wherein the instructions cause the processing resource to:
determine a performance capacity of one or more storage server nodes; and
identify the available storage server nodes from the one or more storage server nodes based on the available storage server nodes having sufficient performance capacity to accept additional volumes.
15 . A non-transitory computer-readable storage medium embodying a set of instructions, which when executed by a processing resource cause the processing resource to:
generate an inertial parameter that represents a resistance to moving a first volume from a first protection domain in a distributed storage system;
determining a dynamic threshold, wherein the dynamic threshold is lower when heavyweight background operations are running than when lightweight background operations are running;
determining the inertial parameter exceeds the dynamic threshold; and
rebalance, when the inertial parameter exceeds the dynamic threshold, a compute load between one or more available protection domains having capacity for additional volumes, wherein the compute load includes one of a plurality of volumes other than the volume.
16 . The non-transitory computer-readable storage medium of claim 15 , wherein the one or more compute processes comprises at least one of a bin synchronization process, a slice balancing process, or a cluster fault monitoring process.
17 . The non-transitory computer-readable storage medium of claim 15 , wherein generation of the inertial parameter comprises:
determining at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume; and
generating a weighting factor to the at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume.
18 . The non-transitory computer-readable storage medium of claim 15 , wherein generation of the inertial parameter comprises:
determining at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume; and
generating a weighting factor to the at least one of a volume size, a volume activity level, or a number of client sessions operating on the volume.
19 . The non-transitory computer-readable storage medium of claim 15 , wherein generation of the inertial parameter comprises:
periodically collecting one or more real-time performance metrics on which the inertial parameter is based, wherein a period for the collecting is dependent on operational conditions of the volume.
20 . The non-transitory computer-readable storage medium of claim 15 , wherein the instructions cause the processing resource to:
determine a performance capacity of one or more protection domains; and
identify the available protection domains from the one or more protection based on the available protection domains having sufficient performance capacity to accept additional volumes.
21 . A method performed by one or more processing resources of one or more computer systems, the method comprising:
determining an exponential moving average across one or more performance metrics for one or more compute processes of a volume of a plurality of volumes;
generating an inertial parameter for the volume based on the exponential moving average,
wherein the inertial parameter represents a resistance to moving the volume from a protection domain of a plurality of protection domains in a distributed storage system;
identifying a subset of volumes, of the plurality of volumes, for rebalancing between the plurality of protection domains, including determining to exclude the volume from the subset of volumes based on the inertial parameter; and
rebalancing the subset of volumes between available protection domains of the plurality of protection domains, wherein the available protection domains include ones of the plurality of protection domains having capacity for additional volumes.