Helge Klein

Subscribe to Helge Klein feed
Tools for IT Pros
Updated: 20 hours 18 min ago

Inexpensive GPU Virtualization Options for Testing

Fri, 05/25/2018 - 00:01
Contents

For a new chapter in my ongoing series of talks and articles about browser performance I wanted to examine how key user experience metrics like page load time are dependent on available hardware resources. I prepared a VM and started my tests with a single CPU core and 2 GB of RAM, planning to gradually add more cores, more RAM and, eventually, a GPU. As it turned out, the latter is harder than anticipated.

Virtualizing a GPU – the Options

There seem to be many different ways to equip a VM with a GPU these days, but not all of them make sense for a test environment. Nvidia Grid, specifically, is pretty expensive, given that it requires specific professional GPUs and supported server hardware, unlocked by Grid software licenses.

Another variant that I did not find suitable: GPU-enabled VMs, e.g. from AWS or Azure. The reason being not even cost (I would only have used the VM for a dozen hours or so), but flexibility (I had to be able to change the VM’s hardware configuration).

With Nvidia Grid and a cloud VM out of the way, I was left with the following options. Please note that I was looking for a simple and inexpensive solution.

  1. Client Hyper-V with RemoteFX
  2. Client Hyper-V with direct device assignment (DDA)
  3. VMware Workstation

Let’s take a look at each of these in turn.

Client Hyper-V with RemoteFX Configuration

RemoteFX GPU virtualization has been available in Windows 10 Client Hyper-V since version 1511. Some docs state that the Enterprise SKU of Windows 10 is required in the guest, but I did not find that to be correct: Pro and Enterprise gave identical results.

To enable RemoteFX GPU virtualization:

  • Host: in Hyper-V settings, enable a physical GPU for use with RemoteFX
  • Guest: in the VM’s settings, add a RemoteFX 3D Video Adapter to the VM

No need to care about GPU drivers in the VM: they are part of Hyper-V Integration Services.

Operation

With the above steps completed, you will see a virtual GPU in the VM (Microsoft RemoteFX Graphics Device – WDDM):

DXDiag seems to be quite happy with it:

Chrome not so much:

Also, there is no GPU in Task Manager:

Verdict

RemoteFX does not map (part of) the physical GPU into the VM. Instead, it virtualizes certain DirectX APIs. That may be enough for some uses cases, but Chrome is looking for something different and consequently sticks to software rendering.

By the way, a good indicator that there is no “real” GPU available in the VM is that you do not need to install GPU vendor drivers.

Client Hyper-V with Direct Device Assignment (DDA) DDA Requirements

DDA maps a physical GPU into a VM. While it is documented only for Windows Server I thought it just might work with Windows 10, too.

With DDA, the VM “sees” a real GPU. Therefore vendor drivers need to be installed in the VM.

DDA only works if the host machine’s BIOS supports SR-IOV. In other words, the BIOS must support relinquishing control of the PCI Express bus to the OS. That, unfortunately, is a capability typically only found in server hardware. SR-IOV is not to be confused with VT-d, which is typically found in consumer hardware but which is not to sufficient to make DDA work.

DDA and Licensing

Even if you have a machine that meets the hardware requirements for DDA outlined above, you may run into a problem of a very different nature: Nvidia’s consumer cards cannot be used because of restrictions in the driver. Nvidia’s Grid cards, on the other hand, require software licenses in addition to the professional-grade hardware. Rachel Berry has a good overview of Nvidia Grid licensing.

AMD GPUs (purportedly) do support DDA, but I did not test that.

VMware Workstation Configuration

The first thing you may notice after installing VMware Workstation is that it does not work if Hyper-V is enabled. If you want to keep using Hyper-V your best option is to create a new boot menu entry with Hyper-V disabled. That way you can switch between Hyper-V and VMware Workstation simply by rebooting. From Stack Overflow:

C:\>bcdedit /copy {current} /d "No Hyper-V" The entry was successfully copied to {ff-23-113-824e-5c5144ea}. C:\>bcdedit /set {ff-23-113-824e-5c5144ea} hypervisorlaunchtype off The operation completed successfully.

As with RemoteFX, there is no need to care about GPU drivers in the VM: they are part of VMware Tools. This indicates that the concept is similar in nature to RemoteFX.

Operation

The virtual GPU you will see in the VM is of the type VMware SVGA 3D:

Again, DXDiag is happy:

Again, Chrome not so much:

As with RemoteFX, there is no GPU in Task Manager:

Verdict

From an application’s point of view, VMware Workstation GPU virtualization is similar to RemoteFX: potentially good enough for some use cases, but there is no “real” GPU in the VM.

Conclusion

It’s 2018. This should be easier!

GPU virtualization is most definitely not mainstream yet. Currently, server hardware with either AMD or Nvidia Grid GPUs is required. That makes testing unnecessarily difficult and expensive.

The post Inexpensive GPU Virtualization Options for Testing appeared first on Helge Klein.

Is Blockchain the Right Technology for My Application?

Mon, 03/19/2018 - 14:23

This is an attempt at guidelines to help in technology decisions about when and where to use blockchain technology.

Blockchain in a Nutshell

A blockchain is a distributed list more than one entity can add new elements to. Each list element cryptographically validates its predecessor. Combined with the fact that adding new elements is computationally expensive, this protects the list’s integrity.

chain chain chain by lisa cee under CC

Pros and Cons of the Blockchain Architecture

Let’s start with what blockchain is good at:

  • Due to the distributed nature, there is no dependency on any individual entity for the management of the data
  • Tampering with the data is uneconomical because of the huge resources that would be required

And here are the caveats:

  • Maintaining the list is highly inefficient due to the tamper-proof architecture
  • The throughput in transactions per second is very low compared to a database
  • Storage requirements can be high because verification of the list’s integrity requires access to all blocks
When to Use Blockchain Technology

From the above, we can deduce where blockchain is a good technology choice.

Trust and Accountability

Legal contracts allow for pretty efficient management of accountability and – indirectly – trust. Making a system’s technology tamper-proof is not necessary when the risks of tampering are too high for the parties involved.

Takeaway: blockchain technology only makes sense where traditional legal instruments are insufficient or not applicable.

Dependencies on Elements Outside the Blockchain

If you cannot move the entire data set including all dependencies to the blockchain, the mechanisms that protect the blockchain’s integrity are wasted. People will simply cheat elsewhere in the process.

Takeaway: a blockchain must be self-sufficient and not rely on external data.

Processing Speed and Efficiency

Blockchain technology incurs a high computational overhead. Compared to databases, blockchains are inefficient and slow.

Takeaway: blockchains are not replacements for databases.

Summary

Putting the hype aside, there seem to be very few use cases where blockchains would genuinely be the best technology choice. Bitcoin seems like a good fit but is hampered by the low slow transaction speed and huge (energy) inefficiencies.

The post Is Blockchain the Right Technology for My Application? appeared first on Helge Klein.