IP Library Granted Patent US 10,936,352
Granted Patent B2
US 10,936,352 · App. 16/449,379 · Granted Mar 2, 2021

High performance application delivery to VDI desktops using attachable application containers

Inventors: Sisimon Soman (Sunnyvale, CA); Arun Passi (Palo Alto, CA); Parag Chakraborty (San Jose, CA)
Assignee: VMware, Inc.
G06F9/4555G06F3/064G06F3/067G06F3/0607G06F9/30047G06F9/45558G06F12/0862G06F2009/45579G06F2009/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 10,936,352
App. No.
16/449,379
Granted
Mar 2, 2021
Kind
B2
Abstract

A system is described for high-performance delivery of applications via attachable application storage volumes (ASV), particularly in cloud-based VDI environments, by precaching application data that is determined by learning the application behavior. Data blocks for files that are likely to be used by the application are prefetched and cached by virtual machines before the application requests those blocks so that the relevant data is instantly available in memory when required without needing to wait for the data to be transmitted from the ASV. In order to efficiently prefetch content, the read pattern for application files and their corresponding blocks is inspected. This information is used during application delivery after a user logs onto the virtual machine to selectively prefetch those blocks from the ASVs. As a result, when the user launches those applications, the system avoids the performance penalty of reading those blocks from the ASV.

Claims (49)

1. A method for delivering an application contained in an application storage volume (ASV) residing on a storage device to a virtual machine (VM) hosted on a server, comprising:

by an agent executing on the VM, mounting the ASV on the VM to make the application executable in the VM from the ASV;

reading a manifest in the ASV to identify a set of data blocks that are likely to be accessed during application launch, wherein the manifest is generated during an application capture process of the ASV;

prior to receiving a request to launch the application, pre-fetching the set of data blocks of the application identified in the manifest by the agent and storing the set of data blocks into a cache associated with the VM;

receiving a request to launch the application on the VM; and

launching the application on the VM from the ASV by accessing the retrieved pre-fetched data blocks in the cache associated with the VM.

2. The method of claim 1 , wherein generating the manifest during the application capture process further comprises:

intercepting file and registry operations made during installation of the application on a staging virtual machine and redirecting the file and registry operations to the ASV;

upon completion of the installation, launching the application on the staging virtual machine; and

monitoring read operations made during the launching of the application to identify the set of data blocks that are likely to be accessed during the application launch.

3. The method of claim 2 , wherein generating the manifest further comprises:

launching the application on the staging virtual machine in a hidden session, wherein user interface operations of the application launch are invisible to a user in the hidden session.

4. The method of claim 2 , wherein the identified set of data blocks that are likely to be accessed during the application launch are rearranged on the ASV to be placed sequentially in the order that the identified data blocks are accessed by the application during the launching of the application on the staging virtual machine.

5. The method of claim 1 , wherein the ASV contains a plurality of applications, and wherein the ASV agent pre-fetches data blocks used during launch of each of the plurality of applications in a specified order, wherein the specified order is based on a prediction of an order in which a user of the VM will launch the plurality of applications.

6. The method of claim 5 , wherein the prediction of the order in which the user of the VM will launch the plurality of applications is determined based on observations of orders in which the user of the VM has launched the plurality of applications on the VM in the past.

7. The method of claim 1 , wherein the ASV is located on a network share and is accessed remotely by the VM.

8. A computing device for delivering an application contained in an application storage volume (ASV) residing on a storage device to the computing device, comprising:

at least one processor; and

memory including instructions that, when executed by the at least one processor, cause the computing device to perform the steps of:

by an agent executing on the computing device, mounting the ASV on the computing device to make the application executable in the computing device from the ASV;

reading a manifest in the ASV to identify a set of data blocks that are likely to be accessed during application launch, wherein the manifest is generated during an application capture process of the ASV;

