FIELD

One or more aspects of embodiments according to the present disclosure relate to data storage systems using non-volatile memory express over fabrics, and more particularly to a system and method for improving the performance of such data storage systems.

BACKGROUND

Existing non-volatile memory express over fabrics (NVMeoF) systems may, in some circumstances, exhibit poor performance. This may be caused by one or both of the following problems. First, some NVMeoF implementations may waste system resources by (i) maintaining extra idled queue pairs, or (ii) underutilizing the system due to not maintaining enough queue pairs. Second, some NVMeoF implementations may not have a suitable flow control scheme to prevent the queue pair service rate from being slowed down due to high I/O pressure (e.g., a large number of queued I/O jobs in the queue pair).

Thus, there is a need for a system and method for improving the performance of non-volatile memory express over fabrics data storage systems.

SUMMARY

According to an embodiment of the present invention, there is provided a method for managing input output queue pairs, the method including: calculating a system utilization ratio, the system utilization ratio being a ratio of: an arrival rate of input output requests, to a service rate; determining that: the system utilization ratio has exceeded a first threshold utilization during a time period exceeding a first threshold length, and adding a new queue pair is expected to improve system performance; and adding the new queue pair.

In some embodiments, the method further includes: determining that: the system utilization ratio has remained below a second threshold utilization during a time period exceeding the first threshold length, and deleting a queue pair is expected to improve system performance; and deleting the queue pair.

In some embodiments, the method further includes: determining that: the system utilization ratio is below the first threshold utilization and above a third threshold utilization; and adjusting a lower queue height threshold to be equal to a function of a service rate.

In some embodiments, the method further includes: determining that: a submission queue of a first queue pair of the input output queue pairs is unlocked, and a centralized queue stores an input output request, and a height of the submission queue is less than an upper queue height threshold; and enqueueing the input output request.

In some embodiments, the method further includes: determining that a current height of the submission queue equals the upper queue height threshold; and locking the submission queue.

In some embodiments, the method further includes: determining that the current height of the submission queue does not exceed the lower queue height threshold; and unlocking the submission queue.

In some embodiments, the function is a numerically found minimum of a model of an average processing delay per input output request.

In some embodiments, the model is a polynomial fit of historical average processing delays per input output request as a function of the service rate and the lower queue height threshold.

In some embodiments, the method further includes: determining that a time interval having a length exceeding a second threshold length has elapsed since a most recent use of numerical minimization to determine and set a number of queue pairs; performing numerical minimization of a model of an average processing delay per input output request as a function of the number of queue pairs, to calculate a number of queue pairs to be used during operation; and adding zero or more new queue pairs or deleting zero or more queue pairs so that the number of queue pairs is equal to the calculated number of queue pairs to be used during operation.

According to an embodiment of the present invention, there is provided a system, including: a processing circuit, and one or more persistent storage devices, the processing circuit being configured to: instantiate one or more input output queue pairs for storing: input output requests to be sent to the one or more persistent storage devices, and command completions received from the one or more persistent storage devices, calculate a system utilization ratio, the system utilization ratio being a ratio of: an arrival rate of input output requests, to a service rate; determine that: the system utilization ratio has exceeded a first threshold utilization during a time period exceeding a first threshold length, and adding a new queue pair is expected to improve system performance; and add a new queue pair.

In some embodiments, the processing circuit is further configured to: determine that: the system utilization ratio has remained below a second threshold utilization during a time period exceeding the first threshold length, and deleting a queue pair is expected to improve system performance; and delete a queue pair.

In some embodiments, the processing circuit is further configured to: determine that the system utilization ratio is below the first threshold utilization and above a third threshold utilization; and adjust a lower queue height threshold to be equal to a function of a service rate.

In some embodiments, the processing circuit is further configured to: determine that: a submission queue of a first queue pair of the input output queue pairs is unlocked, a centralized queue stores an input output request, and a height of the submission queue is less than an upper queue height threshold; and enqueue the input output request.

In some embodiments, the processing circuit is further configured to: determine that a current height of the submission queue equals the upper queue height threshold; and lock the submission queue.

In some embodiments, the processing circuit is further configured to: determine that the current height of the submission queue does not exceed the lower queue height threshold; and unlock the submission queue.

In some embodiments, the function is a numerically found minimum of a model of an average processing delay per input output request.

In some embodiments, the model is a polynomial fit of historical average processing delays per input output request as a function of the service rate and the lower queue height threshold.

In some embodiments, the processing circuit is further configured to: determine that a time interval having a length exceeding a second threshold length has elapsed since a most recent use of numerical minimization to determine and set a number of queue pairs; perform numerical minimization of a model of an average processing delay per input output request as a function of the number of queue pairs, to calculate a number of queue pairs to be used during operation; and add zero or more new queue pairs or deleting zero or more queue pairs so that the number of queue pairs is equal to the calculated number of queue pairs to be used during operation.

According to an embodiment of the present invention, there is provided a system, including: means for processing, and one or more persistent storage devices, the means for processing being configured to: instantiate one or more input output queue pairs for storing: input output requests to be sent to the one or more persistent storage devices, and command completions received from the one or more persistent storage devices, calculate a system utilization ratio, the system utilization ratio being a ratio of: an arrival rate of input output requests, to a service rate; determine that: the system utilization ratio has exceeded a first threshold utilization during a time period exceeding a first threshold length, and adding a new queue pair is expected to improve system performance; and add a new queue pair.

In some embodiments, the means for processing is further configured to: determine that: the system utilization ratio has remained below the first threshold utilization during a time period exceeding the first threshold length, and deleting a queue pair is expected to improve system performance; and delete a queue pair.

