US8453143B2ActiveUtilityA1

Reducing the latency of virtual interrupt delivery in virtual machines

93
Assignee: MAHALINGAM MALLIKPriority: Sep 19, 2007Filed: Sep 19, 2007Granted: May 28, 2013
Est. expirySep 19, 2027(~1.2 yrs left)· nominal 20-yr term from priority
G06F 9/45558G06F 9/4812G06F 9/45537G06F 2009/45575
93
PatentIndex Score
41
Cited by
20
References
20
Claims

Abstract

The latency of virtual interrupt delivery in virtual machines is reduced by normalizing and exposing the virtual interrupt routing information of each VM to a privileged domain such as the VMkernel in an organized manner to enable virtual interrupt delivery that minimizes the number of VCPU hops. A computer implemented method of processing the virtual I/O request comprises receiving the virtual I/O request, responsive to completing a physical I/O corresponding to the virtual I/O request, referring to a virtual CPU set including information on a destination virtual CPU designated by the guest operating system for handling a virtual interrupt corresponding to the virtual I/O request, and generating the virtual interrupt corresponding to the virtual I/O request to the destination virtual CPU determined by referring to the virtual CPU set.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A computer-implemented method that processes a virtual I/O request, carried out in a virtualized computer system running one or more virtual machines on virtualization software and in which a guest operating system (guest OS) running on a guest-OS-supporting virtual machine of the one of the virtual machines issues the virtual input/output (I/O) request to a virtual device, the method comprising:
 receiving the virtual I/O request; 
 responsive to completing a physical I/O operation corresponding to the virtual I/O request, the virtualization software referring to a VCPU (Virtual Central Processing Unit) set data structure including information identifying a destination VCPU designated by the guest OS to handle a virtual interrupt corresponding to the virtual I/O request, the destination VCPU being one of a plurality of VCPUs provided to the guest-OS-supporting virtual machine by the virtualized computer system; and 
 generating the virtual interrupt to the destination VCPU. 
 
     
     
       2. The method of  claim 1 , further comprising:
 updating the VCPU set data structure, responsive to determining a change in the destination VCPU. 
 
     
     
       3. The method of  claim 2 , wherein the determining of the change in the destination VCPU comprises:
 intercepting a guest OS instruction that modifies a state in an interrupt controller relating to an interrupt state. 
 
     
     
       4. The method of  claim 1 , wherein the VCPU set data structure is accessible by both a virtual machine monitor and a kernel of the virtualized computer system. 
     
     
       5. The method of  claim 1 , wherein the VCPU set data structure includes an array of VCPU sets indexed by an interrupt vector number to designate a current destination VCPU set for each interrupt vector. 
     
     
       6. The method of  claim 1 , further comprising:
 posting an asynchronous action to generate the virtual interrupt to the destination VCPU identified by the VCPU set data structure. 
 
     
     
       7. The method of  claim 6 , wherein the destination VCPU is the VCPU designated by the guest OS to handle the virtual interrupt and the asynchronous action need not be rescheduled to post the asynchronous action for a different VCPU. 
     
     
       8. A computer program product, stored on a computer readable storage medium not including a signal or carrier wave, that includes computer instructions which, when executed by one or more processors, implement a method that processes a virtual input/output (I/O) request in a virtualized computer system running one or more virtual machines on virtualization software and in which a guest OS running on a guest-OS-supporting virtual machine of the one or more virtual machines issues the virtual I/O request to a virtual device, the method implemented by the computer instructions comprising:
 receiving the virtual I/O request; 
 responsive to completing a physical I/O operation corresponding to the virtual I/O request, the virtualization software referring to a VCPU (Virtual Central Processing Unit) set data structure including information identifying a destination VCPU designated by the guest OS to handle a virtual interrupt corresponding to the virtual I/O request, the destination VCPU being one of a plurality of VCPUs provided to the guest-OS-supporting virtual machine by the virtualized computer system; and 
 generating the virtual interrupt corresponding to the virtual I/O request to the destination VCPU. 
 
     
     
       9. The computer program product of  claim 8 , wherein the method further comprises:
 updating the VCPU set data structure, responsive in response to determining a change in the destination VCPU. 
 
     
     
       10. The computer program product of  claim 9 , wherein the determining of the change in the destination VCPU comprises:
 intercepting a guest OS instruction that modifies a state in an interrupt controller relating to an interrupt state. 
 
     
     
       11. The computer program product of  claim 8 , wherein the VCPU set data structure is accessible by both a virtual machine monitor and a kernel of the virtualized computer system. 
     
     
       12. The computer program product of  claim 8 , wherein the VCPU set data structure includes an array of VCPU sets indexed by an interrupt vector number to designate a current destination VCPU set for each interrupt vector. 
     
     
       13. The computer program product of  claim 8 , wherein the method further comprises:
 posting an asynchronous action to generate the virtual interrupt to the destination VCPU identified by the VCPU set data structure. 
 
     
     
       14. The computer program product of  claim 13 , wherein the destination VCPU is the VCPU designated by the guest OS to handle the virtual interrupt and the asynchronous action need not be rescheduled to post the asynchronous action for a different VCPU. 
     
     
       15. A virtualized computer system running one or more virtual machines on virtualization software and in which a guest operating system (guest OS) running on a guest-OS-supporting virtual machine of the one or more virtual machines issues a virtual input/output (I/O) request to a virtual device, the virtualized computer system comprising:
 a storage device storing computer instructions configured to perform a computer-implemented method of processing the virtual I/O request; and 
 one or more processors for executing the computer instructions, the computer instructions being configured to:
 receive the virtual I/O request; 
 responsive to completing a physical I/O operation corresponding to the virtual I/O request, the virtualization software referring to a VCPU (Virtual Central Processing Unit) set data structure including information identifying a destination VCPU designated by the guest OS to handle a virtual interrupt corresponding to the virtual I/O request, the destination VCPU being one of a plurality of VCPUs provided to the guest-OS-supporting virtual machine by the virtualized computer system; and 
 
 generate the virtual interrupt corresponding to the virtual I/O request to the destination VCPU. 
 
     
     
       16. The virtualized computer system of  claim 15 , wherein the computer instructions are further configured to update the VCPU set data structure, responsive to determining a change in the destination VCPU. 
     
     
       17. The virtualized computer system of  claim 16 , wherein determining the change in the destination VCPU comprises:
 intercepting a guest OS instruction that modifies a state in an interrupt controller relating to an interrupt state. 
 
     
     
       18. The virtualized computer system of  claim 15 , wherein the VCPU set data structure is accessible by both a virtual machine monitor and a kernel of the virtualized computer system. 
     
     
       19. The virtualized computer system of  claim 15 , wherein the VCPU set data structure includes an array of VCPU sets indexed by an interrupt vector number to designate a current destination VCPU set for each interrupt vector. 
     
     
       20. The virtualized computer system of  claim 15 , wherein the computer instructions are further configured to post an asynchronous action to generate the virtual interrupt to the destination VCPU identified by the VCPU set data structure.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.