--- title: Performance Guidance for Application Virtualization (Windows 10) description: Performance Guidance for Application Virtualization author: MaggiePucciEvans ms.pagetype: mdop, appcompat, virtualization ms.mktglfcycl: deploy ms.sitesec: library ms.prod: w10 --- # Performance Guidance for Application Virtualization **Applies to** - Windows 10, version 1607 Learn how to configure App-V for optimal performance, optimize virtual app packages, and provide a better user experience with RDS and VDI. Implementing multiple methods can help you improve the end-user experience. However, your environment may not support all methods. You should read and understand the following information before reading this document. - [Application Virtualization (App-V) overview](appv-for-windows.md) - [Application Publishing and Client Interaction](appv-application-publishing-and-client-interaction.md) - [App-V Sequencing Guide](https://www.microsoft.com/en-us/download/details.aspx?id=27760) **Note** Some terms used in this document may have different meanings depending on external source and context. For more information about terms used in this document followed by an asterisk * review the [Application Virtualization Performance Guidance Terminology](#bkmk-terms1) section of this document. Finally, this document will provide you with the information to configure the computer running App-V client and the environment for optimal performance. Optimize your virtual application packages for performance using the sequencer, and to understand how to use User Experience Virtualization (UE-V) or other user environment management technologies to provide the optimal user experience with App-V in both Remote Desktop Services (RDS) and non-persistent virtual desktop infrastructure (VDI). To help determine what information is relevant to your environment you should review each section’s brief overview and applicability checklist. ## App-V in stateful\* non-persistent deployments This section provides information about an approach that helps ensure a user will have access to all virtual applications within seconds after logging in. This is achieved by uniquely addressing the often long-running App-V publishing refresh. As you will discover the basis of the approach, the fastest publishing refresh, is one that doesn’t have to actually do anything. A number of conditions must be met and steps followed to provide the optimal user experience. Use the information in the following section for more information: [Usage Scenarios](#bkmk-us) - As you review the two scenarios, keep in mind that these are the approach extremes. Based on your usage requirements, you may choose to apply these steps to a subset of users and/or virtual applications packages. - Optimized for Performance – To provide the optimal experience, you can expect the base image to include some of the App-V virtual application package. This and other requirements are discussed. - Optimized for Storage – If you are concerned with the storage impact, following this scenario will help address those concerns. [Preparing your Environment](#bkmk-pe) - Steps to Prepare the Base Image – Whether in a non-persistent VDI or RDSH environment, only a few steps must be completed in the base image to enable this approach. - Use UE-V as the User Profile Management (UPM) solution for the App-V approach – the cornerstone of this approach is the ability of a UEM solution to persist the contents of just a few registry and file locations. These locations constitute the user integrations\*. Be sure to review the specific requirements for the UPM solution. [User Experience Walk-through](#bkmk-uewt) - Walk-through – This is a step-by-step walk-through of the App-V and UE-V operations and the expectations users should have. - Outcome – This describes the expected results. [Impact to Package Lifecycle](#bkmk-plc) [Enhancing the VDI Experience through Performance Optimization/Tuning](#bkmk-evdi) ### Applicability Checklist Deployment Environment
![]() |
Non-Persistent VDI or RDSH. |
![]() |
User Experience Virtualization (UE-V), other UPM solutions or User Profile Disks (UPD). |
![]() |
User Experience Virtualization (UE-V) with the App-V user state template enabled or User Profile Management (UPM) software. Non-UE-V UPM software must be capable of triggering on Login or Process/Application Start and Logoff. |
![]() |
App-V Shared Content Store (SCS) is configured or can be configured. |
![]() |
Admin may need to update the VM base image regularly to ensure optimal performance or Admin may need to manage multiple images for different user groups. |
Optimized for Performance | Optimized for Storage |
---|---|
To provide the most optimal user experience, this approach leverages the capabilities of a UPM solution and requires additional image preparation and can incur some additional image management overhead. The following describes many performance improvements in stateful non-persistent deployments. For more information, see [Sequencing Steps to Optimize Packages for Publishing Performance](#sequencing-steps-to-optimize-packages-for-publishing-performance) later in this topic. |
The general expectations of the previous scenario still apply here. However, keep in mind that VM images are typically stored in very costly arrays; a slight alteration has been made to the approach. Do not pre-configure user-targeted virtual application packages in the base image. The impact of this alteration is detailed in the [User Experience Walk-through](#bkmk-uewt) section of this document. |
Optimized for Performance | Optimized for Storage |
---|---|
|
|
Configuration Setting | What does this do? | How should I use it? |
---|---|---|
Shared Content Store (SCS) Mode
|
When running the shared content store only publishing data is maintained on hard disk; other virtual application assets are maintained in memory (RAM). This helps to conserve local storage and minimize disk I/O per second (IOPS). |
This is recommended when low-latency connections are available between the App-V Client endpoint and the SCS content server, SAN. |
PreserveUserIntegrationsOnLogin
|
If you have not pre-configured (Add-AppvClientPackage) a specific package and this setting is not configured, the App-V Client will de-integrate* the persisted user integrations, then re-integrate*. For every package that meets the above conditions, effectively twice the work will be done during publishing/refresh. |
If you don’t plan to pre-configure every available user package in the base image, use this setting. |
MaxConcurrentPublishingRefresh
|
This setting determines the number of users that can perform a publishing refresh/sync at the same time. The default setting is no limit. |
Limiting the number of concurrent publishing refreshes prevents excessive CPU usage that could impact computer performance. This limit is recommended in an RDS environment, where multiple users can log in to the same computer at the same time and perform a publishing refresh sync. If the concurrent publishing refresh threshold is reached, the time required to publish new applications and make them available to end users after they log in could take an indeterminate amount of time. |
Optimized for Performance | Optimized for Storage |
---|---|
After implementing this approach in the VDI/RDSH environment, on first login,
On subsequent logins:
¹ The publishing operation (Publish-AppVClientPackage) adds entries to the user catalog, maps entitlement to the user, identifies the local store, and finishes by completing any integration steps. |
After implementing this approach in the VDI/RDSH environment, on first login,
On subsequent logins:
|
Outcome | Outcome |
---|---|
|
Because the add/refresh must re-configure all the virtual applications to the VM, the publishing refresh time on every login will be extended. |
Step | Consideration | Benefits | Tradeoffs |
---|---|---|---|
No Feature Block 1 (FB1, also known as Primary FB) |
No FB1 means the application will launch immediately and stream fault (application requires file, DLL and must pull down over the network) during launch. If there are network limitations, FB1 will:
|
Stream faulting decreases the launch time. |
Virtual application packages with FB1 configured will need to be re-sequenced. |
Step | Considerations | Benefits | Tradeoffs |
---|---|---|---|
No SXS Install at Publish (Pre-Install SxS assemblies) |
Virtual Application packages do not need to be re-sequenced. SxS Assemblies can remain in the virtual application package. |
The SxS Assembly dependencies will not install at publishing time. |
SxS Assembly dependencies must be pre-installed. |
Step | Considerations | Benefits | Tradeoffs |
---|---|---|---|
Selectively Employ Dynamic Configuration files |
The App-V client must parse and process these Dynamic Configuration files. Be conscious of size and complexity (script execution, VREG inclusions/exclusions) of the file. Numerous virtual application packages may already have User- or computer–specific dynamic configurations files. |
Publishing times will improve if these files are used selectively or not at all. |
Virtual application packages would need to be reconfigured individually or via the App-V server management console to remove associated Dynamic Configuration files. |
Step | Considerations | Benefits | Tradeoffs |
---|---|---|---|
Account for Synchronous Script Execution during Package Lifecycle. |
If script collateral is embedded in the package, Add cmdlets may be significantly slower. Running of scripts during virtual application launch (StartVirtualEnvironment, StartProcess) and/or Add+Publish will impact the perceived performance during one or more of these lifecycle operations. |
Use of Asynchronous (Non-Blocking) Scripts will ensure that the lifecycle operations complete efficiently. |
This step requires working knowledge of all virtual application packages with embedded script collateral, which have associated dynamic configurations files and which reference and run scripts synchronously. |
Remove Extraneous Virtual Fonts from Package. |
The majority of applications investigated by the App-V product team contained a small number of fonts, typically fewer than 20. |
Virtual Fonts impact publishing refresh performance. |
Desired fonts will need to be enabled/installed natively. For instructions, see Install or uninstall fonts. |