# US 2020/0401428 A1 · High performance application delivery to vdi desktops using attachable application containers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0401428 A1
- Document ID: US20200401428A1
- Status: Published application
- Kind: A1
- Application number: 16/449,379
- Filed: 2019-06-22
- Published: 2020-12-24
- Earliest claimed: 2019-06-22
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Sisimon Soman; Arun Passi; Parag Chakraborty
- Web page: https://patentgrep.com/patent/US20200401428A1

## CPC

- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/4555: {Para-virtualisation, i.e. guest operating system has to be modified}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/30047: {Prefetch instructions; cache control instructions}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 12/0862: with prefetch
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2212/1016: Performance improvement
- G06F 2212/151: Emulated environment, e.g. virtual machine
- G06F 2212/154: Networked environment
- G06F 2212/311: In host system
- G06F 2212/6024: History based prefetching
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 4 (depends on 2)

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.

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 5)

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.

### Claim 7 (depends on 1)

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

### Claim 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.

### Claim 9 (depends on 8)

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.

### Claim 10 (depends on 9)

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.

### Claim 11 (depends on 9)

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.

### Claim 12 (depends on 8)

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.

### Claim 13 (depends on 12)

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.

### Claim 14 (depends on 8)

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

### Claim 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.

### Claim 16 (depends on 15)

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.

### Claim 17 (depends on 16)

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.

### Claim 18 (depends on 16)

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.

### Claim 19 (depends on 15)

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.

### Claim 20 (depends on 19)

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.
