IP Library Granted Patent US 9,619,268
Granted Patent B2
US 9,619,268 · App. 14/615,353 · Granted Apr 11, 2017

Rapid suspend/resume for virtual machines via resource sharing

Inventors: Daniel James Beveridge (Apollo Beach, FL); David Snowdon (London, GB)
Assignee: VMware, Inc.
G06F9/45558G06F9/4451G06F2009/45562G06F2009/45575G06F2009/45583
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,619,268
App. No.
14/615,353
Granted
Apr 11, 2017
Kind
B2
Abstract

Examples quickly suspend and resume virtual desktops on demand or on schedule. Virtual desktops, or desktops as a service, are provided to users, where the virtual desktop is a forked VM, cloned VM, or otherwise at least a partial duplicate of an existing VM. The virtual desktop points to existing memory maintained by the existing VM, and the virtual desktop only writes to memory the pages that the virtual desktop creates or modifies.

Claims (55)

1. A method for rapidly suspending a virtual machine (VM) comprising:

forking a first VM from a second VM, wherein the first VM and the second VM are resident on a same host, wherein the first VM and the second VM initially share memory blocks upon forking of the first VM, and wherein the first VM stores new writes to separate non-shared memory blocks;

receiving a request to suspend the first VM executing on the host while maintaining the second VM resident in memory, the first VM having a plurality of memory blocks at least a portion of which are shared with the second VM; and

in response to receiving the request to suspend the first VM:

identifying memory blocks of the first VM, from the plurality of memory blocks, that are not shared with the second VM; and

transferring only the identified memory blocks of the first VM that are not shared with the second VM to a storage memory,

wherein the suspended first VM is configured to be resumed in response to a request to resume execution of the first VM on the host.

2. The method of claim 1 , further comprising compressing the identified memory blocks into a staging memory area and transferring the compressed memory blocks when suspending the first VM.

3. The method of claim 1 , wherein receiving the request comprises receiving the request from a user.

4. The method of claim 1 , wherein receiving the request comprises determining that a user of the first VM has been idle for a predefined duration of time.

5. The method of claim 1 , further comprising replicating the second VM to each of a plurality of target host computing devices in a cluster to enable resuming the suspended first VM on any of the plurality of target host computing devices.

6. The method of claim 1 , wherein the first VM provides a virtual desktop to a user.

7. The method of claim 1 , further comprising resuming the first VM by:

receiving a request to execute the first VM;

retrieving, from storage, the memory blocks of the first VM that are not shared with the second VM; and

creating the resumed first VM using the shared memory blocks and the retrieved memory blocks.

8. A system comprising:

a memory area associated with a computing device, said memory area storing a plurality of memory blocks associated with one or more virtual machines (VMs); and

a processor programmed to:

fork a first VM from a second VM, wherein the first VM and the second VM are resident on a same host, wherein the first VM and the second VM initially share memory blocks upon forking of the first VM, and wherein the first VM stores new writes to separate non-shared memory blocks;

receive a request to suspend the first VM executing on the host while maintaining the second VM resident in memory; and

in response to receiving the request to suspend the first VM:

identify memory blocks of the first VM, from the plurality of memory blocks, that are not shared with the second VM; and

transfer only the identified memory blocks of the first VM that are not shared with the second VM to a storage memory,

wherein the suspended first VM is configured to be resumed in response to a request to resume execution of the first VM on the host.

9. The system of claim 8 , further comprising a staging memory area, wherein the processor is further programmed to compress the identified memory blocks into the staging memory area, and wherein the processor is programmed to transfer the compressed memory blocks when suspending the first VM.

10. The system of claim 8 , wherein receiving the request comprises receiving the request from a user.

11. The system of claim 8 , wherein receiving the request comprises determining that a user of the first VM has been idle for a predefined duration of time.

12. The system of claim 8 , further comprising replicating the second VM to each of a plurality of target host computing devices in a cluster to enable resuming the suspended first VM on any of the plurality of target host computing devices.

13. The system of claim 8 , wherein the first VM provides a virtual desktop to a user.

14. The system of claim 8 , further comprising resuming the first VM by:

receiving a request to execute the first VM;

retrieving, from storage, the memory blocks of the first VM that are not shared with the second VM; and

creating the resumed first VM using the shared memory blocks and the retrieved memory blocks.

15. One or more computer-readable storage media including computer-executable instructions that, when executed, cause at least one processor to suspend a virtual machine (VM) by:

forking a first VM from a second VM, wherein the first VM and the second VM are resident on a same host, wherein the first VM and the second VM initially share memory blocks upon forking of the first VM, and wherein the first VM stores new writes to separate non-shared memory blocks;

receiving a request to suspend the first VM executing on the host while maintaining the second VM resident in memory, the first VM having a plurality of memory blocks at least a portion of which are shared with the second VM; and

in response to receiving the request to suspend the first VM:

identifying memory blocks of the first VM, from the plurality of memory blocks, that are not shared with the second VM; and

transferring the identified memory blocks of the first VM that are not shared with the second VM to a storage memory,

wherein the suspended first VM is configured to be resumed in response to a request to resume execution of the first VM on the host.

16. The computer-readable storage media of claim 15 , wherein receiving the request comprises receiving the request from a user.

17. The computer-readable storage media of claim 15 , wherein receiving the request comprises determining that a user of the first VM has been idle for a predefined duration of time.

18. The computer-readable storage media of claim 15 , further comprising replicating the second VM to each of a plurality of target host computing devices in a cluster to enable resuming the suspended first VM on any of the plurality of target host computing devices.

19. The computer-readable storage media of claim 15 , wherein the first VM provides a virtual desktop to a user.

20. The computer-readable storage media of claim 15 , further comprising resuming the first VM by:

receiving a request to execute the first VM;

retrieving, from storage, the memory blocks of the first VM that are not shared with the second VM; and

creating the resumed first VM using the shared memory blocks and the retrieved memory blocks.

21. The method of claim 1 ,

wherein the first VM is a child VM of the second VM generated with shared memory blocks, wherein the second VM is a VM template,

wherein changes in the child VM are maintained as copy on write memory pages, and

wherein transferring memory blocks includes transferring the copy on write memory pages.

22. The computer-readable storage media of claim 15 , further comprising instructions to:

compress the identified memory blocks into a staging memory area and transferring the compressed memory blocks when suspending the first VM.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2015
From: BEVERIDGE, DANIEL JAMES; SNOWDON, DAVID
To: VMWARE, INC.
Reel/Frame 034901/0568 →
Continuity (3)
Provisional Application 62041044 · Aug 23, 2014
Provisional Application 62041045 · Aug 23, 2014
Related Publication 20160055021A1 · Feb 25, 2016