Zwift on Amazon EC2 NVIDIA Gaming Windows Server 2019 AMI
How well does the Zwift game client run on Amazon’s EC2 cloud computing service? With virtual private networking and the Zwift mobile companion app for pairing sensors, it is theoretically possible to run the game remotely & stream a high quality video rendering of the scene in real-time to a low end computing device or set-top box. I was curious to know how a high end $2,750 NVIDIA T4 GPU, and the new NVIDIA Gaming AMI would perform, so I spun up an instance and ran the client in ‘just watch’ mode for 10 minutes.
I wanted to know if for $0.71 an hour I could use a virtual machine to stream my awesome race performances to Twitch or Mixer at higher frame rates than my ageing gaming PC (whose power supply failed this morning). Spoiler alert - it is possible, but the quality is only 1080 medium.
I was hoping the new NVIDIA gaming AMI would run Zwift at 4K Ultra with 60 FPS since NVIDIA’s marketing says this:
- Next Generation Computer Graphics. The Turing architecture featured in the T4 brings NVIDIA’s gaming prowess to AWS, enabling the most demanding games to be rendered and streamed using the GPUs’ hardware encoder.
- Experience Super Smooth Frame Rates at High Resolutions. Games can be streamed at resolutions up to 4K and 60 FPS.
- High-Powered Gaming on almost any device. Now, game publishers can build their own cloud-gaming instances based on the latest NVIDIA technology and make their entire catalog of PC titles available to gamers on nearly any device.
- Always Updated. Players can enjoy all the latest games without ever needing to worry about hardware upgrades or updating drivers or patches.
- The NVIDIA Gaming AMI driver enables cloud gaming on NVIDIA T4 GPUs
- DirectX 9/10/11/12 graphics driver optimized for games
- NVIDIA Capture SDK for low-latency hardware h.264, h.265 streaming
Setting up the networking, security groups and instance took about 10 minutes. The biggest time sink was having to enable Microsoft Net 3.5 features (a requirement for the Zwift log-in screen), and updating the Zwift game client itself. This startup time can be eliminated in future by saving off a custom AMI after the install.
Unfortunately the results were disappointing. The T4 GPU gets the medium profile, which is the same as NVIDIA Quadro GPUs. This makes sense because the T4 GPU is highly optimized for accurate big floating point number calculations, like those used in machine learning algorithms, not real-time 3D gaming. I feel NVIDIA’s marketing is simply not accurate to say ‘Games can be streamed at resolutions up to 4K and 60 FPS’. That was not my experience at all. It is possible the drivers are optimized for DirectX but not OpenGL. The documentation is unclear.
I saw an average frame rate of 83 FPS at 1080 with the medium profile. 80+ fps is still pretty good for $0.71 an hour. I trashed the instance after 20 minutes, so the little experiment cost less than the amount of coffee I drank during the same time frame. Data egress from AWS also has a cost, but nothing significant for the time I had the instance running. I might revisit this if the NVIDIA optimize the OpenGL drivers for the T4 in addition to the DirectX drivers, or if Zwift gives it the high profile.
This was a fun experiment, and now I have a way to generate log files for testing that zwiftalizer.com still works after a game update without getting off the couch 😃 (I don’t run Zwift on my work laptop)
Final thoughts - I didn’t monitor the CPU or GPU load. It would have been interesting to see how hard the GPU was being worked and what difference a bigger instance with more CPU would have made.