BACKGROUND

Storing and safeguarding electronic content may be beneficial in modern business and elsewhere. Accordingly, various methodologies may be employed to protect and distribute such electronic content.

Determining a total number of “tokens” that represent the processing capacity of storage array cannot be programmed easily though conventional algorithms due to ever-changing front workloads and internal background processing jobs. As such, incorrectly determining a “token pool size” representative of the processing capacity of the storage may cause issues with a resource allocator that enforces quality-of-service (QoS) between volume priorities by allocating the “tokens” to particular IO requests.

SUMMARY OF DISCLOSURE

In one example implementation, a computer-implemented method executed on a computing device may include, but is not limited to, defining a token pool size for a storage system token pool associated with a storage system. An input/output (IO) processing load for the storage system may be determined. The token pool size for the storage system token pool associated with the storage system may be dynamically adjusted based upon, at least in part, one or more changes in the IO processing load determined for the storage system.

One or more of the following example features may be included. Determining the IO processing load for the storage system may include determining one or more of: a data path latency, an IO rate, and an IO queue time for the storage system. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include one or more of: determining whether an IO rate slope is one of: up, down, and constant; determining whether an IO queue time slope is one of: up, down, and constant; and determining whether the data path latency is one of: increasing, downward, and constant. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is upward and that the IO queue time slope is up; and incrementing the token pool size for the storage system token pool associated with the storage system by a first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is downward and that the IO queue time slope is downward; and decrementing the token pool size for the storage system token pool associated with the storage system by the first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is constant and that the IO queue time slope is one of upward and constant; and one of: incrementing the token pool size for the storage system token pool associated with the storage system by a second amount when the data latency is increasing; and decrementing the token pool size for the storage system token pool associated with the storage system by the second amount when the data latency is one of downward and constant. One or more tokens from the storage system token pool associated with the storage system may be allocated for executing one or more IO requests based upon, at least in part, the token pool size and one or more priority levels associated with the one or more IO requests.

In another example implementation, a computer program product resides on a computer readable medium that has a plurality of instructions stored on it. When executed by a processor, the instructions cause the processor to perform operations that may include, but are not limited to, defining a token pool size for a storage system token pool associated with a storage system. An input/output (IO) processing load for the storage system may be determined. The token pool size for the storage system token pool associated with the storage system may be dynamically adjusted based upon, at least in part, one or more changes in the IO processing load determined for the storage system.

One or more of the following example features may be included. Determining the IO processing load for the storage system may include determining one or more of: a data path latency, an IO rate, and an IO queue time for the storage system. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include one or more of: determining whether an IO rate slope is one of: up, downward, and constant; determining whether an IO queue time slope is one of: up, downward, and constant; and determining whether the data path latency is one of: increasing, downward, and constant. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is upward and that the IO queue time slope is up; and incrementing the token pool size for the storage system token pool associated with the storage system by a first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is downward and that the IO queue time slope is downward; and decrementing the token pool size for the storage system token pool associated with the storage system by the first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is constant and that the IO queue time slope is one of upward and constant; and one of: incrementing the token pool size for the storage system token pool associated with the storage system by a second amount when the data latency is increasing; and decrementing the token pool size for the storage system token pool associated with the storage system by the second amount when the data latency is one of downward and constant. One or more tokens from the storage system token pool associated with the storage system may be allocated for executing one or more IO requests based upon, at least in part, the token pool size and one or more priority levels associated with the one or more IO requests.

In another example implementation, a computing system includes at least one processor and at least one memory architecture coupled with the at least one processor, wherein the at least one processor is configured to define a token pool size for a storage system token pool associated with a storage system. The at least one processor may be further configured to determine an input/output (IO) processing load for the storage system. The at least one processor may be further configured to dynamically adjust the token pool size for the storage system token pool associated with the storage system based upon, at least in part, one or more changes in the IO processing load determined for the storage system.

One or more of the following example features may be included. Determining the IO processing load for the storage system may include determining one or more of: a data path latency, an IO rate, and an IO queue time for the storage system. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include one or more of: determining whether an IO rate slope is one of: up, downward, and constant; determining whether an IO queue time slope is one of: up, downward, and constant; and determining whether the data path latency is one of: increasing, downward, and constant. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is upward and that the IO queue time slope is up; and incrementing the token pool size for the storage system token pool associated with the storage system by a first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is downward and that the IO queue time slope is downward; and decrementing the token pool size for the storage system token pool associated with the storage system by the first amount. Dynamically adjusting the token pool size for the storage system token pool associated with the storage system based upon, at least in part, the one or more changes in the IO processing load determined for the storage system may include: determining that the IO rate slope is constant and that the IO queue time slope is one of upward and constant; and one of: incrementing the token pool size for the storage system token pool associated with the storage system by a second amount when the data latency is increasing; and decrementing the token pool size for the storage system token pool associated with the storage system by the second amount when the data latency is one of downward and constant. One or more tokens from the storage system token pool associated with the storage system may be allocated for executing one or more IO requests based upon, at least in part, the token pool size and one or more priority levels associated with the one or more IO requests.

The details of one or more example implementations are set forth in the accompanying drawings and the description below. Other possible example features and/or possible example advantages will become apparent from the description, the drawings, and the claims. Some implementations may not have those possible example features and/or possible example advantages, and such possible example features and/or possible example advantages may not necessarily be required of some implementations.

