XenServer

PVS-Accelerator

The XenServer PVS-Accelerator feature offers extended capabilities for customers using XenServer with Citrix Provisioning. Citrix Provisioning is a popular choice for image management and hosting for Citrix Virtual Apps and Desktops or Citrix DaaS. PVS-Accelerator dramatically improves the already excellent combination of XenServer 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 XenServer hosts. 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.

Notes:

PVS-Accelerator is available for XenServer Premium Edition customers. To use the PVS-Accelerator feature, upgrade the Citrix License Server to version 11.14 or later.

To use PVS-Accelerator with UEFI-enabled VMs, ensure that you are using Citrix Provisioning 1906 or later.

How does PVS-Accelerator work

PVS-Accelerator employs a Proxy mechanism that resides in the Control Domain (dom0) of XenServer. When this feature is enabled, Citrix Provisioning targets device (VM) read requests are cached directly on the XenServer host machine. These requests are cached in physical memory or a storage repository. When subsequent VMs on that XenServer host 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.

Considerations

Consider the following when using the PVS-Accelerator feature:

  • 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 on the PVS server is rarely necessary. A large port range can slow packet processing and increase the boot time of the XenServer 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
  • You cannot run more than 200 PVS-Accelerator-enabled VMs on a XenServer host.

  • 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.

  • To use PVS-Accelerator with UEFI-enabled VMs, ensure that you are using Citrix Provisioning 1906 or later.

  • PVS-Accelerator is available for XenServer Premium Edition customers.

  • PVS-Accelerator requires License Server 11.14 or later.

  • PVS-Accelerator uses capabilities of OVS and is therefore not available on hosts that use Linux Bridge as the network back-end.

  • 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.

Enable PVS-Accelerator

Customers must complete the following configuration settings in XenServer and in Citrix Provisioning to enable the PVS-Accelerator feature:

  1. Configure PVS-Accelerator in XenServer 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 XenServer by using the CLI in the following section.
    • For information about configuring PVS-Accelerator using XenCenter, see PVS-Accelerator in the XenCenter documentation.
  2. After configuring PVS-Accelerator in XenServer, complete the cache configuration for the PVS Site using the PVS UI. For detailed instructions, see Completing the cache configuration in Citrix Provisioning.

Configuring ports

Citrix Provisioning Services uses the following ports:

  • 6901, 6902, 6905: Used for provisioning server outbound communication (packets destined for the target device)
  • 6910: Used for target device logon with Citrix Provisioning Services
  • Configurable target device port. The default port is 6901.
  • Configurable server port range. The default range is 6910-6930.

For information about the ports used by Citrix Provisioning Services, see Communication ports used by XenServer.

The configured port range in XenServer must include all the ports in use. For example, use 6901-6930 for the default configuration.

Note:

Do not use a large port range for PVS server communication. Setting a range of more than 20 ports on the PVS server is rarely necessary. A large port range can slow packet processing and increase the boot time of the XenServer control domain when using PVS-Accelerator.

Configure PVS-Accelerator in XenServer by using the CLI

  1. Run the following command to create a Citrix Provisioning site configuration on XenServer:

    PVS_SITE_UUID=$(xe pvs-site-introduce name-label=My PVS Site)
    
  2. 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:

Advantages:

  • 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.

Disadvantages:

  • 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:

  1. 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)
    <!--NeedCopy-->
    
  2. 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
    <!--NeedCopy-->
    

    Note:

    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:

Advantages:

Using memory means consistently fast Read/Write performance when accessing or populating the cache.

Disadvantages:

  • 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.

    Note:

    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:

    1. Run the following command to find the UUID of the host to configure for caching:

      xe host-list name-label=host-name-label --minimal
      <!--NeedCopy-->
      
    2. Create an SR of the special type tmpfs:

      xe sr-create type=tmpfs name-label=MemorySR host-uuid=HOST_UUID device-config:uri=""
      <!--NeedCopy-->
      

      Note:

      For SRs of the special type tmpfs, the value of the required parameter name-label is disregarded and a fixed name is used instead.

    3. 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
      <!--NeedCopy-->
      

      Where SR_UUID is the UUID of the SR created in step b

Complete the cache configuration in Citrix Provisioning

After configuring PVS-Accelerator in XenServer, 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 XenServer 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:

  1. Navigate to the Citrix Provisioning site.

  2. Select the Citrix Provisioning site, right-click to expose a contextual menu.

  3. Choose the appropriate wizard based on the deployment. Select the option Enable PVS-Accelerator for all Virtual Machines to enable the PVS-Accelerator feature.

  4. If you are enabling virtual disk caching for the first time, the XenServer screen appears on the Streamed Virtual Machine Setup wizard. It displays the list of all Citrix Provisioning sites configured on XenServer 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 XenServer host.

  5. Click Next to complete the caching configuration.

  6. Click Finish to provision Citrix Virtual Desktops or Streamed VMs and associate the selected Citrix Provisioning site with the PVS Accelerator in XenServer. 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.

Caching operation

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 XenServer 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
<!--NeedCopy-->

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
  • XenCenter
  • 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:

  1. 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)
    <!--NeedCopy-->
    
  2. Create the Citrix Provisioning proxy

    xe pvs-proxy-create pvs-site-uuid=PVS_SITE_UUID vif-uuid=$VIF_UUID
    <!--NeedCopy-->
    

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 pvs-site.

  1. Find the first VIF of the VM:

    VIF_UUID=$(xe vif-list vm-name-label=pvsdevice_1 device=0 --minimal)
    <!--NeedCopy-->
    
  2. Find the Citrix Provisioning proxy of the VM:

    PVS_PROXY_UUID=$(xe pvs-proxy-list vif-uuid=$VIF_UUID --minimal)
    <!--NeedCopy-->
    
  3. Destroy the Citrix Provisioning proxy:

    xe pvs-proxy-destroy uuid=$PVS_PROXY_UUID
    <!--NeedCopy-->
    

Remove the PVS-Accelerator storage for a host or a site

To remove the PVS-Accelerator storage for a host or a site:

  1. Find the host for which you would like to destroy the storage:

    HOST_UUID=$(xe host-list name-label=HOST_NAME --minimal)
    <!--NeedCopy-->
    
  2. Find the UUID of the object:

    PVS_CACHE_STORAGE_UUID=$(xe pvs-cache-storage-list host-uuid=$HOST_UUID --minimal)
    <!--NeedCopy-->
    
  3. Destroy the object:

    xe pvs-cache-storage-destroy uuid=$PVS_CACHE_STORAGE_UUID
    <!--NeedCopy-->
    

Forget the PVS-Accelerator configuration for a site

To forget the PVS-Accelerator configuration for a site:

  1. Find the Citrix Provisioning site:

    PVS_SITE_UUID=$(xe pvs-site-list name-label=My PVS Site)
    <!--NeedCopy-->
    
  2. Run the following command to forget the Citrix Provisioning site:

    xe pvs-site-forget uuid=$PVS_SITE_UUID
    <!--NeedCopy-->
    
PVS-Accelerator