Forum Discussion

BrianPitt's avatar
BrianPitt
Brass Contributor
Mar 20, 2024

Azure Virtual Desktop Host Pool(s) setup recommendations

Looking for some opinions / recommendations on reconfiguring our AVD Host Pool to try and give some better performance to users when accessing it.

 

Currently, we have a single pool of  (14) NV24s_v3 VMs running.   Each VM has over 170 applications installed on it that users can access.  Some of the applications require a GPU and the others do not.  We allow 12 users max per VM as we found that having more than 12 can make the VMs very slow and laggy.  Even with the 12 user limit, we still see issues of CPU maxing out at times depending on what applications are being accessed.  We've seen a couple users on a VM cause the CPU to spike to 100%.  Our disks are 1 TB Premium SSD drives on each VM.   We see disk active times go into the 70-90% consistently with users on the system.

 

Obviously, we could spin up multiple pools running the best GPU VMs and best non GPU VMs, only allow a couple users per VM and things would run great.  That would be very expensive though, so isnt an option!

 

Looking for some opinions / recommendations on how to reconfigure things to get better performance, but not break the bank doing it.

  • tommykneetz's avatar
    tommykneetz
    Iron Contributor
    what about profile management? do use fslogix with azure files or netapp?
    this can reduce your local vm disk iops
  • Hi BrianPitt

    One of my AVD environments has "Process Lasso - Real-Time CPU Optimization and Automation" installed in order to keep session hosts responsive during high CPU loads.

     
     
  • DTB's avatar
    DTB
    Iron Contributor

    Hi BrianPitt,

     

    It sounds like you're dealing with a complex AVD setup with significant performance demands. Here are some suggestions to optimize your environment while being mindful of costs.

    Current Setup Analysis

    1. VM Configuration:

      • You have 14 NV24s_v3 VMs with a maximum of 12 users per VM.
      • NV24s_v3 VMs are quite powerful with GPUs, but high CPU and disk utilization indicate that these resources are being heavily taxed.
    2. Application Load:

      • Over 170 applications, some requiring GPU resources, others not.
      • High CPU spikes with certain applications.
    3. Disk Usage:

      • 1 TB Premium SSD drives on each VM with high disk active times (70-90%).

    Recommendations

    1. Profile Management:

    Implementing a robust profile management solution like FSLogix can significantly reduce the load on your local VM disks. By storing user profiles on Azure Files or Azure NetApp Files, you can offload I/O operations from the VM's local disk, improving overall performance.

    2. Optimize Resource Allocation:

    Consider creating separate pools for GPU and non-GPU applications. While you mentioned the expense of multiple pools, you could balance this by:

    • Scaling the number of VMs: Use a mix of VM sizes tailored to the workload requirements. For example, use NV24s_v3 VMs for GPU-intensive applications and a more cost-effective VM series (like D-series) for non-GPU applications.
    • Dynamic scaling: Implement autoscaling based on the actual load. This way, during peak times, more VMs are spun up, and during off-peak times, they scale down.

    3. Process Optimization:

    As suggested, tools like "Process Lasso" can help manage CPU-intensive applications by prioritizing processes and preventing any single application from monopolizing CPU resources.

    4. Storage Optimization:

    • Azure NetApp Files or Azure Files: These can handle high IOPS and provide better performance for user profiles and application data.
    • Disk Caching: Ensure that disk caching is optimized. For Premium SSDs, consider using "Read-Write" cache for disks where you have high read and write operations.

    5. Application Management:

    • Application Layering: Instead of installing all applications on each VM, consider application layering solutions. This can reduce the footprint of each VM and streamline updates and management.
    • Application Performance Monitoring: Use tools to monitor the performance of individual applications. Identify which applications cause the most CPU or disk spikes and consider optimizing or offloading those specific applications.

    Practical Steps

    1. Evaluate Profile Management Solutions:

      • Implement FSLogix with Azure Files or NetApp Files.
      • Test the impact on disk IOPS and overall performance.
    2. Separate GPU and Non-GPU Workloads:

      • Create a plan for segregating applications based on their GPU requirements.
      • Implement and monitor the performance and cost impact.
    3. Implement Process Optimization:

      • Install and configure Process Lasso or similar tools on session hosts.
      • Monitor the impact on CPU utilization.
    4. Optimize Disk Usage:

      • Review and adjust disk caching settings.
      • Consider Azure NetApp Files for high IOPS needs.

    By carefully analyzing and optimizing each aspect of your AVD environment, you can achieve better performance without significantly increasing costs. I hope these suggestions help you in improving your AVD setup. Feel free to ask if you have more questions or need further assistance.

     

    Best regards,

    Daniel

Resources