Citrix Provisioning (PVS), formerly known as Provisioning Services, is a widely used technology that has been a part of the Citrix portfolio since 2006. Over the years, the surrounding technology landscape has changed drastically. We’ve transitioned from physical to virtual servers, moved from 1 Gbps (or less) to 10 Gbps+ networks, and witnessed a myriad of different operating system releases. As a result, many of our past recommendations are no longer applicable to the world we currently live in. This blog will provide the most recent and recommended PVS deployment practices to keep your PVS environment running optimally, ensuring satisfaction for both your business and its users.
Please note that these recommendations apply to all currently supported PVS versions; if your settings are not aligned, it isn’t strictly necessary to change them back if the current settings are working without any issues. If you still want to adjust them, make sure you test thoroughly!
Recommendations that are no longer necessary
The following configurations were previously recommended for modification but are no longer necessary. PVS operates effectively with its default settings, making your life simpler as an administrator.
- Avoid Modifying the Threads Per Port and Streaming Ports. In the past, it was suggested to optimize CPU utilization on the PVS server by adjusting the Threads Per Port and Ports. However, the original guidance to modify these settings was issued nearly a decade ago, and the product has changed over time. The latest engineering tests show that the default number of ports works well for performance. As a result, we now recommend keeping the default configurations, which are suitable for most use cases. Only modify these if the default ports are already in use, you have a security-related reason, or you receive a specific request from Support to change them. In general, avoid modifying any of the settings in the advanced server properties.
- Avoid Modifying Maximum Boot Time and Maximum Devices Booting. Similar to above, only make changes to these settings in the pacing tab if requested by Support. The default values are suitable for most use cases.
- Do Not Disable Task/TCP/Large Send Offloading. Although disabling these technologies was recommended when PVS was first introduced ~20 years ago, the issues that necessitated these tweaks are no longer relevant. Moreover, it’s important to note that PVS streaming traffic is UDP-based, so TCP offloading is not applicable.
Recommendations That Require Planning
This second section of recommendations requires proper planning to implement them correctly. Think through these and make sure your environment is prepared so that your deployment goes smoothly!
- Plan for UEFI instead of BIOS. Citrix Provisioning support for BIOS has been deprecated since version 2203, so it is no longer recommended to create new target devices using BIOS. UEFI is a faster, more secure, and more modern boot method. For information on how to configure PVS to use UEFI, please refer to the product documentation.
- Plan Conservatively for PVS Server Memory. For new PVS deployments, calculate the PVS server memory using this rule of thumb (which is in my opinion, old but gold): 2GiB + (#Multi-Session-OS_vDisk * 4GiB) + (#Single-Session-OS_vDisk * 2GiB) + 15% (Buffer). This formula allocates enough memory to a PVS server for a vDisk’s boot-time data to be cached entirely in memory. This ensures that multiple identical targets booting simultaneously only need the PVS server to read from the vDisk store once during the boot process. It’s better to start with more memory than necessary for optimal performance, and then fine-tune based on actual usage. To do so, monitor PVS server memory utilization using Windows Performance Monitor’s Cache\Copy Read Hits % counter, aiming for consistent values over 95%. Start high with your PVS server’s memory allocation, and then subtract as needed.
Miscellaneous Recommendations
This last section consists of miscellaneous configurations related to performance. Follow these recommendations for the optimal tradeoff between performance and administrative overhead.
- Avoid Boot Time Access (and Near-Boot Time Access). Ensure you do not have software installed or settings configured that cause excessive disk access at boot time (or right after boot time) to minimize the length of the PVS boot process. Also, make sure that antivirus definitions are up to date in the image (refer here for our latest recommendations). Review CTX476110 which discusses a Windows feature that verifies all system drivers at boot time, which can cause unnecessary boot time access and prolong the PVS boot process.
- Jumbo Frames are Probably Not Worth Implementing. While they can optimize network traffic performance by allowing payloads greater than 1500 bytes, this approach requires ensuring that every intermediate networking device has jumbo frames enabled as well. If this isn’t the case, streaming performance will be poor due to packet fragmentation and retransmission. Nowadays, I do not see many customers configuring this as most corporate networks are 10Gbps+ and the added complexity outweighs the performance improvement.
Conclusion
It’s been said before – best practices should evolve. These are the up-to-date recommended practices for deploying PVS in 2023. Consider contacting Citrix Professional Services to assist you with a PVS design to help you work through these considerations. If you have any questions, please do not hesitate to reach out. Happy architecting!
Thanks to my colleagues from the Solutions Delivery Architecture and product teams (Matt Greenbaum, Mike Havens, Rob Zylowski, Brian Jozefat, Jason Delgado, Jitao Hou, and Simon Graham) who all contributed their expertise to this blog post.