Sending a next request to a resource before a completion interrupt for a previous request
AssigneeInternational Business Machines Corporation
InventorsStuart Z. Jacobs, David A. Larson
Life of this patent
Estimating the term…
Abstract
In an embodiment, in response to receiving a completion interrupt for a first request from a resource, a determination is made whether relocation of memory contents accessed by performance of the first request is in progress. If the relocation of the memory contents accessed by performance of the first request is in progress, a second request is sent to the resource before the memory relocation completes. If the relocation of the memory contents accessed by the performance of the first request is not in progress, the completion interrupt for the first request is sent to the virtual machine that initiated the first request.
Claims15
A method performed by a computer system, comprising:
- sending a first request by a hypervisor to a shared resource for performing an operation by the shared resource, wherein the hypervisor manages a plurality of virtual machines and the shared resource is shared by the plurality of virtual machines managed by the hypervisor, the first request for performing an operation by the shared resource on behalf of a first virtual machine of the plurality of virtual machines managed by the hypervisor;
- responsive to completion of performance of the operation requested by the first request in the shared resource, receiving in the hypervisor a completion interrupt for the first request from the shared resource;
- in response to receiving in the hypervisor the completion interrupt for the first request from the shared resource, determining by the hypervisor whether relocation of memory contents accessed by performance of the first request is in progress, relocation of memory contents being the moving of contents of memory from a source memory location to a destination memory location in a manner that is transparent to the plurality of virtual machines managed by the hypervisor;
- if the relocation of the memory contents accessed by performance of the first request is in progress, then waiting to send a completion interrupt for the first request from the hypervisor to the first virtual machine until after the memory relocation completes, and sending a second request by the hypervisor to the shared resource before the memory relocation completes, the second request for performing an operation by the shared resource on behalf of a virtual machine of the plurality of virtual machines managed by the hypervisor;
- and
- if the relocation of the memory contents accessed by the performance of the first request is not in progress, sending the completion interrupt for the first request from the hypervisor to the first virtual machine.
A non-transitory computer-readable storage medium encoded with instructions, wherein the instructions when executed comprise:
- sending a first request by a hypervisor to a shared resource for performing an operation by the shared resource, wherein the hypervisor manages a plurality of virtual machines and the shared resource is shared by the plurality of virtual machines managed by the hypervisor, the first request for performing an operation by the shared resource on behalf of a first virtual machine of the plurality of virtual machines managed by the hypervisor;
- responsive to completion of performance of the operation requested by the first request in the shared resource, receiving in the hypervisor a completion interrupt for the first request from the shared resource;
- in response to receiving in the hypervisor the completion interrupt for the first request from the shared resource, determining by the hypervisor whether relocation of memory contents accessed by performance of the first request is in progress, relocation of memory contents being the moving of contents of memory from a source memory location to a destination memory location in a manner that is transparent to the plurality of virtual machines managed by the hypervisor;
- if the relocation of the memory contents accessed by performance of the first request is in progress, sending a second request by the hypervisor to the shared resource before the memory relocation completes, the second request for performing an operation by the shared resource on behalf of a virtual machine of the plurality of virtual machines managed by the hypervisor, and waiting to send a completion interrupt for the first request from the hypervisor to the first virtual machine until after the memory relocation completes;
- if the relocation of the memory contents accessed by the performance of the first request is not in progress, sending the completion interrupt for the first request from the hypervisor to the first virtual machine;
- sending a halt request to the shared resource, wherein the halt request causes the shared resource to halt a third request;
- and
- in response to the sending the halt request to the shared resource, sending a fourth request to the shared resource before receiving a completion interrupt from the shared resource for the halt request.
A computer comprising:
- a processor;
- and
- memory communicatively coupled to the processor, wherein the memory is encoded with instructions, and wherein the instructions when executed on the processor comprise
- sending a first request by a hypervisor to a shared resource for performing an operation by the shared resource, wherein the hypervisor manages a plurality of virtual machines and the shared resource is shared by the plurality of virtual machines managed by the hypervisor, the first request for performing an operation by the shared resource on behalf of a first virtual machine of the plurality of virtual machines managed by the hypervisor,
- responsive to completion of performance of the operation requested by the first request in the shared resource, receiving in the hypervisor a completion interrupt for the first request from the shared resource,
- in response to receiving, at the hypervisor, the completion interrupt for the first request from the shared resource, determining, at the hypervisor, whether relocation of memory contents accessed by performance of the first request is in progress, relocation of memory contents being the moving of contents of memory from a source memory location to a destination memory location in a manner that is transparent to the plurality of virtual machines managed by the hypervisor,
- if the relocation of the memory contents accessed by performance of the first request is in progress, sending a second request from the hypervisor to the shared resource before the memory relocation completes, the second request for performing an operation by the shared resource on behalf of a virtual machine of the plurality of virtual machines managed by the hypervisor, and waiting to send a completion interrupt for the first request from the hypervisor to the first virtual machine until after the memory relocation completes,
- if the relocation of the memory contents accessed by the performance of the first request is not in progress, sending the completion interrupt for the first request from the hypervisor to the first virtual machine;
- deciding to send a halt request from the hypervisor to the shared resource,
- sending a halt request from the hypervisor to the shared resource, wherein the halt request causes the shared resource to halt a third request, and
- in response to the sending the halt request from the hypervisor to the shared resource, sending a fourth request from the hypervisor to the shared resource before receiving a completion interrupt, at the hypervisor, from the shared resource for the halt request.
Dependencies are inferred from the claim text.