Quality of service management
First Claim
1. A method for providing quality of service to a plurality of hosts accessing a common resource, the common resource being a middle-tier or back-end server, the method comprising:
- receiving from a client an IO request at one host of the plurality of hosts, the client being one client of a plurality of clients, the plurality of clients are virtual machines executing on the one host by way of virtualization software logically interposed and interfacing with the virtual machines and system hardware of the one host, each virtual machine having a guest operating system and at least an application;
determining whether an issue queue maintained by the one host is full, the issue queue maintaining dispatch and completion information about IO requests from the clients that have already been dispatched to and are pending at the common resource, the issue queue being considered full when a number of the IO requests for which dispatch and completion information is being maintained by the issue queue reaches a specified limit, the specified limit being a window size;
issuing the IO request to the common resource when the issue queue is not full the issue queue being individually used by the one host to determine when to issue the IO request from the one host;
adding an entry for the IO request to the issue queue upon issuing the IO request to the common resource, wherein entries in the issue queue include IO requests that have been dispatched but not completed, wherein completed IO requests are removed from the issue queue;
calculating a current average latency observed at the one host, the current average latency being an average of individual latencies observed in completing the IO requests; and
calculating an adjusted window size, the adjusted window size being based at least in part on the current average latency; and
setting the specified limit to correspond with the adjusted window size to control the number of IO requests that are added to the issue queue by the one host.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for providing quality of service to a plurality of hosts accessing a common resource is described. The common resource may be a middle-tier or back-end server. A client IO request is received at one host of the plurality of hosts from one of a plurality clients executing as software entities on respective hosts. The host determines whether an issue queue is full. The IO request is issued to the common resource when the issue queue is not full. A current average latency observed at the host and an adjusted window size is calculated, based at least in part on the current average latency. The issue queue is resized to correspond with the adjusted window size.
47 Citations
18 Claims
-
1. A method for providing quality of service to a plurality of hosts accessing a common resource, the common resource being a middle-tier or back-end server, the method comprising:
-
receiving from a client an IO request at one host of the plurality of hosts, the client being one client of a plurality of clients, the plurality of clients are virtual machines executing on the one host by way of virtualization software logically interposed and interfacing with the virtual machines and system hardware of the one host, each virtual machine having a guest operating system and at least an application; determining whether an issue queue maintained by the one host is full, the issue queue maintaining dispatch and completion information about IO requests from the clients that have already been dispatched to and are pending at the common resource, the issue queue being considered full when a number of the IO requests for which dispatch and completion information is being maintained by the issue queue reaches a specified limit, the specified limit being a window size; issuing the IO request to the common resource when the issue queue is not full the issue queue being individually used by the one host to determine when to issue the IO request from the one host; adding an entry for the IO request to the issue queue upon issuing the IO request to the common resource, wherein entries in the issue queue include IO requests that have been dispatched but not completed, wherein completed IO requests are removed from the issue queue; calculating a current average latency observed at the one host, the current average latency being an average of individual latencies observed in completing the IO requests; and calculating an adjusted window size, the adjusted window size being based at least in part on the current average latency; and setting the specified limit to correspond with the adjusted window size to control the number of IO requests that are added to the issue queue by the one host. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A non-transitory computer-readable storage medium embodying program instructions for providing quality of service to a plurality of hosts accessing a common resource, the common resource being a middle-tier or back-end server, the program instructions causing the hosts to execute a method, the method comprising:
-
receiving from a client an IO request, the client being one client of a plurality of clients, the plurality of clients are virtual machines executing by way of virtualization software logically interposed and interfacing with the virtual machines and system hardware of the one host; the program instructions are integrated with or operably linked to the virtualization software; each virtual machine has a guest operating system and at least an application; maintaining an issue queue containing dispatch and completion information about IO requests from the clients that have already been dispatch to and are pending at the common resource; determining whether the issue queue is full, the issue queue being considered full when a number of the IO requests for which dispatch and completion information is being maintained by the issue queue reaches a specified limit, the specified limit being a window size; issuing the IO request to the common resource only when the issue queue is not full, the issue queue being individually used by the one host to determine when to issue the IO request from the one host; adding an entry for the IO request to the issue queue upon issuing the IO request to the common resource, wherein entries in the issue queue include IO requests that have been dispatched but not completed, wherein completed IO requests are removed from the issue queue; calculating a current average latency observed at the one host, the current average latency being an average amount of time for a request issued to the common resource to be fulfilled by the common resource; calculating an adjusted window size, the adjusted window size being based at least in part on the current average latency; and setting the specified limit to correspond with the adjusted window size to control the number of IO requests that are added to the issue queue by the one host. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification