IP Library Granted Patent US 9,880,872
Granted Patent B2
US 9,880,872 · App. 15/178,937 · Granted Jan 30, 2018

Post-copy based live virtual machines migration via speculative execution and pre-paging

Inventor: Venkatesh Srinivas (Seattle, WA)
Assignee: GoogleLLC
G06F9/45558G06F2009/4557G06F2009/45583G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,880,872
App. No.
15/178,937
Granted
Jan 30, 2018
Kind
B2
Abstract

The method includes post copy migrating a guest virtual machine from a migration source host to a migration target host, executing the instruction stream of the guest virtual machine on the migration target host, and determining, by the migration target host, when the guest virtual machine encounters the page fault. When the guest virtual machine encounters the page fault, the method includes requesting, by the migration target host, the not-present page from the migration source host for loading on the migration target host, and emulating, on an emulator executing on or in communication with the migration target host, continued execution of the instruction stream of the guest virtual machine. The method also includes identifying, by the emulator, future page references to future pages from the emulated continued execution of the instruction stream, and requesting the future pages from the migration source host in parallel with the not-present page request.

Claims (40)

1. A method comprising:

post-copy migrating a guest virtual machine from a migration source host to a migration target host, the guest virtual machine having an instruction stream of instructions;

executing the instruction stream of the guest virtual machine on the migration target host, the guest virtual machine stalling execution of the instruction stream when the guest virtual machine encounters a page fault for a page reference in the instruction stream to a not-present page, the not-present page being resident on the migration source host and not resident on the migration target host;

determining, by the migration target host, when the guest virtual machine encounters the page fault; and

when the guest virtual machine encounters the page fault:

requesting, by the migration target host, the not-present page from the migration source host for loading on the migration target host;

emulating, on an emulator executing on or in communication with the migration target host, continued execution of the instruction stream of the guest virtual machine;

identifying, by the emulator, future page references to future pages from the emulated continued execution of the instruction stream; and

requesting, by the migration target host, the future pages corresponding to the identified future page references from the migration source host in parallel with the not-present page request for the not-present page, so as to prefetch the future pages to the migration target host while loading the not-present page on the migration target host.

2. The method of claim 1 , further comprising requesting the future pages from the migration source host as the corresponding future page references are identified.

3. The method of claim 1 , further comprising, while emulating the continued execution of the instruction stream of the guest virtual machine, setting aside instructions that are dependent on loaded values of the not-present page, allowing the emulator to identify future page references beyond future page faults.

4. The method of claim 1 , wherein the migration target host comprises:

one or more computing devices; and

one or more memory hosts in communication with the one or more computing devices, the one or more memory hosts storing pages.

5. The method of claim 1 , further comprising identifying the future page references based on a relationship between the future page references and the not-present page.

6. The method of claim 5 , where the relationship comprises a page navigation map between a parent page and one or more child pages.

7. The method of claim 1 , wherein identifying the future page references comprises identifying at least one additional future page reference in at least one instruction associated with an identified future page reference.

8. The method of claim 1 , further comprising ceasing emulation of the continued execution of the instruction stream by the emulator when the not-present page has been delivered to the migration target host.

9. The method of claim 8 , further comprising continuing execution of the instruction stream of the guest virtual machine on the migration target host when the not-present page is resident on the migration target host.

10. The method of claim 1 , wherein identifying future page references from the emulated continued execution of the instruction stream further comprises identifying a future page address of the identified future page references.

11. A migration target host comprising:

data processing hardware; and

memory hardware in communication with the data processing hardware, the memory hardware storing instructions that when executed on the data processing hardware cause the data processing hardware to perform operations comprising:

post-copy migrating a guest virtual machine from a migration source host to the memory hardware, the guest virtual machine having an instruction stream of instructions;

executing the instruction stream of the guest virtual machine, the guest virtual machine stalling execution of the instruction stream when the guest virtual machine encounters a page fault for a page reference in the instruction stream to a not-present page, the not-present page being resident on the migration source host and not resident on the memory hardware of the migration target host;

determining when the guest virtual machine encounters the page fault; and

when the guest virtual machine encounters the page fault:

requesting the not-present page from the migration source host for loading on the memory hardware of the migration target host;

emulating, on an emulator executing on the data processing hardware or in communication with the migration target host, continued execution of the instruction stream of the guest virtual machine;

identifying, by the emulator, future page references to future pages from the emulated continued execution of the instruction stream; and

requesting the future pages corresponding to the identified future page references from the migration source host in parallel with the not-present page request, so as to prefetch the future pages to the memory hardware of the migration target host while loading the not-present page on the memory hardware of the migration target host.

12. The migration target host of claim 11 , wherein the operations further comprise requesting the identified future page references from the migration source host as the future page references are identified.

13. The migration target host of claim 11 , wherein the operations further comprise, while emulating the continued execution of the instruction stream of the guest virtual machine, setting aside instructions that are dependent on loaded values of the not-present page, allowing the emulator to identify future page references beyond future page faults.

14. The migration target host of claim 11 , wherein the memory hardware further comprises one or more memory hosts in communication with the data processing hardware, the one or more memory hosts storing pages.

15. The migration target host of claim 11 , wherein the operations further comprise identifying the future page references based on a relationship between the future page reference and the not-present page.

16. The migration target host of claim 15 , where the relationship comprises a page navigation map between a parent page and one or more child pages.

17. The migration target host of claim 11 , wherein the operation of identifying the future page references comprises identifying at least future one page reference in at least one instruction associated with an identified future page reference.

18. The migration target host of claim 11 , wherein the operations further comprise ceasing emulation of the continued execution of the instruction stream by the emulator when the not-present page has been delivered to the memory hardware of the migration target host.

19. The migration target host of claim 18 , wherein the operations further comprise continuing execution of the instruction stream of the guest virtual machine when the not-present page is resident on the memory hardware of the migration target host.

20. The migration target host of claim 11 , wherein identifying future page references from the emulated continued execution of the instruction stream further comprises identifying a future page address of the identified future page references.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2016
From: SRINIVAS, VENKATESH
To: GOOGLE INC.
Reel/Frame 038877/0684 →
Continuity (1)
Related Publication 20170357527A1 · Dec 14, 2017