A computer program product, comprising a plurality of instructions stored on a non-transient computer-readable storage medium, wherein the instructions are configured to execute a method comprising the steps of:
- determining a first queue depth value;
- processing a first number of I/O requests during a first epoch, wherein the first number of I/O requests does not exceed the first queue depth value;
- evaluating the first queue depth value, wherein
- the evaluating the first queue depth value comprises
- determining a first latency value of a storage tier, wherein
- the first latency value indicates an amount of time that is needed to process an I/O request in the storage tier, and
- determining whether a system capacity increased during the first epoch, wherein
- the determining whether the system capacity increased during the first epoch is based, at least in part, on the first latency value;
- and
- in response to determining that the system capacity increased during the first epoch, dynamically determining a second queue depth value.