IP Library Granted Patent US 9,578,032
Granted Patent B2
US 9,578,032 · App. 14/615,374 · Granted Feb 21, 2017

Application publishing using memory state sharing

Inventors: Daniel James Beveridge (Apollo Beach, FL); Blake Watts (St. George, UT); Per Olov Larsson (London, GB); Banit Agrawal (Sunnyvale, CA); Hui Li (Fremont, CA)
Assignee: VMware, Inc.
H04L63/10G06F9/45558G06F9/5016G06F9/52G06F2009/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,578,032
App. No.
14/615,374
Granted
Feb 21, 2017
Kind
B2
Abstract

Examples described herein enable memory state sharing among a plurality of virtual machines (VM) including a parent VM and a child VM. A request for memory state sharing between the parent VM and the child VM is received, and the parent VM is suspended. The child VM resumes execution of one or more suspended applications. In one example, the child FM is forked with pre-loaded, suspended applications from the parent VM. Aspects of the disclosure offer a high performance, resource efficient solution that outperforms traditional approaches in areas of software compatibility, stability, quality of service control, re-source utilization, and more.

Claims (55)

1. A system comprising:

a memory area associated with a computing device, said memory area storing data shared among a plurality of virtual machines (VMs) including a parent VM and a child VM; and

a processor programmed to:

receive a request for memory state sharing between the parent VM and the child VM;

lock one or more code pages associated with one or more applications into the memory area, such that the application code pages are resident in memory of the parent VM;

suspend execution of the one or more applications on the parent VM; and

suspend the parent VM, wherein the child VM selectively resumes execution of one or more particular applications of the one or more suspended applications on the child VM using the corresponding locked code pages.

2. The system of claim 1 , wherein the processor is programmed to monitor the parent VM for a triggering event.

3. The system of claim 1 , wherein the processor is programmed to pre-launch the one or more applications on the parent VM prior to locking the code pages associated with the one or more application into the memory area.

4. The system of claim 1 , wherein the processor is programmed to bring the one or more code pages associated with the one or more applications into the memory area.

5. The system of claim 1 , wherein the processor is programmed to fork the child VM from the parent VM.

6. The system of claim 1 , wherein the processor is programmed to:

halt an execution state associated with the parent VM; and

mark memory pages in the parent VM as copy-on-write.

7. The system of claim 1 , wherein the processor is programmed to configure the child VM with a redo log pointing to a disk of the parent VM as a base disk of the child VM.

8. The system of claim 1 , wherein the processor is programmed to:

receive a request to execute the one or more suspended applications;

create a network security token for the one or more suspended applications based on an identity of a user;

bind the network security token to the one or more suspended applications; and

resume execution of the one or more suspended applications using the network security token.

9. The system of claim 1 , wherein suspending execution of the one or more applications on the parent VM comprises suspending a corresponding process associated with each respective application of the one or more applications.

10. The system of claim 9 , wherein resuming execution of a particular suspended application by the child VM comprises resuming the corresponding process associated with the particular suspended application.

11. The system of claim 1 , wherein locking the one or more code pages associated with the one or more applications comprises pre-staging all code pages for each application of the one or more applications including touching the first bye of each code page for each application of the one or more applications to force them into memory.

12. The system of claim 1 , wherein resuming execution of one or more of the suspended applications on the child VM is performed without pulling associated code pages from disk to be written into the memory area.

13. A method comprising:

receiving a request for memory state sharing between a parent VM and a child VM;

loading one or more code pages of one or more applications into memory;

locking the one or more code pages of the one or more applications into memory, such that the application code pages are resident in memory of the parent VM;

suspending execution of the one or more applications on the parent VM; and

suspending the parent VM, wherein the child VM selectively resumes execution of one or more particular applications of the one or more suspended applications on the child VM using the corresponding locked code pages.

14. The method of claim 13 , wherein receiving a request comprises monitoring the parent VM for a triggering event.

15. The method of claim 13 further comprising disabling one or more services associated with the parent VM.

16. The method of claim 13 further comprising pre-launching the one or more applications on the parent VM prior to locking the code pages of the one or more applications into memory.

17. The method of claim 13 further comprising forking the child VM from the parent VM.

18. The method of claim 13 further comprising:

receiving a request to execute the one or more suspended applications;

creating a network security token for the one or more suspended applications based on an identity of a user;

binding the network security token to the one or more suspended applications; and

resuming execution of the one or more suspended applications using the network security token.

19. One or more non-transitory computer-readable storage media including computer-executable instructions that, when executed, cause one or more processors to:

enable memory state sharing among a plurality of virtual machines (VM) including a parent VM and a child VM; and

receive a request for memory state sharing between the parent VM and the child VM;

load one or more code pages of one or more applications into memory;

lock the one or more code pages of the one or more applications into memory, such that the application code pages are resident in memory of the parent VM;

suspend execution of the one or more applications on the parent VM; and

suspend the parent VM, wherein the child VM selectively resumes execution of one or more particular applications of the one or more suspended applications on the child VM using the corresponding locked code pages.

20. The one or more non-transitory computer-readable storage media of claim 19 , wherein the computer-executable instructions, when executed, cause one or more processors to fork the child VM from the parent VM.

21. The one or more non-transitory computer-readable storage media of claim 19 , wherein the computer-executable instructions, when executed, cause one or more processors to:

halt an execution state associated with the parent VM; and

mark memory pages in the parent VM as copy-on-write.

22. The one or more non-transitory computer-readable storage media of claim 19 , wherein the computer-executable instructions, when executed, cause one or more processors to:

receive a request to execute the one or more suspended applications;

create a network security token for the one or more suspended applications based on an identity of a user;

bind the network security token to the one or more suspended applications; and

resume execution of the one or more suspended applications using the network security token.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2015
From: BEVERIDGE, DANIEL JAMES; WATTS, BLAKE; LARSSON, PER OLOV; AGRAWAL, BANIT; LI, HUI
To: VMWARE, INC.
Reel/Frame 034901/0825 →
Continuity (2)
Provisional Application 62041046 · Aug 23, 2014
Related Publication 20160055017A1 · Feb 25, 2016