Performance Issues with Unity CloudXR Client on AWS EC2 G6e Instance

Hi CloudXR team,

We are working on running a Unity-based CloudXR client on an AWS EC2 G6e instance (using a L40S GPU) and have encountered some performance issues that we’re unable to resolve.

Issue Description

At the start of the connection to the CloudXR server, the Unity client performs as expected. However, within 5–10 seconds, performance degrades significantly, making it unusable. Specifically, viewport tracking slows down, and while it occasionally returns to normal, this behavior is inconsistent and unstable.

This issue occurs immediately after establishing a connection to the CloudXR server, even before launching any game or application.

It’s worth noting that when using an Oculus VR client built with the 4.0.1 CloudXR SDK, performance is vastly superior compared to our Unity-based client under similar conditions.

Steps Taken So Far

We have followed various recommendations from forum discussions, including:

Based on these, we’ve made the following configuration changes:

  • newConfig.cxrLibraryConfig.cxrDebugConfig.enableAImageReaderDecoder = true;
  • newConfig.cxrLibraryConfig.cxrDeviceConfig.maxResFactor = 1.5f;
  • newConfig.cxrLibraryConfig.cxrDeviceConfig.foveatedScaleFactor = 0;

We’ve also tested the Unity client on a local machine with a headset on the same network. Under these conditions, the performance and visual quality are good but still not as great as the native Oculus client.

Request for Help

  1. Are there any additional steps or configurations we could try to achieve the same level of quality and performance in Unity as the Oculus VR client, particularly on cloud-based infrastructure like AWS EC2 G6e instances?
  2. Is there an upcoming release date for a new SDK version that would fix or improve the performance of the Unity plugin, making it closer to the Android Oculus VR client?

We have attached a video demonstrating the issue, along with server and client logs for reference.
Unity Client - G6e Performance Issues.zip (66.0 MB)

Any advice or suggestions would be greatly appreciated!

Thank you in advance for your help.

Hi NVIDIA CloudXR Team,

I’m following up on my previous post regarding the Unity CloudXR Plugin and its performance on AWS. As mentioned earlier, my team and I have encountered some performance and visual issues with the current plugin version (0.1.1).

We’re wondering if there’s any update on the release of a new version that might address these issues. Additionally, are there any recommended steps or configurations we could try in the meantime to improve performance, particularly when using CloudXR on AWS EC2 G6e instances?

Thank you in advance for your help!

Hi, we have seen the exact same issue with an AWS backend GPU instance. After some digging around I have identified one major problem with the provided Unity plugin 0.1.1. The timing logic for sending poses from the client to the server is pretty broken. This is in CloudXRManager.PoseSendThread, which is a background thread sending pose data (hmd and controller transforms), via cxrSendPose.

The C++ sample code use polling callback, registered in cxrCreateReceiver with default polling frequency (which is 250Hz).

The C# explicit pose synchronization thread also use 250Hz, defined by the pollFrequencyHz variable, but adding some measurement logging reveals that the throttling code is pretty broken. I get around 900Hz updates, and this seem to be able to cause overloading and is more than the connection to the AWS instance can handle. In particular this line seem to be the main issue:

nextTick -= (nextTick % pollPeriodTicks);

if I comment out this line I get much better timing of the pose updates, now I get around 280Hz, which is much closer to the requested 250Hz. Still not really tight, but much better than before. The timing logic should be able to be much more exact than this but I have not looked at rewriting it more than this at for now.