Patent ID: 7912951

Claim:
A method for providing quality of service to a plurality of clients accessing a common resource, the common resource being a middle-tier or back-end server, the method comprising: receiving a plurality of IO requests from clients executing as software entities on one host; determining whether a host issue queue maintained by the one host is full, the host issue queue maintaining dispatch and completion information about requests from the clients that are pending at the common resource, the host issue queue being considered full when a number of the requests being maintained by the host issue queue reaches a specified limit, the limit being a window size; separately managing an IO request queue for each client, and populating the issue queue based on contents of the IO request queues; when the host issue queue is not full, entering a new IO request into the host issue queue and issuing the new IO request to the common resource; calculating a current average latency, the current average latency being an average of individual latencies observed in completing the IO requests; calculating an adjusted window size, the adjusted window size being based at least in part on the current average latency, the calculating of the adjusted window size including factoring in an assigned share representing a relative level of priority of the one host as compared to other hosts accessing the common resource, the assigned share being represented by a value β; adjusting the value β based on a participation of each of the clients on the one host; and setting the specified limit to correspond with the adjusted window size.