This post is also available in: Italian

Reading Time: 3 minutes

The latest Microsoft Windows Server 2016 Technical Preview 4 add an interesting new features in Hyper-V: Discrete Device Assignment.

This feature implement a “device passthrough” for virtual machines running on Hyper-V: users can now take some of the PCI Express devices in their systems and pass them through directly to a guest VM.

VMware users may recognize the VMDirectpath I/O introduced in VMware vSphere 4.0 (and virtual hardware 7) or on KVM. Now something similar will be available also in Hyper-V.

Funny, but something was already present in previous versions of Hyper-V: disks passthrough (like the RDM concept in vSphere), but also the SR-IOV for networking. Discrete Device Assignment is based on the same SR-IOV partitioning concepts!

But why should be useful this function?

One simple reason is access specific hardware for managing purporse or for performance reasons. Like several VSA (see for example the Nutanix solution) that on vSphere are using device passthrough instead of device virtualization.

Device like SSDs attached via NVMe can be many times faster than SSDs attached through SATA or SAS.  And until there’s a full specification on how to do SR-IOV with NVMe, the only choice if you want full performance in a storage appliance VM is to pass the entire device through.

GPUs (graphics processors) are, similarly, becoming a must-have in virtual machines.  And while what most people really want is to slice up their GPU into lots of slivers and let VMs share them, you can use Discrete Device Assignment to pass them through to a VM.  GPUs are complicated enough, though, that a full support statement must come from the GPU vendor.

Other types of devices may work when passed through to a guest VM.  Like USB 3 controllers, RAID/SAS controllers, and sundry other things.  Many will work, but none will be candidates for official support from Microsoft, at least not at first, and you won’t be able to put them into use without overriding warning messages.

Note that Microsoft will not support Discrete Device Assignment in Hyper-V in Windows 10. Only Server versions of Windows support this. Unless the nested virtualization, this is must have for server virtualization, so the priority is on it.

See also: