What’s the difference between your average non-production Hyper-V host and a really nice gaming rig? There’s not all that much when you really look at it.
- Your regular HyperV system requires a lot of memory, a fast processor, strong network connectivity and a lot of hopefully pretty fast storage. The Operating System of choice is Windows Server 2012 R2 at this point in time. Your servers are most likely not connected to an external display and are stored in a place where it may not be easy to get them hooked up to a monitor.
- Your regular gaming rig requires a reasonable amount of memory, a fast processor, strong network connectivity, some fast storage, a hefty video card, a good monitor, and a gaming mouse and keyboard. The Operating System of choice may vary but a Windows client Operating System is not uncommon (Windows 8.1, Windows 8, Windows 7).
While there are some differences between the configurations they have a lot in common.
During a recent series of discussions with my son, we decided to spend some time over break working on how to use one of my existing HyperV servers to be able to double as a gaming rig (come on, if you have this much hardware you need to use it to have some fun once in a while!) This blog post will review the first major benefit to using your Hyper-V servers with a good video card: Gaining an in-home Stream Streaming server!
So what are the benefits of this?
At this point you may be asking – why bother? What will I can from taking my lab HyperV systems and running them as a steam streaming server? If you are like me and you don’t have a gaming PC and your laptop is getting a little long in the tooth there are games that either run really badly or just plain won’t run anymore. I’m a huge Skyrim fan for years now. I’ve played on the Xbox and now I’ve moved to the PC. My laptop load times between sections in the same was between 30-60 seconds in Skyrim which was making it almost unplayable. With this solution my goal was to make Skyrim (and other games in Steam) viable to play on my laptop, my wife’s even older laptop and other systems in the house. I’ll state it briefly here and go into more depth within the blog – not only is this working, it’s working far better than I had expected it would.
Gaining an in-home Stream Streaming server from your HyperV server:
So what is a steam streaming server? A steam streaming server lets you run steam games streamed
To use my first HyperV server as a stream streaming server the steps were pretty straightforward:
- Installation of the video card and software for the video card. In my case I used a GeForce GTX 770 video card. The other specs for my HyperV system are shown below including the Operating System (Microsoft Windows Server 2012 R2 Datacenter), processor (i7 3.07 Ghz), and memory (48 GB).
- Once the video card is working correctly with the correct drivers, installation of Steam was the next step (downloadable from http://store.steampowered.com/).
- In steam you want to make sure that the settings for the server allow in-home streaming (Enable streaming) as shown below.
- There are a couple of minor changes which are required. First, the screensaver needs to be turned off.
- You need to log out of the console through the trick discussed below (C:\Windows\system32\TSCON.exe %sessionname% -DEST:Console) if you are connecting to your HyperV system via RDP.
- Install and launch steam on the system that you want to run the game on. On the library tab, choose the game you are looking for and choose to stream the game from the appropriate server. If the game hasn’t been loaded on the streaming server yet it will load first (showing percentages of download on the game) and then it will install. I highly recommend going to the streaming server directly and running any new games that get installed at least once to make sure that they launch correctly.
How does the streaming work?
The Steam Streaming server is literally displaying what is on the screen of the Streaming Server on your Steam client. This means that if you walk up to the Steam Streaming server and turn on the monitor, it will show up exactly as it does on the system that you are playing on. So if you want to just use the server as a gaming system directly that is another option. Just hook up the video card to a good display and you can remove the streaming from the equation completely.
Note that this does mean that multiple people cannot stream from the same server at the same time. A single player can stream from a single streaming server.
What types of frame rates does it provide and is it really playable?
In my environment I was seeing up to 60 frames per second, and Skyrim will run on the top graphics settings available for the game. The following video links shows an example of gameplay: http://youtu.be/50PVpfumOIM
The bottom left shows several metrics including the following ranges I saw during this recording:
- Capture 1024×768 @ 30-56 frames per second
- Streaming Latency: .2 – .4 nanoseconds input, 18 -20 nanoseconds display
- Ping Time: .7 – 1.6
- Incoming bitrate: 4000 – 10000 kbits/sec
- Outgoing bitrate: 60-200 kbits/sec
- Estimated bandwidth: 207MBps
- Packet loss: 0
I performed a second test of Skyrim on the same level of graphics but with a higher screen resolution which is available at: https://www.youtube.com/watch?v=Kng2Nzk1Wcc. The results I saw during this recording are below.
- Capture 1920×1080 @ 29-32 frames per second
- Streaming Latency: .2 – .4 nanoseconds input, 36 -42 nanoseconds display
- Ping Time: .6 – 1.0
- Incoming bitrate: 7000 – 15000 kbits/sec
- Outgoing bitrate: 60-200 kbits/sec
- Estimated bandwidth: 201MBps
- Packet loss: 0
Quick Trick: In Steam if you are looking to get performance information (such as the frames per second, bandwidth used, etc) enable the "Display performance information" option shown below as part of the Advanced Client Options in the In-Home Streaming settings.
What are the resource impacts of running a steam streaming server on a server?
The screenshots below are from the Veeam task manager (available for download at http://hyperv.veeam.com/free-task-manager-hyper-v-performance-monitoring/). I chose the Veeam task manager because this allowed me to run the task manager on one server and point it to the steam streaming server instead of having to run it locally on the steam streaming server console. The first screenshot shows the HyperV server without steam running:
The second is with steam running but no streaming occurring:
And the final is taken while streaming is occurring:
During combat sequences, CPU was upwards of 60% on the HOST.
Summary of resources utilization:
The overhead of the steam streaming server when it is not running is approximately .2 GB of memory, and less than 1% of additional CPU overhead.
The overhead of the steam streaming server varies depending upon what is occurring in the game but in general it is approximately 1 GB of memory, and 38-58% additional CPU overhead.
Were there any restrictions to be aware of?
There were several gotcha’s to be aware of related to the screen, devices require the Steam client and the server and client need to be on the same subnet, and games should be run first directly on the streaming server. Details on handling these items are listed below.
You must be able to access the screen on the HyperV system
The biggest restriction I ran into was that the screen cannot be locked on the steam streaming server. If you use RDP to connect to the HyperV system, you lose the ability to connect to it as a stream streaming server. To address this, create a batch file on the server with the following: (no changes are required, the exact text is below)
C:\Windows\system32\TSCON.exe %sessionname% -DEST:Console
Use the above batch file (or leave it on start/run) to log out of your HyperV server and you won’t run into "The screen is locked on the home computer" message. [Thanks to the steam community for the discussion on this at http://steamcommunity.com/groups/homestream/discussions/0/540731690684579086/ which provided this workaround!]
You can only stream up to the resolution available on the monitor for the streaming server
You can only stream to resolution which can be displayed on your monitor. If your HyperV server is connected to a low-grade monitor you will not be able to stream games at higher resolutions. To work around this, use an HDMI cable and run it at least temporarily to a television or monitor with higher resolutions.
The device that you want to play games from must install the Steam client
The Steam client does not run on Windows RT devices, so this solution will not steam to devices such as my Surface 2 RT.
The streaming server and the streaming client must be on the same subnet
Not only should they be on the same subnet, but they should be well connected. My network is almost all gigabit wired and that worked beautifully for streaming. Wireless may also be viable, but the gaming experience may suffer as a result.
Installation and configuration is still required on the streaming server
Run the game locally on the Steam streaming server before running it streamed.
- The screen is locked on the home computer: http://steamcommunity.com/groups/homestream/discussions/0/540731690684579086/
- Steam In Home Game Streaming Explained & Tested: https://www.youtube.com/watch?v=gIL71Q6eJ2Y
Summary: If you are running your labs on HyperV and you want to really use all of that hardware for fun stuff I highly recommend checking this out! I’ve been using it successfully to stream my games now for several weeks and it has been working like a champ!
I owe a huge thank-you to my son Gavin for his idea on this topic! It was fun to work with this and is really a cool addition to have around the house. In the second part of this series we will look into how the new graphics card can be used to provide benefits to your HyperV virtual machines by enabling RemoteFX for the hosts and relevant guests.