The Citrix Hypervisor PVS-Accelerator feature offers extended capabilities for customers using Citrix Hypervisor with Citrix Provisioning. Citrix Provisioning is a popular choice for image management and hosting for Citrix Virtual Apps and Desktops. PVS-Accelerator dramatically improves the already excellent combination of Citrix Hypervisor and Citrix Provisioning. Some of the benefits that this new feature provides include:
Data locality: Use the performance and locality of memory, SSD, and NVM devices for read requests, while substantially reducing network utilization.
Improved end-user experience: Data locality enables a reduction in the read I/O latency for cached target devices (VMs), further accelerating end-user applications.
Accelerated VM boots and boot storms: Reduced read I/O-latency and improved efficiency can accelerate VM boot times and enable faster performance when many devices boot up within a narrow time frame.
Simplified scale-out by adding more hypervisor hosts: Fewer Citrix Provisioning servers may be needed as the storage load is efficiently dispersed across all Citrix Hypervisor servers. Peak loads are handled using the cache within originating hosts.
Reduced TCO and simplified infrastructure requirements: Fewer Citrix Provisioning servers means a reduction in hardware and license requirements, in addition to reduced management overhead. Freed up capacity is available for workloads.
PVS-Accelerator is available for Citrix Hypervisor Premium Edition customers or those customers who have access to Citrix Hypervisor through their Citrix Virtual Apps and Desktops entitlement. To use the PVS-Accelerator feature, upgrade the License Server to version 11.14.
How does PVS-Accelerator work
PVS-Accelerator employs a Proxy mechanism that resides in the Control Domain (dom0) of Citrix Hypervisor. When this feature is enabled, Citrix Provisioning targets device (VM) read requests are cached directly on the Citrix Hypervisor server machine. These requests are cached in physical memory or a storage repository. When subsequent VMs on that Citrix Hypervisor server make the same read request, the virtual disk is streamed directly from cache, not from the Citrix Provisioning server. Removing the need to stream from the Citrix Provisioning server reduces network utilization and processing on the server considerably. This approach results in a substantial improvement in VM performance.
Customers must complete the following configuration settings in Citrix Hypervisor and in Citrix Provisioning to enable the PVS-Accelerator feature:
Install the PVS-Accelerator Supplemental Pack on each Citrix Hypervisor server in the pool. The supplemental pack is available to download from the Citrix Hypervisor Product Downloads page. You can install the supplemental pack using XenCenter or the xe CLI. For information about installing a supplemental pack using XenCenter, see Installing Supplemental Packs in the XenCenter documentation. For CLI instructions, see the Citrix Hypervisor Supplemental Packs and the DDK Guide.
- Configure PVS-Accelerator in Citrix Hypervisor by using XenCenter or the xe CLI. This configuration includes adding a Citrix Provisioning site and specifying the location for Citrix Provisioning cache storage.
- For CLI instructions, see Configuring PVS-Accelerator in Citrix Hypervisor by using the CLI in the following section.
- For information about configuring PVS-Accelerator using XenCenter, see PVS-Accelerator in the XenCenter documentation.
- After configuring PVS-Accelerator in Citrix Hypervisor, complete the cache configuration for the PVS Site using the PVS UI. For detailed instructions, see Completing the cache configuration in Citrix Provisioning.
Configure PVS-Accelerator in Citrix Hypervisor by using the CLI
Run the following command to create a Citrix Provisioning site configuration on Citrix Hypervisor:
PVS_SITE_UUID=$(xe pvs-site-introduce name-label=My PVS Site)
For each host in the pool, specify what cache to use. You can choose to store the cache on a storage repository (SR) or in the Control Domain Memory.
Configure cache storage on a storage repository
Consider the following characteristics when choosing a storage repository (SR) for cache storage:
- Most recently read data is cached in the memory on a best effort basis. Accessing the data can be as fast as using the Control Domain memory.
- The cache can be much larger when it is on an SR. The cost of the SR space is typically a fraction of the cost of the memory space. Caching on an SR can take more load off the Citrix Provisioning server.
- You don’t have to modify the Control Domain memory setting. The cache automatically uses the memory available in the Control Domain and never causes the Control Domain to run out of memory.
- The cache VDIs can be stored on shared storage. However, this choice of storage rarely makes sense. This approach only makes sense where the shared storage is significantly faster than the Citrix Provisioning server.
- You can use either a file-based or a block-based SR for cache storage.
- If the SR is slow and the requested data isn’t in the memory tier, the caching process can be slower than a remote Citrix Provisioning server.
- Cached VDIs that are stored on shared storage cannot be shared between hosts. A cached VDI is specific to one host.
Perform the following steps to configure cache storage on a Storage Repository:
Run the following command to find the UUID of the SR that to use for caching:
xe sr-list name-label=Local storage host=host-name-label --minimal)
Create the cache-storage.
xe pvs-cache-storage-create host=host-name-label pvs-site-uuid=PVS_SITE_UUID \ sr-uuid=SR_UUID size=10GiB
When selecting a Storage Repository (SR), the feature uses up to the specified cache size on the SR. It also implicitly uses available Control Domain memory as a best effort cache tier.
Configuring cache storage in the control domain memory
Consider the following characteristics when choosing the Control Domain memory for cache storage:
Using memory means consistently fast Read/Write performance when accessing or populating the cache.
Hardware must be sized appropriately as the RAM used for cache storage is not available for VMs.
Control Domain memory must be extended before configuring cache storage.
If you choose to store the cache in the Control Domain memory, the feature uses up to the specified cache size in Control Domain memory. This option is only available after extra memory has been assigned to the Control Domain. For information about increasing the Control Domain memory, see Change the amount of memory allocated to the control domain.
After you increase the amount of memory allocated to the Control Domain of the host, the additional memory can be explicitly assigned for PVS-Accelerator.
Perform the following steps to configure cache storage in the Control Domain memory:
Run the following command to find the UUID of the host to configure for caching:
xe host-list name-label=host-name-label --minimal
Create an SR of the special type
xe sr-create type=tmpfs name-label=MemorySR host-uuid=HOST_UUID device-config:uri=""
Run the following command to create the cache storage:
xe pvs-cache-storage-create host-uuid=HOST_UUID pvs-site-uuid=PVS_SITE_UUID sr-uuid=SR_UUID size=1GiB
SR_UUIDis the UUID of the SR created in step b
Complete the cache configuration in Citrix Provisioning
After configuring PVS-Accelerator in Citrix Hypervisor, perform the following steps to complete the cache configuration for the Citrix Provisioning site.
In the Citrix Provisioning Administrator Console, use the Citrix Virtual Desktops Setup Wizard or the Streaming VM Wizard (depending on your deployment type) to access the Proxy capability. Although both wizards are similar and share many of the same screens, the following differences exist:
The Citrix Virtual Desktops Setup Wizard is used to configure VMs running on Citrix Hypervisor hypervisor that is controlled using Citrix Virtual Desktops.
The Streaming VM Wizard is used to create VMs on a host. It does not involve Citrix Virtual Desktops.
Launch the Citrix Provisioning Administrator Console:
Navigate to the Citrix Provisioning site.
Select the Citrix Provisioning site, right-click to expose a contextual menu.
Choose the appropriate wizard based on the deployment. Select the option Enable PVS-Accelerator for all Virtual Machines to enable the PVS-Accelerator feature.
If you are enabling virtual disk caching for the first time, the Citrix Hypervisor screen appears on the Streamed Virtual Machine Setup wizard. It displays the list of all Citrix Provisioning sites configured on Citrix Hypervisor that have not yet been associated with a Citrix Provisioning site. Using the list, select a Citrix Provisioning site to apply PVS-Accelerator. This screen is not displayed when you run the wizard for the same Citrix Provisioning site using the same Citrix Hypervisor server.
Click Next to complete the caching configuration.
Click Finish to provision Citrix Virtual Desktops or Streamed VMs and associate the selected Citrix Provisioning site with the PVS Accelerator in Citrix Hypervisor. When this step is complete, the View PVS Servers button in the PVS-Accelerator configuration window is enabled in XenCenter. Clicking the View PVS Servers button displays the IP addresses of all PVS Servers associated with the Citrix Provisioning site.
Consider the following when using the PVS-Accelerator feature:
The PVS-Accelerator user interfaces in XenCenter and Citrix Provisioning are only exposed if the PVS-Accelerator supplemental pack is installed.
Citrix Provisioning target devices are aware of their proxy status. No additional configuration is required once the capability is installed.
In environments where multiple Citrix Provisioning servers are deployed with the same VHD, but have different file system timestamps, data might be cached multiple times. Due to this limitation, we recommend using VHDX format, rather than VHD for virtual disks.
Do not use a large port range for PVS server communication. Setting a range of more than 20 ports is rarely necessary. A large port range can slow packet processing and increase the boot time of the Citrix Hypervisor control domain when using PVS-Accelerator.
- After you start a VM with PVS-Accelerator enabled, the caching status for the VM is displayed in XenCenter:
- In the PVS tab of the pool or the host
- In the General tab for the VM
- Customers can confirm the correct operation of the PVS-Accelerator using RRD metrics on the host’s Performance tab in XenCenter. For more information, see Monitor and manage your deployment.
- PVS-Accelerator requires Citrix Provisioning 7.13 or later.
- PVS-Accelerator is available for Citrix Hypervisor Premium Edition customers or those customers who have access to Citrix Hypervisor through their Citrix Virtual Desktops and Citrix Virtual Apps entitlement.
- PVS-Accelerator requires License Server 11.14.
- PVS-Accelerator uses capabilities of OVS and is therefore not available on hosts that use Linux Bridge as the network back-end.
- PVS-Accelerator is not supported in conjunction with the vSwitch Controller.
- PVS-Accelerator works on the first virtual network interface (VIF) of a cached VM. Therefore, connect the first VIF to the Citrix Provisioning storage network for caching to work.
- PVS-Accelerator can currently not be used on network ports which enforce that IPs are bound to certain MAC addresses. This switch functionality might be called “IP Source Guard” or similar. In such environments, PVS targets fail to boot with error ‘Login request time out!’ after enabling PVS-Accelerator.
The PVS-Accelerator functionality caches:
Reads from virtual disks but not writes or reads from a write cache
Based on image versions. Multiple VMs share cached blocks when they use the same image version
Devices with any non-persistent write cache type
Virtual disks with the access mode Standard Image. It does not work for virtual disks with the access mode Private Image
Devices that are marked as type Production or Test. Devices marked as type Maintenance are not cached
PVS-Accelerator CLI operations
The following section describes the operations that customers can perform when using PVS-Accelerator using the CLI. Customers can also perform these operations using XenCenter. For more information, see PVS-Accelerator in the XenCenter documentation.
View Citrix Provisioning server addresses and ports configured by Citrix Provisioning
PVS-Accelerator works by optimizing the network traffic between a VM and the Citrix Provisioning server. When completing the configuration on the Citrix Provisioning server, the Citrix Provisioning server populates the
pvs-server objects on Citrix Hypervisor with their IPs and ports. PVS-Accelerator later uses this information to optimize specifically the traffic between a VM and its Citrix Provisioning servers. The configured Citrix Provisioning servers can be listed using the following command:
xe pvs-server-list pvs-site-uuid=PVS_SITE_UUID params=all
Configure a VM for caching
PVS-Accelerator can be enabled for the VM by using any of the following tools:
- Citrix Provisioning CLI
- Citrix Virtual Desktops Setup Wizard
- Streamed VM Setup Wizard
- The xe CLI
The xe CLI configures PVS-Accelerator by using the VIF of a VM. It creates a Citrix Provisioning proxy that links the VM’s VIF with a Citrix Provisioning site.
To configure a VM:
Find the first VIF of the VM to enable caching on it:
VIF_UUID=$(xe vif-list vm-name-label=pvsdevice_1 device=0 --minimal)
Create the Citrix Provisioning proxy
xe pvs-proxy-create pvs-site-uuid=PVS_SITE_UUID vif-uuid=$VIF_UUID
Disable caching for a VM
PVS-Accelerator can be disabled for a VM by destroying the Citrix Provisioning proxy that links the VM’s VIF with a
Find the first VIF of the VM:
VIF_UUID=$(xe vif-list vm-name-label=pvsdevice_1 device=0 --minimal)
Find the Citrix Provisioning proxy of the VM:
PVS_PROXY_UUID=$(xe pvs-proxy-list vif-uuid=$VIF_UUID --minimal)
Destroy the Citrix Provisioning proxy:
xe pvs-proxy-destroy uuid=$PVS_PROXY_UUID
Remove the PVS-Accelerator storage for a host or a site
To remove the PVS-Accelerator storage for a host or a site:
Find the host for which you would like to destroy the storage:
HOST_UUID=$(xe host-list name-label=HOST_NAME --minimal)
Find the uuid of the object:
PVS_CACHE_STORAGE_UUID=$(xe pvs-cache-storage-list host-uuid=$HOST_UUID --minimal)
Destroy the object:
xe pvs-cache-storage-destroy uuid=$PVS_CACHE_STORAGE_UUID
Forget the PVS-Accelerator configuration for a site
To forget the PVS-Accelerator configuration for a site:
Find the Citrix Provisioning site:
PVS_SITE_UUID=$(xe pvs-site-list name-label=My PVS Site)
Run the following command to forget the Citrix Provisioning site:
xe pvs-site-forget uuid=$PVS_SITE_UUID