Note – Microsoft announced the rebrand of Windows Virtual Desktop (WVD) to Azure Virtual Desktop (AVD) in June 2021. Read more about that here.
Information technology and “the cloud” are in no shortage of buzzwords and acronyms. String enough abbreviations together and even the best of us risk losing parts of a conversation. Consistency in the management of cloud solutions is critical to get to the optimal performance of Azure Virtual Desktop (AVD) workloads in Azure. There are many paths to “good enough” and “works for the most part”, but when you place “optimal” in the sentence, it embodies the requirement to bring nothing but the very best of everything. While we can’t cover every topic to get there, we will cover many topics that simplify and place importance on some fundamentals, that when done really well, will lead to a level of optimization. Much like abbreviations, string enough of these together and you will have, in every sense of the words, workload optimization.
Whether you have vast experience or are getting started with AVD, the topics we discuss will either reinforce current methods or create learning and application opportunities. In this article we will cover AVD pool management, Microsoft Azure resources, auto-scale, and user profile management.
AVD Pool Image Management
While there are several aspects to a Azures Virtual Desktop pool, the focus here is around the best practice and optimized use of image templates when orchestrating hosts within a AVD pool. The building blocks for properly managing a template can be broken into three distinct categories.
- Windows 10 Enterprise Virtual Desktop (EVD) Operating system and updates
- Microsoft 365 and Common applications and updates
- Common line of business applications (LOBs)
I will break each of these down as they have a direct impact on workload optimization when management is consistent and measurable.
Windows 10 EVD
While tailored specifically for desktops in Azure, is simply recognized as Windows 10 Enterprise and follows the best practices and methods for management that have been used for years. Feature updates are released twice a year with updates occurring on the second and sometimes fourth Tuesday of the month (patch Tuesday). It is this cadence, that when managed well, will optimize a host of different factors around the OS, performance, security, end user experience, etc.
Feature updates should always be taken as an opportunity to test before deploying fully to the end user population. Nerdio often recommends cloning a current pool and performing the update on the clone pool. Here, testing can be performed and can eventually include a small segment of the end user base for further testing and validation. Once the new OS is accepted as viable, we often recommend moving users to the newly cloned pool that can be crafted to include the appropriate number of hosts to satisfy the capacity of the base. Once the users are assigned to the new pool, the former pool with older OS features can be destroyed. Nerdio has several optimization features that can be used to accelerate the process of assigning users to the new pool.
General patch Tuesday updates should be met with some scrutiny in terms of applying those updates to the templates for a AVD host pool. Security updates, as per best practice, should be vetted and applied first with the additional updates scrutinized for level of impact and utility. Once updates have been applied, some testing should occur in the current pool. After acceptance, the hosts can be created to pick up capacity while allowing the older hosts to naturally drain users and eventually be destroyed. In some cases, a pool can sit out a cycle if there are no major security or feature patches. Establishing a cadence to manage templates is recommended and can be a scheduled part of planned maintenance. Thirty days would certainly be the minimum and would allow the normal Microsoft cadence to be fully observed. Microsoft’s feature updates have a published schedule and can be met with some levels of readiness and planning to vet through any standards and methods. It is this consistency which also allows for higher probabilities of success in other managed environments in terms of supported operating systems.
Microsoft 365, LOBs and FSLogix Tools
This is a great segue to go from the operating system into the licensing that allows end users to access the AVD resources. Insert M365; M365 is a license that satisfies the AVD Windows 10 Enterprise requirement while also including Office Business or ProPlus. Given the ease of licensing and the bundles it includes, having Office installed on the template is an easy decision. This is one application that make perfect sense to have installed and can be done in such a way to follow simple updates when the Semi-Annual channel installation is followed. The Semi-Annual Channel (Targeted) is also an option, however, Microsoft best practice and recommendation is that channel is used on a fraction of the total end user base. Semi-annual is easy to maintain due to its frequency and can become a staple on the image templates for AVD host pools.
While Office Business has typically been a single-user session application, M365 Business Premium does entitle multi-user session capabilities via the management of some minor registry changes. With that in mind, having consistent licensing will ultimately influence the delivery and install of the Office Suite of applications. In rare instances and accounts that have many sessions hosts in a pool, having two office versions is possible, however, it does add some complexity with the assignment of licenses and users to AVD host pools. In this instance, less (options) is more and becomes easier to manage and scale AVD environments.
Line of business applications would be the one item that is more specific to the customer and less about the standards and support items specific to the MSP. LOBs can be installed on a pool image template with the users using those applications spread across multiple pools by LOB application. An example would be general users are on Pool-A, while the accounting group is on Pool-B – where the accounting application is installed. Based on concurrency numbers from users, this setup is not optimized, as the resources to accommodate multiple pools does not scale and can carry additional unnecessary costs. The remedy to this situation preserves consistent pool template management by installing all of the applications on the template, grouping everyone together in the same pool and using FSLogix application masking to only show the applications to users belonging to a specific group. In this optimized configuration, pool resources are scaled to full user population, the template is optimized for easier management, and users will only see the applications they need to see based on group membership.
Another service called MSIX app attach, as it gains popularity and resources (vendors providing MSIX packages), will ultimately lead to better and more efficient application management. Applications will be able to leverage centralized management (consistent and current delivery) and will be made available by user or group delivering applications dynamically. MSIX app attach became available on Windows 10 Ent version 2004.
Resources and Auto-scale
We have progressed from looking at the operating system and applications and will now discuss the underlying resources and virtual machines. Anyone who has ever looked and reviewed all of the available series VMs in Azure could be overwhelmed, to say the least. Fortunately, when it comes to delivering and managing VMs in AVD host pools, there are consistent series VMs that are staples in every environment. Here we will scale down the options and make managing pools that much easier.
Microsoft has broken down VM sizes and series by groups. These intuitive groups are as follows:
- General purpose
- Compute optimized
- Memory optimized
- Storage optimized
- GPU – accelerated compute
- FPGA – accelerate compute
- High performance compute
In a standard and flexible AVD pool, we will focus on the sizes appropriate for multi-session host pools. This would include general purpose, memory optimized, and GPU accelerated. Everything else is well suited for databases, application serving, AI, etc.
Within those three sizes, we can start to break down what is useful and appropriate and what is not useful.
- General Purpose
- A-series – used for dev ops and have no ability to have reserved instances, highly under resourced
- B-series – used for light workloads where compute and memory consumption are consistent and does not have direct interaction with end users, first hour after boot will have throttled CPU and credits need to build up to burst to full CPU utility
- D-series – a series with a core to memory ratio of 1 to 4, great series to use with RemoteApp pools, good series to use with desktops where memory intensive applications like internet browsers are minimized or have good memory consumption and management
- Memory Optimized
- E-series – as series with core to memory ratio of 1 to 8, the added memory is a fraction of the cost to upgrade a VM to a higher series that adds both CPU and memory, great for high memory consumption where applications and internet browsers compound over time
- M-series – boosted memory for database applications where cache can be leveraged to optimize performance of the DB
- GPU Accelerated
- NC and ND – optimized for serving applications that can leverage GPU processing and machine learning applications, application servers
- NVv4 – NV, NVv3 and NVv4 are optimized for remote visualization where applications can leverage GPU processing (design, engineering, 3D, etc.). NV and NVv3 leverage Intel and Nvidia where NVv4 leverage AMD and Radeon.
With the VM size groups defined, we are left with D, E, and NV series as being the clear front runners when provisioning hosts within a pool. Pairing down the options within those sizes by cores further reduces the number of options as 4, 8, and 16 core machines would be the ideal configuration for distribution of users across multiple hosts. Distributing users across multiple hosts will reduce end user impact for an organization if a host were to have challenges. Better to have 15% of users with issues as opposed to 50% if a larger VM was used and could allow for more user sessions. Distributing users and having clear boundaries for host capacity is particularly important with a consistent managed AVD offering.
Now that we have narrowed down the potential VM series for a AVD host pool, we will step out of the technical and will move to the economics of those resources. Managing costs is equally as important. Since Azure billing is a factor of metered consumption, any ability to minimize those costs while preserving end user performance is ideal. There are two items that will allow for the dynamic nature of a host pool (especially pools for a larger user base). Leveraging both Reserved Instances and auto-scaling are great ways to maintain performance while optimizing the economics and resources.
The default metering within an Azure environment is pay-as-you-go (PAYG). Time is metered and Azure bills per the hourly rate of the resource. To create region predictability, Microsoft values the consistency of knowing what resources have a committed purchase and offer a discount to get that commitment by offering Reserved Instances (RI). Reserved instances can be applied to any of the VM series we highlighted above. Over a 1- or 3-year term, providers can pay for committed resources monthly with a significant discount. Simply stated, a reserved instance is the purchase of resources over a committed period; 1- or 3-years.
While purchasing RI may come at a significant discount, in many cases the variability of the end user concurrency will offset any of the savings. An example of this would be RI for 10 AVD 8 core session hosts where only 20 people out of 100 log in that day. The host capacity exceeded the demand and could have easily been turned into savings. This is where managing with a hybrid approach that uses auto-scaling and RI will optimize resources and economics. To extend our prior example in a hybrid approach, having RI on 2 hosts with the remaining 8 on auto-scale would optimize end user performance and economics at the same time. As the end user demand changes, auto-scale provisions or boots PAYG resources to meet the demand. When the demand is removed, the resources are removed or deallocated and the PAYG meter stops. Having both RI and auto-scale applied to hosts in a pool will optimize the end user experience, while also providing substantial cost savings.
User Profile Management – FSLogix
While FSLogix is an application used to manage user profiles, its role inconsistent management to optimize AVD workloads is worthy of mention. Where proper management comes into play is around the VHDX profile disks and the storage requirements needed to ensure end user performance.
Managing the profile size has a direct impact on the performance of a user’s session. The current default and best practice is a maximum size of 30GB. Having methods of procedures to monitor and/or manage profile disks and those users approaching the limit will help to avoid issues and optimize end user experience. While the virtual disk can certainly be expanded beyond defaults, the better solution is to follow the defaults for consistency and identify the elements that are causing the profile bloat. On average, a user profile will typically be between 12 and 15GB.
Much like having virtual profile disks within thresholds, the same would apply to the storage managing those profiles. Throughput and IOPS is crucial to create the expected end user experience. As the saying goes, “you can’t manage it if you can’t measure it”. This raises the importance of having some reliable cadence as to the performance of the storage being used, managed disks or Azure files, monitoring and validating proper thresholds and measures will facilitate performance issues before they manifest into bigger problems.
We have covered a lot of ground here when it comes to consistent management to optimize workloads. We have looked at both technical and economic factors that when done consistently will lead to positive results and customer/end user satisfaction. While many of these concepts are applicable in and around Azure natively, it is worth identifying that the core of Nerdio is and will continue to be rooted on optimization. In the case of Nerdio products, the orchestration for many of the concepts covered in this article provide reliable and efficient means to align with the outcomes expected when consistent management is employed. The flexibility and ease with which Nerdio products can align with procedures and policies makes it a good fit and added accountability when meeting the demands of customers.
Try Nerdio Manager for Enterprise out today for free!