Despite all the benefits of cloud-based virtual desktops, such as more location flexibility and easier BYOD support, they do not provide a completely carefree experience for IT.
Virtual desktops can provide lots of value for organizations, but they only perform properly if they are sized correctly. In some ways, this is no different than what organizations would go through with physical PCs. A user who creates computer-aided design (CAD) drawings, for example, will need a more powerful PC than a user who only uses a browser or a single application.
Because users have varying job responsibilities, cloud-based virtual desktop providers from vendors such as Microsoft offer a variety of sizing options. The trick that you, as a virtual desktop administrator, need to figure out is finding the most appropriate virtual desktop size for each job function.
Azure Virtual Desktop hosting pools
Sizing Azure Virtual Desktop environments isn't quite as straightforward as other types of virtual machine sizing. In addition to accounting for application hardware requirements, you will also need to base your sizing on the host pool type. One of the first steps in setting up Azure Virtual Desktop is to create a host pool. These pools can be personal or pooled (Figure 1).
The reason the pool type matters is because it determines whether the virtual desktops are shared. That factor, in turn, determines how much of a load could conceivably be placed on a virtual desktop. According to Microsoft, personal pools have a 1-to-1 user-to-virtual desktop mapping. In other words, each virtual desktop is dedicated to a specific user. On the other hand, pooled virtual desktops are assigned to users based on availability. When a user logs in, they are assigned to one of the virtual desktops in the pool.
Pooled virtual desktops are nonpersistent, meaning that user's settings and data are not stored on the virtual desktop. The virtual desktop is reset to a pristine state at the end of each session, which is helpful for security. Pooled virtual desktops can also be multi-session, meaning that there may be more than one user using a virtual desktop at a given moment. In this case, each user would be signed into a separate profile.
Personal virtual desktops generally offer better performance since there will never be multiple users working from the same virtual desktop. If you do choose to create pooled virtual desktops, however, they will have to be sized somewhat larger since there may be multiple instances of apps running simultaneously in a different session.
Defining user groups for an Azure Virtual Desktop environment
The first step in sizing your Azure virtual machines is to group your users based on their computing needs. Just as some users may have jobs that would require them to have a more powerful physical PC than others, some users will inevitably need more powerful virtual hardware than others. Microsoft defines four general classes of users.
- Light users. Workers who place a minimal load on the available hardware. For example, a user whose job it is to do data entry. A user who work solely from browser-based applications might also be categorized as a light user.
- Medium users. Workers who use some basic desktop applications without placing a significant load on the system. An example of such a user might be someone who spends their day working in Microsoft Word.
- Heavy users. Workers who make use of slightly more demanding desktop applications. This might include content creators, software developers, or those who build and deliver PowerPoint presentations.
- Power users. Workers who place a heavy load on their desktop. This might include users who create CAD drawings, edit videos, do 3D modeling or run several applications at the same time.
Sizing recommendations for Azure Virtual Desktop
Microsoft's Azure Virtual Desktop sizing recommendations vary based on whether the environment is configured for single session, meaning one user per virtual desktop, or multi-session. The following chart illustrates the minimum hardware resources that should be assigned in a single-session environment based on user type.
|Light users||2 vCPUs||8 GB||32 GB|
|Medium users||4 vCPUs||16 GB||32 GB|
|Heavy users||8 vCPUs||32 GB||32 GB|
There are two additional factors to consider with regard to these sizing guidelines. First, as you may have noticed there are no guidelines for power users. As such, you should size power user's virtual desktops based on workload demands.
The second important thing to know about these guidelines is that the storage recommendations do not include space for the user profiles. You will need at least 30 GB of additional storage per virtual desktop to accommodate the user profile.
The sizing guidelines for multi-session environments work a little bit differently. In addition to listing a minimum number of virtual CPUs for example, Microsoft lists the number of users that the virtual desktop can accommodate per virtual CPU. Once again, you will need at least 30 GB of storage beyond the stated minimum to accommodate user profiles. The following are Microsoft's official guidelines for multi-session environments:
|User type||Maximum users per vCPU||vCPUs||RAM||Storage|
|Light users||6||8||16||32 GB|
|Medium users||4||8||16||32 GB|
|Heavy users||2||8||16||32 GB|
|Power users||1||6||56||340 GB|
The values listed in the previous table are Microsoft's recommended bare minimums. Additionally. while you can theoretically create a virtual desktop with fewer vCPUs, Microsoft states that no virtual desktop should ever have fewer than two cores because of the way that the Windows desktop environment relies on parallel processing.
Virtual desktops begin to experience diminishing returns once they have been given more than 16 vCPUs. This is due to the overhead involved in scheduling processes to use the available vCPUs. While you can equip a high-demand virtual desktop with 16 or more vCPU cores, you should never create a virtual desktop with more than 32 cores.
Other considerations for shared Azure Virtual Desktop
If you are planning to create an environment where multiple users will share a collection of Azure virtual desktops, it is important to consider the structure of your AVD when sizing. For example, you will need to consider whether it is better to create a few really large virtual desktops that each handle several users, or if it's better to create a larger number of virtual desktops that will only handle a few users each. Obviously cost issues can come into play, but you should begin your planning from mostly a performance standpoint.
Suppose you have 100 medium-level users who will be using shared cloud virtual desktops. With that in mind, is it better from a performance standpoint to create 50 virtual desktops, each having 8 vCPUs, or to create 20 virtual desktops that are each equipped with 16 vCPUs?
The answer to this question comes down to a concept called burst capacity. A user is not going to use all of the CPU cycles that are available to them most of the time. Even so, there will be CPU spikes that occur because of certain user activities, such as launching an application. The virtual desktop needs to have sufficient resources to deal with these bursts.
In an either-or situation like the previous example, the configuration that offers the lowest user-per-core ratio -- or highest number of cores per user -- will offer better burst performance. Incidentally, personal virtual desktops are not shared and therefore offer the best possible user-per-core ratio and the best overall performance.
In the first scenario, there are 50 virtual desktops with 8 vCPUs each. This means there are a total of 400 vCPUs being shared among 100 users. The total ratio is 4-to-1. This of course falls well within Microsoft's requirement that there be no more than four users per core on medium-sized VMs. In fact, this example is the opposite -- four cores per user, not four users per core -- so these machines should perform very well.
For the second configuration with 20 virtual desktops that have 16 vCPUs each, the pool has a grand total of 320 vCPUs available. When shared among 100 users, the ratio is 3.2 vCPUs per user or 3.2-to-1. This configuration would not offer quite as much burst capacity as the previous configuration because there are fewer cores being allocated to each user.
Realistically, both of these configurations are likely to be oversized and you could probably get away with using smaller virtual desktops. There is certainly nothing stopping you from sizing your AVDs in this way, but doing so would probably lead to excess costs since the users probably won't be consuming all the resources that are available to them.