Distributed policy-based provisioning and enforcement for quality of service
AssigneeVMware, Inc.
InventorsWilliam Earl, Christos Karamanolis
Life of this patent
Estimating the term…
Abstract
Embodiments of the disclosure provide techniques for measuring congestion and controlling quality of service to a shared resource. A module that interfaces with the shared resource monitors the usage of the shared resource by accessing clients. Upon detecting that the rate of usage of the shared resource has exceeded a maximum rate supported by the shared resource, the module determines and transmits a congestion metric to clients that are currently attempting to access the shared resource. Clients, in turn determine a delay period based on the congestion metric prior to attempting another access of the shared resource.
Claims20
A computer-implemented method for handling a storage input/output (I/O) operation originating from a virtual machine (VM) and destined for a virtual disk, the VM running on virtualization software of a first host that is part of a cluster of host computers that includes the first host and a second host, each host having its own local physical storage resources, the virtualization software of the first host containing a first driver, the method comprising:
- receiving, by the first driver, the I/O operation;
- retrieving from the I/O operation an identifier for a virtual disk object representing the virtual disk, the virtual disk object being composed of virtual component objects, the virtual component objects being mappable to any available local physical storage resources throughout the cluster of host computers;
- determining, using the identifier, that a second host is a virtual disk coordinator host of the virtual disk object, by accessing a database of the first host,
- wherein the virtual disk coordinator host controls access to the virtual disk object;
- performing one of:
- (1) transmitting, by the first driver, the I/O operation to a second driver of the second virtualization software of the second host, or
- (2) updating the database to set the first host to be the virtual disk coordinator host of the virtual disk object;
- and
- executing the I/O operation by the virtual disk coordinator host by communicating with hosts that are the coordinators for the virtual component objects of the virtual disk object.
A non-transitory computer readable medium comprising instructions to be executed in a processor of a computer system, and the instructions when executed in the processor cause the computer system to carry out a method of handling a storage input/output (I/O) operation originating from a virtual machine (VM) and destined for a virtual disk, the VM running on virtualization software of a first host that is part of a cluster of host computers that includes the first host and a second host, each host having its own local physical storage resources, the virtualization software of the first host containing a first driver, said method comprising:
- receiving, by the first driver, the I/O operation;
- retrieving from the I/O operation an identifier for a virtual disk object representing the virtual disk, the virtual disk object being composed of virtual component objects, the virtual component objects being mappable to any available local physical storage resources throughout the cluster of host computers;
- determining, using the identifier, that a second host is a virtual disk coordinator host of the virtual disk object by accessing a database of the first host, wherein the virtual disk coordinator host controls access to the virtual disk object;
- performing one of:
- (1) transmitting, by the first driver, the I/O operation to a second driver of the second virtualization software of the second host virtual disk coordinator host, or
- (2) updating the database to set the first host to be the virtual disk coordinator host of the virtual disk object;
- and
- executing the I/O operation by the virtual disk coordinator host by communicating with hosts that are the coordinators for the virtual component objects of the virtual disk object.
A computer system comprising:
- a cluster of host computers that includes a first host and a second host, each host having its own local physical storage resources,
- wherein the first host includes a virtual machine (VM) that runs on virtualization software of the first host,
- wherein virtualization software of the first host includes a first driver of the virtualization software of the first host;
- and
- a processor, wherein the processor is programmed to carry out a method of handling a storage input/output (I/O) operation originating from the VM and destined for the virtual disk, said method comprising:
- receiving, by the first driver, the I/O operation;
- retrieving from the I/O operation an identifier for a virtual disk object representing the virtual disk, the virtual disk object being composed of virtual component objects, the virtual component objects being mappable to any available local physical storage resources throughout the cluster of host computers;
- determining, using the identifier, that a second host is a virtual disk coordinator host of the virtual disk object by accessing a database of the first host, wherein the virtual disk coordinator host controls access to the virtual disk object;
- performing one of:
- (1) transmitting, by the first driver, the I/O operation to a second driver of the second virtualization software of the second host, or
- (2) updating the database to set the first host to be the virtual disk coordinator host of the virtual disk object;
- and
- executing the I/O operation by the virtual disk coordinator host by communicating with hosts that are the coordinators for the virtual component objects of the virtual disk object.
Dependencies are inferred from the claim text.