Skip to content


How to Speed Up Azure Virtual Desktop (AVD) With Ephemeral OS Disks – and Save On Storage Costs, Too

Microsoft announced General Availability of Azure Ephemeral OS disks in July of 2019.  “This unique Azure feature with a fancy-sounding name doesn’t get a tremendous amount of attention but holds great promise for those deploying Microsoft Azure with Azure Virtual Desktop (AVD).”  let’s take a look at two major advantages they provide when it comes to AVD: performance and cost savings.

Azure Storage Overview

Let’s start with a brief overview of Azure storage as it relates to AVD.  Specifically, we are going to focus on storage related to the AVD session host virtual machine (VM), which is where the Windows 10 (or Windows Server) operating system is installed and running.  We won’t delve into the storage of FSLogix profiles or other user data and will focus primarily on the operating system.

Each Azure VM must have an OS disk attached to it.  This typically comes in the form of a Managed Disk.  Managed disks come in a variety of predefined sizes and storage types:

  • Standard HDD: S-disks
  • Standard SSD: E-disks
  • Premium SSD: P-disks
  • Ultra SSD: U-disks

For this discussion, let’s remember that managed OS disks are stored separately from the VM itself and have a monthly storage fee associated with this storage capacity.  Being stored separately from the VM makes a managed disk persistent, which means that if the VM gets moved to another physical host on the Azure infrastructure, the disk contents are retained and get attached to the VM after it moves.  Managed disks are perfect for storing important information that must be retained but this comes at a cost of monthly fees ($) and lower performance since they are accessed by the VM across a storage network, as opposed to being locally attached to the physical host hardware where the VM is running.

What’s Different About Ephemeral OS disks?

Ephemeral OS disks (EOSD) are fundamentally different from Managed Disks in that they are stored on the local SSD disk cache of the physical host where each individual VM runs.  This makes them much faster than network-attached Managed Disks because they are local, and Microsoft doesn’t charge for them.  That’s right – the cost of an EOSD is $0/month.

So, what’s the catch?

Well, there are a handful of things to keep in mind.  EOSD are non-persistent, meaning that any data stored on them is gone if the VM moves from one physical host to another (e.g. as part of a deallocate/allocate process, the crash of hardware, or some other reason).  This makes the use-case for EOSD limited to situations where data on the EOSD doesn’t have to be retained and it can always be based on a generalized Azure image that’s pre-packaged and read-only.

Let’s consider the AVD use case.  We discussed in previous articles how leveraging Azure VM Scale Sets (VMSS) reduces the cost of AVD deployment by up to 75% and simplifies the management of AVD session hosts at scale.  Now let’s see how Azure VM Scale Set integration adds another set of benefits by enabling the use of Ephemeral OS disks.

AVD session hosts that are VMSS instances are based on a generalized Azure image that is set on the VMSS.  Updating the image causes the instances to become “out-of-date” and VMSS, in combination with Nerdio for Azure, can be used to easily bring them up to the latest version of the image automatically.  In this scenario, the VMSS instances (i.e. AVD session hosts) are non-persistent VMs that come and go daily as the VMSS scales out and then back in.  This scenario makes EOSD the perfect technology to be used with AVD session hosts and VMSS instances.  Since each VMSS instance, VM is non-persistent, the OS disk can be destroyed and re-created each time from an image that’s configured by the administrator.

How it all works

Although the concepts are somewhat advanced, putting them into practice with Nerdio is surprisingly easy.  When creating a new AVD desktop pool in the Nerdio Admin Portal, you simply check the box to enable EOSD.

nerdio admin portal

Once the AVD desktop pool is created, it will be labeled as using EOSD.  You can see below that Pool A is using Standard SSD disks while Pool B is using EOSD.

AVD desktop nerdio

That’s it!  This is all it takes to take advantage of Ephemeral OS disks with Nerdio. 

The End Result of EOSD

Using EOSD results in faster disk performance on individual AVD session hosts.  How much faster? Let’s compare a typical AVD host with a Standard SSD Managed Disk with one using an EOSD.

