Unsolved Anomalous performance on VR
-
Hi all, I have noticed the following observations on CPU/GPU fps (FPS, SIM, REN) while on the Benchmark TE in KTO (I am using VR), with Object Detail set to (2) and supersampling set to (1.1):
With parallel render thread OFF (i.e., set to 0), I get this performance:
FPS: 30
SIM: 30
REN: 38It is obvious that this is a CPU bottleneck, as my total FPS is reduced to match that of the SIM FPS.
But when I turn parallel render thread ON (i.e., set to 1), I get this performance:
FPS: 18
SIM: 70
REN: 18It now looks like a GPU bottleneck. I am struggling to find out why this is the case, considering that the parallel render thread should not harm my GPU fps by that much.
My specs and additional settings are as follows:
Meta Quest Pro
Ryzen 5800x
GeForce RTX 3080 10gb
32 gb DDR4 3200mhz RAMIs there any possible explanation as to why the REN FPS drops by so much when turning off parallel rendering thread, and how this may be rectified? If I get a better CPU, e.g., a 5800X3D, will this issue be mitigated?
Thank you!
-
@gankailer I don’t know the entire answer, but I believe some assumptions are wrong…
The “REN” timing is not a measurement of your GPU load … it’s still CPU. It’s the background thread that serializes all the Draw() calls and issues the Present() call to handoff the frame to the GPU.
(My mental model: think of it as a three-stage assembly line … the “SIM” SimLoop thread does all the physics and input/network/AI handling etc for frame N, while the “REN” thread does the drawing for the previous frame N-1. Meanwhile the GPU is busy filling all the polygons for frame N-2.)
Measuring GPU load is a little tricky… even Windows taskmgr gets it hugely wrong, as observed in a recent thread.
Best measuring tool I know is NVidia FrameView… record and monitor the MsRenderPresentLatency field (clock time required to complete each frame, after handoff from Present() call). Or just monitor the GpuUtil field for a quick glance at whether you’re near 100 or not.
-
You HW is definitely capable of more. Something is wrong there. Can you turn off the companion window and see if it helps?
set g_bVRNoPresent 1
.thanks
-
@Seifer that field has been set to 0 already, and I’ve also done the same for environment mapping and water environment mapping, but have yet to turn off shadows. Any idea where else I can improve it?
-
@gankailer you mean it is set to 1, right?
-
@gankailer said in Anomalous performance on VR:
@Seifer that field has been set to 0 already, and I’ve also done the same for environment mapping and water environment mapping, but have yet to turn off shadows. Any idea where else I can improve it?
Turn off shadows and pretend it’s an overcast day.
-
Turning off shadows is mandatory and i have close to the same Specs (5600x,3080) and im only using a Rift S (so rendering at a lot lower resolution)
-
@Seifer yes, I meant that I set it to 1. Oops!
-
-
@1508AD Thanks so much for confirming this. The shadows have a big impact on my frame rate as well, especially inside the cockpit. I’ve been wondering whether there was something wrong with my setup, but now I’m pretty sure I should just be flying instead of endlessly tweaking. Hopefully performance will slowly improve over the next updates. We can be patient!
-
@airtex2019 said in Anomalous performance on VR:
@gankailer I don’t know the entire answer, but I believe some assumptions are wrong…
The “REN” timing is not a measurement of your GPU load … it’s still CPU. It’s the background thread that serializes all the Draw() calls and issues the Present() call to handoff the frame to the GPU.
(My mental model: think of it as a three-stage assembly line … the “SIM” SimLoop thread does all the physics and input/network/AI handling etc for frame N, while the “REN” thread does the drawing for the previous frame N-1. Meanwhile the GPU is busy filling all the polygons for frame N-2.)
Measuring GPU load is a little tricky… even Windows taskmgr gets it hugely wrong, as observed in a recent thread.
Best measuring tool I know is NVidia FrameView… record and monitor the MsRenderPresentLatency field (clock time required to complete each frame, after handoff from Present() call). Or just monitor the GpuUtil field for a quick glance at whether you’re near 100 or not.
When experimenting with settings, I’ve also started digging into the fps/sim/ren framerates. You’re saying it’s all CPU - bound? Interesting that the render thread optimization doesn’t work for most folks. I which setup gets better performance with the optimization turned on…
-
@spotdott it was a few mo ago … I think my point was, the “% utilization” metric for GPU is highly dependent on the frequency it’s running … it’s really only meaningful if your GPU is running steady at its max frequency
-
No idea how you get these numbers…
HP Reverb G2 (Full resolution i.e 150% as default settings)
CPU - 12700K
GPU - 3090
Everything on (Shadows, ENV map and everything as usual)
AFx16 from Nvidia driver
Multi-Sampling set to 2 in BMS (Nvidia forced to “Application controlled”)In 4.37 I get smooth 90 FPS in an empty TE (Never tested anything else with 4.37)
Assuming 3080 is ~15-20% less than 3090 I’d expect you’ll have at least 75 FPS.
-
@I-Hawk Would you mind running the benchmark TE and let us know your frame rates (ren and sim, if possible)? Just sitting on the tarmac looking forward
-
@I-Hawk if high AA settings are used, a 3080 at VR resolutions can quickly run out of VRAM even with BMS. DCS used to be and may still be very bad at this.