Forum Discussion
Azure Virtual Desktop Host Pool(s) setup recommendations
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
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.
Application Load:
- Over 170 applications, some requiring GPU resources, others not.
- High CPU spikes with certain applications.
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
Evaluate Profile Management Solutions:
- Implement FSLogix with Azure Files or NetApp Files.
- Test the impact on disk IOPS and overall performance.
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.
Implement Process Optimization:
- Install and configure Process Lasso or similar tools on session hosts.
- Monitor the impact on CPU utilization.
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