Table of Contents
Table of Contents
Introduction
When computers were first being developed it was pretty common for each individual user to not have their own PC at their desk like they do today. Instead, there was a central mainframe that had all of the computing power that users accessed through what is called a thin client. Thin clients themselves have little to no computing power by themselves, but simply work as a way for a user to access the central mainframe. However, as hardware became faster, cheaper, and smaller, thin clients largely gave way to individual PCs that each user had sitting at their desk.
Interesting, in some demographics there is currently a push to remove individual PCs and go back to using a variation of thin clients to provide users with access to the computing power on a central server. The difference between the original method and the modern one is that the modern one works by providing the user with a virtual desktop that is intended to be nearly indistinguishable from a physical desktop. So even though the user just has a little thin client, it appears to them like they have the full power of a local PC. This method is currently being called Virtual Desktop Infrastructure or VDI for short.
VDIs are an incredibly complex topic once you get into the fine details so in this article we will largely be avoiding the in-depth technicalities of virtual desktops and instead focus on the basics of the technology and our experiences while using it. In this article we will first discuss the major VDI solutions that are currently available and how NVIDIA GRID works to add GPU acceleration to a VDI. Then, we will look at some of the more common advantages and disadvantages of virtual desktops. Finally, we want to give our general impressions on setting up and using virtual desktops for a variety of uses and – based on our experience – make some educated guesses as to whether virtual desktops truely are the future of computing or if they will likely remain a niche technology.
Desktop Virtualization Solutions
There are many different ways to create and access a virtual desktop ranging from simply having a virtual machine with remote desktop capabilities to full desktop virtualization and streaming solutions like Citrix XenDeskop and VMWare Horizon View. Since each method is designed for slightly different applications, each method has its own unique advantages and disadvantages.
If you simply need to access a handful of virtual machines and do not need GPU acceleration then using a free solution like Microsoft Remote Desktop or TightVNC may work just fine. These options are largely free, require very little network infrastructure, and are easy to setup. You simply install your software of choice on the client and host machines and use it to connect the client machine to the host machine. The main downsides to using something like this is that you have no power control over the host machine (you can turn it off, but can't turn it back on easily), most solutions do not support GPU acceleration, it requires a full PC as the client machine, and it is not very easy to manage if you are handling a large number of users and machines since you have to manually maintain as many virtual desktops as you have users.
If you need GPU acceleration or have a large number of users, then paid solutions like Citrix XenDesktop or VMWare Horizon are likely what you want. Both of these solutions support multiple kinds of desktop virtualization from simple remote desktop (only with power control and GPU acceleration) or by using what is called a master image that a virtual desktop can use as its base image each time it is booted. The advantage of using a master image mostly comes into play when you have a large number of users since you only need to maintain a single OS rather than dozens or even hundreds of individual operating systems. In addition, through the use of Active Directory you can make it so that it does not matter which virtual desktop a user logs into which means you only need as many virtual desktops as you have active users at one time rather than a separate desktop for each and every user.
However, be aware that both XenDesktop and Horizon require special licensing and a decent amount of infrastructure. In addition to the client machines and virtual desktops, you also need at least two servers for Active Directory, DNS, SQL, and the Desktop Delivery Controller (XenDesktop or Horizon View) and all the licenses that go along with them.
NVIDIA GRID for Virtual GPU Acceleration
GRID is the name of a group of video cards offered by NVIDIA that are designed exclusively for use in virtualized environments. When it comes to virtualization, you can't simply put any normal video card into a server and expect it to work. First, it has to support virtualization (most often VT-D) which right away eliminates GeForce video cards. Second, it has to be able to operate properly without a monitor attached. While most Quadro cards are designed to be able to do this with proper driver support, NVIDIA GRID cards are specifically made to operate without a physical monitor. In fact, they don't have any video outputs at all!
NVIDIA GRID cards are also unique in that every card actually has multiple GPUs on it. This has been done before on cards like the Geforce GTX 690 and the newer GeForce GTX Titan-Z, but those are designed for the two GPUs to be used at the same time in SLI. NVIDIA GRID, on the other hand, is designed for each GPU to be used individually by entirely different users.
GRID K340 | GRID K520 | GRID K1 | GRID K2 | |
Target Market | High Density Gaming | High Performance Gaming | High Density Workstation | High Performance Workstation |
Concurrent # Users* | 4-24 | 2-16 | 4-32 | 2-16 |
Driver Support | GRID Gaming (Geforce) | GRID Gaming (Geforce) |
GRID Workstation (Quadro) |
GRID Workstation (Quadro) |
Total GPUs | 4 x GK107 | 2 x GK104 | 4 x GK107 | 2 x GK104 |
NVIDIA CUDA Cores | 1536 (384/GPU) | 3072 (1536/GPU) | 768 (192/GPU) | 3072 (1536/GPU) |
GPU Core Clocks | 950 MHz | 800 MHz | 850 MHz | 745 MHz |
Memory Size | 4GB (1GB/GPU) | 8GB (4GB/GPU) | 16GB (4GB/GPU) | 8GB ECC (4GB/GPU) |
Max Power | 225 W | 225 W | 130 W | 225 W |
Cooling Solution | Passive | Passive | Passive | Passive |
PCI-E Version | x16 Gen3 | x16 Gen3 | x16 Gen3 | x16 Gen3 |
~GPU Equivalent | 4x GT 640 (OEM) | 2x GTX 670 | 4x Quadro K600 | 2x Quadro K5000 |
*The number of concurrent users depends on resolution and display quality
GRID cards are divided into two categories: GRID Gaming (K340 and K520) and GRID Workstation (K1 and K2). Both of these categories have one model that has four lower-end GPUs and a second model that has two high-end GPUs. If it helps, you can kind of think of each of these GRID cards as simply being multiple normal video cards (either GeForce or Quadro) crammed onto a single card. The specifications are not exact, but we listed the closest GPU equivalent for each of the GRID cards in the last row of the above chart. More than the GPU specs themselves, they key difference between the two lines is the driver support for each pair of cards. The K340 and K520 use drivers that have been optimized for games while the K1 and K2 use drivers optimized for workstation applications like AutoCAD, Premiere, Maya, etc.
In addition to the 2x or 4x GPUs on each card, these cards also support vGPU which is the virtualization of a GPU. Basically, it allows for a single GPU to be used by multiple virtual machines at the same time. For example: the GRID K340 has four GK107 GPUs which you could either have assigned individually to four virtual machines if you want maximum performance or you could make it a vGPU and allow up to 24 different virtual machines to use the GRID K340 at the same time. Performance would obviously be much lower per machine, but if you only need basic GPU acceleration it is a great option.
Finally, we want to point out the fact that right now all GRID cards are passively cooled. This does not mean that they run so cool that they do not need airflow, but rather that they are designed to be used in a rackmount with high front to back airflow like our Puget Peak 2U rackmount.
Advantages of Desktop Virtualization
Currently, the main advantages of desktop virtualization come into play when you have medium to large number of users. If it catches on and becomes possible for everyday consumers to "rent" a desktop that resides in the cloud for their personal use this may change, but at the moment virtual desktops are primarily being used by larger businesses. The advantages for these businesses can mostly be boiled down to:
- With enough users, virtual desktops become cheaper than individual PCs
- Sharing of resources allows each user to have access to more computing power than they would with individual PCs
- Thin clients and servers are more reliable than individual PCs and are much easier to manage
- Since there is no data stored on the client system, data is more secure than it would be on individual PCs
One of the biggest advantages for a business is the simple monetary cost. Instead of needing a standard PC for every user, you can instead use a very affordable thin client or simply a cheaper or recycled PC for each user that connects to a virtual desktop. This does require more infrastructure including multiple servers, but at a certain number of users (which will vary depending on what level of performance each user needs) it becomes cheaper to use thin clients, servers and virtual desktops than individual PCs. In fact, Citrix even has a tool to calculate how much savings you would see by moving to virtual desktops.
On top of the straight-up cost savings for medium to large numbers of users, virtual desktops allow you to over-allocate resources like CPU and RAM. For example: if you have five users connecting to a server with ten CPU cores, you can actually assign each user three or more CPU cores rather than just two. This works out to a total of 15 CPU cores being allocated (5 more than there are physical cores), but virtualization is currently very good at balancing loads. So if one user is doing something intensive, the server can shift around the processing loads on the fly so that user can get extra processing power when they need it. Since it is very rare that every user will be heavily loading their desktop at the same time, this load balancing allows you to either provide more computing power to each user with the same amount of hardware or allows you to use less hardware in the first place to achieve the same amount of computing power.
Virtual desktops can share resources like CPU cores to provide additional computing power to users when they need it |
The third major advantage to a VDI is their reliability and maintainability. In general, PC's are overall more prone to failure and problems than servers and thin clients. Server hardware is designed for 100% uptime by using technologies like ECC memory to achieve maximum reliability which most desktops do not support. Thin clients do not have anything like ECC memory, but they are simply so basic that there is very little to break. And even if they do have a problem, it is much easier to swap out a thin client that to replace an entire user's PC. In addition, if you have a large number of users you really don't want to have to maintain the OS on each individual PC. Instead, VDIs allow you to use a master image for each virtual desktop. Rather than pushing updates to hundreds of computers, you can simply update a single master image and each virtual desktop will automatically use the updated version the next time the virtual desktop is booted.
Finally, virtual desktops also provide increased data security. Since there is no actual data on the client device – just the software to connect to a virtual desktop – there is no risk of sensitive data being compromised if the client device is physically stolen or compromised. This can be especially useful in places like hospitals where it is extremely important for patient data to remain confidential, but doctors and nurses need access to that data regularly. You still have to worry about key loggers, viruses, and compromised user accounts, but VDI introduces an additional layer of data security not found on physical PCs.
Disadvantages of Desktop Virtualization
While virtual desktops have a lot of things going for them, they are certainly not perfect. Even if you have enough users and the infrastructure to justify a VDI, there are currently a number of disadvantages:
- VDI requires a robust network for optimal performance
- Streaming can be very CPU intensive on the virtual desktop
- Streaming is limited in FPS and has varying degrees of input lag
- Requires additional servers and licensing for commercial-grade desktop streaming
First, since you are essentially steaming a video of the virtual desktop to the client device there is quite a bit of network activity depending on how much of the screen is changing each frame. We found that when using XenDesktop to stream a virtual desktop at 30 FPS, basic tasks like word processing or browsing the web took 1-3 Mbps to stream, watching a 1080p video took about 8-10 Mbps, and even more intensive tasks took as much as 15 Mbps to stream. This isn't too much for a handful of virtual desktops, but if you have hundreds of users all streaming at the same time you could easily overload even a gigabit network.
Second, it takes quite a bit of CPU power on the virtual desktop to capture the desktop's video, encode it, and send it over the network. With 8 cores of a Xeon E5-2680 V2 2.8GHz CPU assigned to a virtual desktop (and again streaming using XenDesktop at 30 FPS) streaming basic word processing used between 1-3% of the total CPU power. Streaming a 1080p video only added a few percentage points, but more intensive things that ran above 30 FPS on the virtual desktop (even simply dragging a window around quickly) could use as much as 30% of the total CPU power. 30% of eight Xeon E5-2680 v2 cores is quite a large amount of processing power so if you will be doing things that have a lot of rapid movement (like gaming) then you need to make sure you have plenty of additional CPU power availble to the virtual desktop.
Even if you have plenty of network bandwidth and enough CPU power to stream the virtual desktop with no problems, the user experience is likely never going to be as good as using a local PC. Most desktop monitors display at 60 Hz, which is equivalent to 60 FPS. Streaming software, on the other hand, generally runs at between 15 and 30 FPS. So just from a display perspective streaming a virtual desktop will normally result in the display updating only about half as often as it would on a traditional PC. And since every input from a mouse or keyboard has to go across the network to the virtual desktop, there is also an additional amount of input lag that occurs. We will get more into this topic and how it affects usability on page two of this article.
Lastly, desktop virtualization is nowhere near as straight-forward to setup as traditional PCs and requires additional licensing for much of the required infrastructure. With enough users this can be offset by how much easier it is to maintain the virtual machines, but for small numbers of users setting and configuring a VDI will rarely be worth it. If you go the route of using a master image for the virtual desktops – which makes maintenance much easier- you need to have multiple Windows servers on your network to run things like Active Directory and the Desktop Delivery Controller. In addition, since you are using a single master image which already has product keys integrated, you need to make sure you are using software and OS licenses that are intended for businesses because you will be using the same product key on multiple desktops at the same time.
Setting up XenDesktop
If you simply want to learn more about our experience using virtual desktops with NVIDIA GRID, we recommend skipping ahead to the next section since this section is all about the setup of XenDesktop and configuring it to work with NVIDIA GRID. If you are interested in what happens "behind the scenes", however, read on!
To setup our virtual desktop, we chose Citrix XenDeskop to stream the virtual desktop and used Citrix XenServer as our base VM hypervisor. After installing XenServer onto our physical server, we followed the Configuring GRID on XenServer guide to install the NVIDIA Virtual GPU Manager for the GRID cards. If you are actually going to be doing this yourself, we recommend checking to make sure there is not a newer version of the guide available as we came across multiple versions with slightly different instructions depending on the driver version.
Once the NVIDIA Virtual GPU Manager was installed, we then followed the XenDesktop Reviewers Guide to install and configure XenDesktop. This involved first creating two virtual machines running Windows Server 2008 R2 SP1. One was simply an Active Directory/DNS controller, while the other ran SQL and the Desktop Delivery Controller (XenDesktop) which has to be installed on a separate server from the domain controller. If you already have a domain controller, then you only need the one additional server running XenDesktop.
With the servers created and updated, we then made a couple of new virtual machines running Windows 7 with the NVIDIA GRID card assigned as a vGPU. We chose Windows 7 over Windows 8.1 because at the time of this article the Virtual Delivery Agent (which "streams" the desktop) was not yet compatible with Windows 8.1. Once the virtual machines were updated and configured how we wanted, we then installed the Virtual Delivery Agent onto the virtual machines. The Delivery Agent can be configured to either make the VM work as a master image for other virtual machines or you can keep the VM as it is and enable remote PC access.
With the host virtual machine created, updated, and configured, we went back to the XenDesktop server and – still following the guide – created a Machine Catalog (a list of the virtual machines you want to group together) and a Delivery Group for that catalog which defines which users can connect to the virtual machines. If you chose to make your host virtual machine a master image, then you can also configure how many virtual machines you want to be created from that image (which determines how many users can connect at one time) as well as how many vCPUs and memory each virtual machine created from that image get.
With all this setup done, we were finally able to connect to the virtual desktops through the Citrix Receiver software that was installed on our client PC (which was working as a thin client). This connection process looks like this:
If you are a remote user, you first have to access the local network through an access gateway. After that (or if you are a local user), you login to the web interface which is hosted by the XenDesktop server by using your domain username and password. The XenDesktop controller then checks to see which virtual desktops you have access to and displays them in your browser. Then, you simply pick the virtual desktop you want and the XenDesktop server connects you to the appropriate virtual desktop.
XenDesktop for Applications and Everyday Use
For all of our testing, we used a Intel NUC D34010WYB which includes a low-end Core i3-4010U 1.7GHz CPU as our client device. We added a 4GB RAM module, a 250GB mSATA SSD and installed Windows 8.1 Pro as our client OS. The Intel NUC is very small (with our enclosure it is only about 4" x 4" x 1.5") and doesn't have much in the way of CPU or graphical power but it is perfect for streaming a virtual desktop. In fact, compared to many thin clients you can purchase, you could argue that the NUC is overkill for this application.
Overall, with the Intel NUC connected to the virtual desktop using XenDesktop we were able to run applications, browse the web, and even watching movies without any real problems. XenDesktop has a default streaming speed of 30 FPS, which may seem low but most movies (including streaming services like YouTube and Netflix) play videos at 24-30 FPS so the 30 FPS limit is actually not a factor. Even for applications the 30 FPS limit was not nearly as noticeable as we expected.
To gain a first-hand impression of XenDeskop, I used a virtual desktop as my main working desktop for a couple of days. Surprisingly, the performance was so good that there were numerous times I completely forgot that I was not using a normal local PC. A typical workday during this time included lots of web browsing with Google Chrome, some light Photoshop work, and some medium AutoDesk inventor work. We are not going to get too much into performance numbers since the performance you will see will depend entirely on how much power you assign the virtual desktop, but compared to the very basic PC that was used as a thin client the virtual desktop certainly had a huge performance advantage in applications like AutoDesk Inventor.
With the viewer running either in fullscreen or with the viewer window focused, we had absolutely no problems with the Windows key or any keyboard hotkey combinations like Win-E or Ctrl-C. We used HDMI to output audio through the monitor and that also worked perfectly. In fact, we were even able to plug in USB devices like a thumbdrive and USB game controller and it would show up in the virtual desktop just like you would expect it to on a local computer.
Most of the employee computers here at Puget Systems use more than one monitor (some of our employees even use four or five monitors on their computer!) so one thing we were interested in was how well you could run your local desktop on one monitor and a virtual desktop on a second monitor. Really, there isn't much to say; it worked great. We simply made the viewer fullscreen and it really felt like the virtual desktop was a part of our local desktop. You can't drag a window or file from one desktop to the other, but we did find that we were able to copy and paste text from one desktop to the other.
The only real issue we came across was that sometimes the mouse cursor would not render properly in applications. This never happened with any of the default Windows cursors, but some program-specific ones would render a black box around the cursor. Interestingly, we were unable to capture this behavior with screenshots so we had to take a picture of the screen with a camera. This is a relatively small problem but it was a little distracting when it happened.
Overall, we were very impressed with how well XenDesktop worked for applications and everyday tasks. There are still all the disadvantages we discussed earlier, but if you are looking into desktop virtualization and you can deal with those disadvantages then we highly recommend checking out either XenDesktop or VMWare Horizon View.
XenDesktop for Gaming
First, let's be clear: until recently, NVIDIA GRID and XenDesktop/VMWare Horizon View was not really being designed or marketed for gaming. While it is improving quickly, if game streaming is your primary concern then virtual desktops might not be the best choice right now if you don't have a large number of users. But in the situations where you want or need to use a VDI like XenDesktop then there are a number of things you should be aware of.
When using XenDesktop with NVIDIA GRID cards, the biggest problems we found were not related to performance (our GRID K2 workstation card actually performed pretty well considering the drivers are not optimized for gaming) but rather the fact that fullscreen mode and mouse capturing is simply not supported. The fullscreen issue is actually on purpose with XenDesktop (and VMware Horizon as well) to prevent a user from being unable to access their local desktop, but means that you have to run a game in windowed or fullscreen windowed mode. While this can be easily worked around for most games, the mouse capturing issue is a bit more of a problem and results in some really strange behavior in games like first and third person shooters that use mouse capturing.
We tried Borderlands 2, Just Cause 2, Battlefield 4, and Team Fortress 2 and found that the lack of mouse capturing really messes with the mouse sensitivity. A tiny move of the mouse would result in your character spinning around in multiple circles. Even with the mouse sensitivity turned down to the lowest level possibly, the games were still unplayable. However, we did find that using a USB controller like an Xbox 360 controller worked perfectly. So if you prefer controllers over a mouse/keyboard than FPS games should actually work fine.
Other games that don't require that kind of mouse capture worked surprisingly well with a keyboard and mouse. Racing and arcade games like DiRT Showdown and Super Street Fighter IV that only use a keyboard ran pretty much perfectly. MOBA and strategy games like DOTA 2 and StarCraft 2 were also very playable although sometimes the mouse cursor would be the default Windows cursor rather than the game's custom cursor. The biggest issue with these games is that since you have to run games in windowed or fullscreen windowed mode you can sometimes accidentally click the mouse outside of the gaming window.
From a playability standpoint, the 30 FPS streaming limit was certainly noticeable but whether it is a huge problem is going to depend on the user. Some users have no problem with 30 FPS while others really prefer to have something closer to 60 FPS or even higher. Even with the stream running at only 30 FPS, we saw a bit of display lag when we tried to play games at 1920×1080 and ended up having to turn the resolution down to 1366×768. 1080p worked great for browsing the web and running most applications, but games simply have so much activity on the screen that it caused just a bit too much lag for us to be able to game comfortably.
One thing that caught us a bit by surprise was how little input lag there was once we set the resolution to 720p. It was certainly still there, but was honestly not as bad as we thought it was going to be considering that we were playing a game remotely over the network.
Overall, playing games on a virtual desktop was not as great as we hoped, but also not as bad as we feared. Game streaming isn't something we would quite recommend doing just yet outside of the most casual of games, but we have no doubt that it is going to greatly improve in the future. No matter how much better it gets though, input lag (even a tiny amount) is probably what is going to be the biggest hurdle for this technology. It was actually not very bad over a local network but we can't see this being used for any sort of competitive gaming in the near future. However, if you just want to be able to play games that are playable at 30 FPS and don't require very much in the way of twitch responses then virtual desktops with NVIDIA GRID would likely work great.
Conclusion
We have plenty of experience with virtualization (all of our servers use virtual machines) and basic remote desktop, but this was our first experience using virtual desktops of this level. There are plenty of easy ways to get a basic virtual desktop, but getting GPU acceleration to work introduces quite a few hurdles into the process. Frankly, we were a bit daunted at the beginning when we saw how much infrastructure and setup was required for either XenDesktop or VMWare Horizon View, but once we got started we found that the documentation was so good that at times it felt like putting together something from Ikea. Sure, the guides themselves were huge, but when each page is just "click this button, now click this one" it is very easy to follow.
Once we had everything setup and started using the virtual desktops, we were overall very impressed with both the video quality and performance. It really looked just like a local desktop; just running at 30 FPS rather than 60 FPS. The 30 FPS limit was definitely noticeable depending on what we were doing, but for things like browsing the web, watching videos and even using Adobe Photoshop or AutoDesk Inventor there were plenty of times that we forgot that we were not using our local PC. On anything that could use GPU acceleration, we could definitely tell that the NVIDIA GRID GPU was significantly improving performance.
The biggest problems we ran into was when we tried gaming on a virtual desktop. The GRID card did its job perfectly (even though the card we used was a workstation card, not a gaming one), but many modern games have the two things that desktop streaming has the most trouble with: they have lots of visual movement on the screen and they require a minimal amount of input lag. Due to how much is going on visually in most games, we found that even at 30 FPS we had to reduce the resolution down to 1366×768 in order to minimize the stream lag. And even with minimal lag, there is always a small input delay which is pretty much unavoidable since every key input has to travel over the network to the virtual desktop.
We might not currently suggest virtual desktops for gaming, but for anything else it works very well. The NVIDIA GRID cards are very reasonable price-wise when you compare them to the appropriate number of equivalent video cards and performed pretty much exactly how we expected. The biggest hurdle for most consumers to using virtual desktops is really the startup costs of the necessary servers and special licensing requirements. Virtual desktops are not going to be the right tool for the majority users and businesses, but if you have a medium to large number of users, however, it is something we would suggest looking into.
So are virtual desktops going to take over the PC market? We think that is some niche environments it will, but for the vast majority of users traditional PCs are going to be a much better choice than virtual desktops. Internet speeds and latencies are likely never going to be fast enough to provide a great user experiance, so VDIs will likely be limited to large businesses with hundreds of users on site. For those businesses, virtual desktops have both a cost advantage and are much easierto deploy and maintain than physical desktops.
Rather than virtual desktops replacing traditional PCs, one way we see virtual desktops taking off is through software companies renting time on a virtual desktop to customers who need extra computing power. For example, Adobe could launch a service that allows Premiere Pro users to rent a virtual desktop with tons of CPU power. This way, if a user has a local machine that doesn't have a ton of power, they could upload their project to a server and use a powerful virtual desktop to export the project in a fraction of the time it would take them on their local PC. This way, users don't have to constantly update their PC just to use the latest versions of software efficiency.
One neat thing right now about virtual desktops with NVIDIA GRID is that you don't actually have to take our word on how well it works since NVIDIA is offering an open, free test drive that you can sign up for. The one thing to remember is that the test drive will be running over the internet so the streaming performance will vary based on your internet speed and location. Even with the best internet connection possible, however, the performance won't be anything like what you would see on a local network. It is a great way to try out the technology and see how different applications run, but it won't be able to give you a 100% accurate portrayal of the streaming performance you can achieve with a NVIDIA GRID server running on your local network. But if you try it out, let us know what you think in the comments below!