prior to receiving a request to launch the application, pre-fetching the set of data blocks of the application identified in the manifest by the agent and storing the set of data blocks into a cache associated with the computing device;

receiving a request to launch the application on the computing device; and

launching the application on the computing device from the ASV by accessing the retrieved pre-fetched data blocks in the cache associated with the computing device.

9. The computing device of claim 8 , wherein generating the manifest during the application capture process further comprises:

intercepting file and registry operations made during installation of the application on a staging virtual machine and redirecting the file and registry operations to the ASV;

upon completion of the installation, launching the application on the staging virtual machine; and

monitoring read operations made during the launching of the application to identify the set of data blocks that are likely to be accessed during the application launch.

10. The computing device of claim 9 , wherein generating the manifest further comprises:

launching the application on the staging virtual machine in a hidden session, wherein user interface operations of the application launch are invisible to a user in the hidden session.

11. The computing device of claim 9 , wherein the identified set of data blocks that are likely to be accessed during the application launch are rearranged on the ASV to be placed sequentially in the order that the identified data blocks are accessed by the application during the launching of the application on the staging virtual machine.

12. The computing device of claim 8 , wherein the ASV contains a plurality of applications, and wherein the ASV agent pre-fetches data blocks used during launch of each of the plurality of applications in a specified order, wherein the specified order is based on a prediction of an order in which a user of the computing device will launch the plurality of applications.

13. The computing device of claim 12 , wherein the prediction of the order in which the user of the computing device will launch the plurality of applications is determined based on observations of orders in which the user of the computing device has launched the plurality of applications on the computing device in the past.

14. The computing device of claim 8 , wherein the ASV is located on a network share and is accessed remotely by the computing device.

15. A non-transitory computer readable storage medium for delivering an application contained in an application storage volume (ASV) residing on a storage device to a virtual machine (VM) hosted on a server, comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:

by an agent executing on the VM, mounting the ASV on the VM to make the application executable in the VM from the ASV;

reading a manifest in the ASV to identify a set of data blocks that are likely to be accessed during application launch, wherein the manifest is generated during an application capture process of the ASV;

prior to receiving a request to launch the application, pre-fetching the set of data blocks of the application identified in the manifest by the agent and storing the set of data blocks into a cache of associated with VM;

receiving a request to launch the application on the VM; and

launching the application on the VM from the ASV by accessing the retrieved pre-fetched data blocks in the cache associated with the VM.

16. The non-transitory computer readable storage medium of claim 15 , wherein generating the manifest during the application capture process further comprises:

intercepting file and registry operations made during installation of the application on a staging virtual machine and redirecting the file and registry operations to the ASV;

upon completion of the installation, launching the application on the staging virtual machine; and

monitoring read operations made during the launching of the application to identify the set of data blocks that are likely to be accessed during the application launch.

17. The non-transitory computer readable storage medium of claim 16 , wherein generating the manifest further comprises:

launching the application on the staging virtual machine in a hidden session, wherein user interface operations of the application launch are invisible to a user in the hidden session.

18. The non-transitory computer readable storage medium of claim 16 , wherein the identified set of data blocks that are likely to be accessed during the application launch are rearranged on the ASV to be placed sequentially in the order that the identified data blocks are accessed by the application during the launching of the application on the staging virtual machine.

19. The non-transitory computer readable storage medium of claim 15 , wherein the ASV contains a plurality of applications, and wherein the ASV agent pre-fetches data blocks used during launch of each of the plurality of applications in a specified order, wherein the specified order is based on a prediction of an order in which a user of the VM will launch the plurality of applications.

20. The non-transitory computer readable storage medium of claim 19 , wherein the prediction of the order in which the user of the VM will launch the plurality of applications is determined based on observations of orders in which the user of the VM has launched the plurality of applications on the VM in the past.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2019
From: SOMAN, SISIMON; PASSI, ARUN; CHAKRABORTY, PARAG
To: VMWARE, INC.
Reel/Frame 049719/0688 →