The first thing to keep in mind is that virtual desktops have a unique disk I/O profile.  Here is a graphical representation of a typical virtual desktop.  Note that the I/O is predominantly random with very little sequential access.  This means that the perceived user performance is significantly influenced by random writes and reads.

typical virtual desktop disk IO profile

To compare the difference in performance between VMs with a Standard SSD disk (E10) and a comparable EOSD we used Microsoft’s DiskSpd utility.  The VM size used for testing was a D8sv3 running in the East US 2 region.  The commands used and the raw results are below, and graphical representations follow.

microsoft diskspd unity

Let’s see how a session host with EOSD compares to one with a Standard SSD (E10) disk.

session host eosd

From an IOPS perspective, it is clear that random access read, and especially write, operations are much faster with EOSD than Standard SSD.  Random reads are 117% faster and random writes are 1,285% faster.  Look at the difference in sequential write speed!  Albeit that it’s not a common type of I/O for a virtual desktop.


When it comes to throughput it again looks like EOSD is the clear winner.  Random reads are more than 2X faster and random writes are 15X faster.

desktop latency

Finally, from a disk latency perspective it is again clear how much lower latency EOSD is compared to Standard SSD.

Beyond better performance, the cost of individual OS disks becomes free with EOSD.  A comparably sized Standard SSD would be about $10/month for each session host disk, plus the cost of storage operations.  At scale, with dozens, or hundreds, of session host VMs, the savings of using EOSD add up quickly.

Are there any “gotchas”?

As with every complex technology, there are trade-offs to consider.  The advantages of EOSD over managed OS disks are better performance and lower costs.  But there are also some limitations.

  • VMs with EOSD cannot be deallocated (i.e. stopped). This is because deallocating a VM would require destroying its EOSD as when it starts up again it’s likely to be on another physical host and won’t have access to its EOSD.  This means that to stop paying for these VMs they must be destroyed (as happens automatically with VMSS instances and Nerdio) or you can use Azure Reserved Instances, where shutting VMs down is not necessary for cost savings. 
  • From a cost perspective, EOSDs only make sense when you’re using Azure VM Scale Sets and deploying *multiple* VMs based on a single image. If you want to use EOSDs with a single VM you’d need to have a corresponding image, which is not free and costs as much as a managed disk.  In such a case, you wouldn’t be saving money since the savings on EOSD are consumed by the cost of the image.  However, if you have a VMSS with multiple instances then the cost of a single image is negligible in comparison to the savings from replacing multiple managed OS disks with EOSD.
  • Not all VM sizes support EOSD. The requirements are: the VM family must support Premium Storage (this excludes families like A-series), support disk caching (this excludes families like Bs-series), and the individual VM sizes have sufficient disk cache that exceeds the size of the OS image.  For instance, D8sv3 and E8sv3 each have 200GB of cache size that will fit the Nerdio optimized Windows 10 image.  Smaller VMs cannot be used with EOSD since their associated cache size cannot hold the entire OS image.  Therefore, the smallest VM size that is supported are D8sv3 and E8sv3.  Fortunately, DSv3 and ESv3 are the most popular families for AVD session host workloads.

Integrating Ephemeral OS disks, Azure VM Scale Sets, and AVD create a powerful combination of high-performance virtual desktops at an untouchable cost structure and is yet another innovation and enhancement that Nerdio delivers on top of native AVD functionality and Azure technology. We’re always on the lookout for creative ways to put Microsoft’s technology to work in the most cost-effective way for our partners and customers.


Multi-Cloud and On-Premises Deployment with Azure Stack HCI (Coming Soon)

Deploy Azure Virtual Desktop in Azure and extend the session host VM placement to on-premises and other cloud using Azure Stack HCI. Nerdio Manager automates deployment of session hosts, AVD agent installation, and full integration into the AVD deployment in Azure.

Create a brand new Azure Virtual Desktop environment or allow Nerdio Manager to discover an existing deployment, connecting to existing resources, and manage them.

Deploy Nerdio Manager from Azure Marketplace and configure a new AVD environment with an easy to follow, step-by-step configuration wizard. First group of users can access their AVD desktop in less than 2 hours.

