Direct memory access filter for virtualized operating systems

US9235435B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9235435-B2
Application numberUS-201213555652-A
CountryUS
Kind codeB2
Filing dateJul 23, 2012
Priority dateJun 26, 2008
Publication dateJan 12, 2016
Grant dateJan 12, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Described techniques increase runtime performance of workloads executing on a hypervisor by executing virtualization-aware code in an otherwise non virtualization-aware guest operating system. In one implementation, the virtualization-aware code allows workloads direct access to physical hardware devices, while allowing the system memory allocated to the workloads to be overcommitted. In one implementation, a DMA filter driver is inserted into an I/O driver stack to ensure that the target virtual memory of a DMA transfer is resident before the transfer begins. The DMA filter driver may utilize a cache to track which pages of memory are resident. The cache may also indicate which pages of memory are in use by one or more transfers, enabling the hypervisor to avoid appropriating pages of memory during a transfer.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: overcommitting, using a hypervisor operating as a virtual memory manager, one or more system physical addresses referenced by one or more guest physical addresses of a non virtualization-aware operating system; receiving, at a virtualization-aware software component installed in a driver stack of the non virtualization-aware operating system, the virtualization-aware software component being distinct from the hypervisor, a transaction request to begin a transaction associated with a range of guest physical addresses including the one or more guest physical addresses; determining, at the virtualization-aware software component, that the one or more guest physical addresses are not resident to the non virtualization-aware operating system; and transmitting, from the virtualization-aware software component and in response to the determining, a backing request to the hypervisor to make resident the one or more system physical addresses to the non virtualization-aware operating system. 2. The method as recited in claim 1 , wherein the virtualization-aware software component comprises a filter driver inserted into an input/output (I/O) driver stack of the non virtualization-aware operating system. 3. The method as recited in claim 1 , wherein the driver stack comprises a direct memory access driver. 4. The method as recited in claim 1 , further comprising: receiving, by the virtualization-aware software component, an indication that the transaction is complete. 5. The method as recited in claim 1 , further comprising: providing, by the virtualization-aware software component, indicators in a data structure individually associated with portions of a guest physical address space, one or more indicators of the indicators comprising a representation of whether a corresponding portion of system physical memory is resident or non-resident. 6. The method as recited in claim 5 , wherein the one or more indicators of the indicators further comprise a reference count of in-progress memory transfers, the in-progress memory transfers targeting a corresponding range of guest physical addresses that comprise the portion of the guest physical address space associated with the one or more indicators. 7. The method as recited in claim 6 , further comprising: in response to a notification of the hypervisor, updating, by the virtualization-aware software component, the reference count associated with individual portions of the guest physical address space. 8. The method as recited in claim 7 , further comprising: terminating, using the hypervisor, a virtual machine hosted by the hypervisor used to execute the non virtualization-aware operating system when the virtualization-aware software component fails to update the reference count associated with the individual portions of the guest physical address space. 9. The method as recited in claim 5 , wherein the range of guest physical addresses comprises a target of an asynchronous-direct memory access transfer. 10. The method as recited in claim 5 , further comprising: accessing, by multiple instantiations of the virtualization-aware software component, a same data structure that includes indicators individually associated with portions of a system physical address space. 11. The method as recited in claim 1 , wherein the transaction request comprises an I/O request packet for communicating a request of a device driver. 12. The method as recited in claim 1 , wherein the hypervisor enables the non virtualization-aware operating system to directly control a hardware device of a computer system. 13. The method as recited in claim 1 , further comprising: executing the non virtualization-aware operating system in a workload hosted by the hypervisor, wherein the hypervisor is executed in a first non-virtual computer system; and utilizing state encapsulation to migrate the workload to a second non-virtual computer system. 14. A computer system comprising: one or more processors; system physical memory, accessible by the one or more processors; and a hypervisor hosting a virtual machine having a non virtualization-aware operating system with a driver stack; a virtualization-aware component associated with the driver stack, the virtualization-aware component distinct from the hypervisor and stored in the system physical memory and executable on the one or more processors to: receive a range of guest physical addresses including one or more guest physical addresses associated with one or more overcommitted system physical addresses; determine whether at least one guest physical address of the range of guest physical addresses references a non-resident portion of a guest physical address space; responsive to determining that the at least one guest physical address references the non-resident portion of the guest physical address space: transmit a request to the hypervisor to commit the non-resident portion of the guest physical address space; receive a message from the hypervisor indicating that the non-resident portion of the guest physical address space has been committed; and transmit the range of virtual memory-addresses. 15. The computer system as recited in claim 14 , wherein the virtualization-aware component is further executable to: receive an indication that a memory transfer associated with the range of guest physical addresses is complete. 16. The computer system as recited in claim 15 , wherein the virtualization-aware component is further executable to: responsive to determining that the at least one guest physical address references the non-resident portion of the guest physical address space, transmit a message to the driver stack indicating that the memory transfer is not to occur synchronously. 17. The computer system as recited in claim 16 , wherein the virtualization-aware component is configured to transmit the range of guest physical addresses responsive to receiving the message from the hypervisor indicating that the non-resident portion of the guest physical address space has been committed. 18. The method as recited in claim 1 , wherein the backing request comprises an indication of the range of guest physical addresses, and wherein the transmitting the backing request to the hypervisor occurs before an initiation of the transaction. 19. The method as recited in claim 1 , wherein the hypervisor makes resident the range of guest physical addresses for a duration of the transaction. 20. One or more computer-readable storage devices storing computer-executable instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: overcommitting, using a hypervisor operating as a virtual memory manager, one or more system physical addresses referenced by one or more guest physical addresses of a non virtualization-aware operating system; receiving, at a virtualization-aware software component installed in a driver stack of the non virtualization-aware operating system, the virtualization-aware software component being distinct from the hypervisor, a transaction request to begin a transaction associated with a range of guest physical addresses including the one or more guest physical addresses; determining, at the virtualization-aware software component, that the one or more guest physical addresses are not resident to the non virtualization-aware operating system; and transmitting, from the virtualization-aware software component and in response to t

Assignees

Inventors

Classifications

  • Provision of facilities of other operating environments, e.g. WINE (I/O emulation G06F13/105) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9235435B2 cover?
Described techniques increase runtime performance of workloads executing on a hypervisor by executing virtualization-aware code in an otherwise non virtualization-aware guest operating system. In one implementation, the virtualization-aware code allows workloads direct access to physical hardware devices, while allowing the system memory allocated to the workloads to be overcommitted. In one im…
Who is the assignee on this patent?
Oshins Jacob, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/45537. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 12 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).