Service providers, system integrators, and consultants can leverage Nerdio Manager’s scripted AVD deployment template. Create complete environments with desktop images, host pools, and auto-scaling in minutes.

Create and manage AVD environments that span Azure regions and subscriptions. Quickly link Vnets and resource groups and manage AVD deployments world-wide from unified portal.

Link multiple Azure tenants under the same Nerdio Manager instance and manage AVD deployments that span Azure AD tenants. User identities and session host VMs can run in separate tenants for maximum flexibilty and security.

Deploy and manage AVD environments that span across sovereign Azure Clouds. Cross-sovereign cloud support allows identity (e.g. users and groups) to be in one Azure Cloud, while session host VMs are in another Azure Cloud.

Management of workspaces, host pools, app groups, RemoteApps & custom RDP settings

Administer every aspect of AVD with Nerdio Manager including workspaces, host pools, application groups, RemoteApp publishing, RDP properties, session time limits, FSLogix, and much, much more. Every Azure service that AVD relies on can be managed with Nerdio Manager.

Deploy and manage AVD session host VMs. Hosts can be created manually or with auto-scaling, deleted on-demand or on a schedule, re-imaged to apply updates, run a scripted action, resized, put into or taken out of drain mode, and more.

Manage user sessions across the entire AVD environment, within a workspace, host pool or on a single host. Monitor session status, disconnect or log off the user, shadow or remote control to provide support, or send user an on-screen message.

End users have the ability to log into Nerdio Manager with their Azure AD credentials and manage their own session, restart their desktop VM, or start a session host if none are started in a host pool. (Ability to resize and re-image own desktop is coming soon.)

Create, link, and manage Azure Files shares including AD domain join. Synchronize Azure Files permissions with host pools, configure quotas, and enable SMB multi-channel. Manage file lock handles and configure Azure Files auto-scaling to increase quota as needed.

Create, link, and manage Azure NetApp Files accounts, capacity pools and volumes. Configure provisioned volume size, monitor usage, and use auto-scaling to automatically adjust volume and capacity pool size to accommodate the needed capacity and latency requirements.

FSLogix configuration can be complex and overwheling, but not with Nerdio Manager. Create one or more FSLogix profiles with all the needed options, point at one or more Azure Files, Azure NetApp Files, or server locations and select from VHDLocations, CloudCache and Azure Blob storage modes.

Multiple identity source profiles can be set up and used automatically on different host pools. Active Directory, Azure AD DS, and Native Azure AD are all supported. Choose the appropriate directory profile when adding a host pool and all VMs will automatically join this directory when being created.

Create a copy of a host pool with all of its settings: auto-scale config, app groups and RemoteApps, MSIX AppAttach, user/group assignments, VM deployment settings, etc. Save time by creating host pool “templates” that can be cloned to any Workspace, Azure region or subscription instead of starting from scratch.

Apply user session time limits at host pool level. Automatically log off disconnected sessions, limit the duration of idle sessions, control empty RemoteApp session behavior and more.

Assign Azure AD users to personal desktops to ensure the user will log into a pre-configured VM. Un-assign personal desktops from users who leave the organization and re-use these VMs for new users.

Pre-configure custom Azure tags for all Azure resources associated with each host pool. Tags can be used for charge-back and cost allocation by host pool.

When creating session hosts using NV-series VMs NVIDIA and AMD GPU drivers are automatically installed.

Move existing host pools from Fall 2019 (Classic) object model to Spring 2020 (ARM) object model. Choose to whether to move or copy user assignments. Existing session hosts are automatically migrated or new ones can be created in the ARM host pool.

Automatically enable and configure AVD integration with Azure monitor. Zero configuration required. Azure Monitor Insights for AVD can be used instead of or in conjunction with Sepago Monitor.

AVD personal desktops to Windows 365 Cloud PC migration (Coming Soon)

Migrate users from AVD personal desktops to Windows 365 Enterprise Cloud PCs using an existing image and user assignment. (Coming soon)


Cloud PC License Usage Optimization (Coming Soon)

Cloud PC device lifecycle management

Cloud PC user group assignment

Intune primary user management on Cloud PCs

Migrate AVD personal desktops to Cloud PCs (Coming Soon)

Get Certified