LOD at 9 = 22.5 GB of VRAM usage on 3090

Like others here, I updated my sim yesterday to the latest world update. I wanted to test the sensitivity of the new “offscreen caching” option added in response to the last Sim Update. I cranked up the terrain and object LOD to 9 in the UserCfg, set the new “offscreen caching” option to Ultra, and this is the result: 22.5 GB of total VRAM usage sitting on the runway at KLAX. Interestingly enough, once airborne, VRAM usage dropped down to a more “reasonable” level of ~15 GB of usage.

At first glance, it seems pretty apparent to me the new offscreen caching option is loading the offscreen assets into VRAM, if available. Before this latest update, the offscreen assets were swapped in and out of memory depending on what was within the viewing window. This unfortunately led to some severe stuttering when panning and high LOD values >4. After this latest update, the constant swapping is significantly reduced thanks to the new offscreen caching option, but at the cost of significantly increased VRAM usage.

I’m curious to see how other systems with lower VRAM capacity, even the 3080s, handle LOD = 9 and offscreen caching option set to Ultra. Is this offloaded into system memory when VRAM limited?

System specs: Ryzen 5950X, Asus TUF 3090, 64 GB 3600 RAM. Resolution at 3840x1600 with render scale at 110-130%. All in-game graphics settings set at Ultra, including 8x8 texture supersampling and 2048 shadows.

LOD = 9:

LOD = 6:


4 Likes

This is interesting, thank you. I played around with LODs quite a bit in VR yesterday. However, I was testing it only in my local area without any photogrammetry available. On my 3080ti, the usage averaged around 5.5-7.5 GB of VRAM and 7.5 to 9.5 GB of RAM, off screen caching on ultra (must be set in UserCfg for VR).

When I tested this pre WU6, LOD 8 was unplayable in VR due to severe shutters. Now with off-screen caching on ultra everything is nice and smooth (within the confines of G2 FPS of course).

Interestingly, I also found that going from 5 to 10 to 20 made only marginal difference in terms of system utilisation and almost no noticeable difference in visuals. However, I wonder how much is this scenario dependent. As mentioned, I only tested this in an area without photogrammetry and low altitudes (VFR pilot here).

Have you seen much difference during your testing? Especially when you move past let’s say LOD5?

It’s a good thing that high LOD values starts to chew up that much VRAM. The sim is now better using using your hardware on higher settings. This is a huge improvement. But I think even with a 3090 LOD 9 is simply too high. You wont actually see much if any difference between LOD 9 and 6.

4 Likes

Heh, 15 fps. :smiley:

I tried Terrain LOD 4.0 (Objects 1.0 as I haven’t been able to capture a visual difference in a screenshot so far) and it was a stuttery mess on takeoff, I dropped below 25 fps for a while. About 40-45 fps prior to the takeoff roll instead of above 60 with LOD 2.0, so I’m sticking with 2.0.
RTX 3080, so 10 GB VRAM, and 48 GB RAM. However I had plenty free of each, the CPU (Ryzen 5800X) was the bottleneck.

1 Like

That‘s exactly the idea behind this new setting and falls into the „classic“ category of „speed vs resource usage“ in software engineering.

A simple example: let‘s assume that multiplication would be an expensive operation. So in order to calculate multiplication results of numbers up to N we could perform the multiplication each time it was requested. Or we could precompute all results and store them somewhere in memory (under the assumption here that the „lookup“ would be cheaper than the actual multiplication).

In the „compute“ scenario we only use little memory. There exists a „Big O“ notation which describes the „asymptotic complexity“ of the operation, in relation to its “input size”: as the required memory would be constant in relation to the expected multiplicands („input“) we would say it is O(1), or simply put: we only need (constant) memory to store the multiplicands and the result (regardless of “how big” N is).

For the „lookup“ („precompute“) scenario, if we know that the largest input value would ne N we need N * N space - or O(N^2) or put differently: we need space to store each combination of N, which is N * N memory cells.

(Note that the attentive reader may have noticed that multiplication is commutative, that is 3 * 4 = 4 * 3 = 12. We can “switch the multiplicands” and the result remains the same. Which means that we only require half the space of an N * N matrix. But the “Big O” notation is only concerned about the “asymptotic growth” of the complexity (or space requirements), or in other words: O(0.5 * N * N) = O(N * N), or in other words: “constant factors” are “cancelled out”, because “in the long run” (by increasing the maximum value of N) the required space still “grows quadratically”, and any linear constant factor is simply “not significant” - simply put)

We could also say that „we don‘t want to spend so much memory, but only a fraction thereof“. So the algorithm would be altered tol „looking up the result, and if not found we calculate it“. We could extend this and say „if computed, then store the result in the lookup table“. But what if there is no space left? Well, then drop (overwrite) an element? But which one? This is called „cache eviction“ and there are different strategies to find an element to be removed (evicted) from the cache (memory). A common strategy is to drop the least recently used element (LRU cache).

Now make the size of this lookup cache configurable with a slider, replace „multiplication“ with „access/render the object in VRAM“ and the eviction strategy with e.g. „how far off from the viewing cone is the object“ (or any other suitable eviction strategy for 3d models, given e.g. that the aircraft is „currently turning right“ etc.) - and there you go: you have fully understood the concept of „streaming data from RAM into VRAM“ and the new configuration slider :wink:

Speed vs resource usage.

6 Likes

Agreed. Setting the LOD to 9 was more of an experiment. I think the sweet spot for a 3090 is LOD at 6. You can see enough of a difference between 6 and 2, but without massively killing performance. I also don’t see much of a performance drop from 2 to 6. Anything beyond 6 doesn’t improve the image quality much, but consumes significantly more resources.

1 Like

I have 10850k 32gb RAM and 3090 and was finding my FPS was getting too low (in VR with resolution 5400*2700) before I could utilise more than around 9gb of VRAM which for me was around 3.5 LOD I think. So maybe 3080 remains the optimal investment!

Resolution is definitely the limiting factor in VR for me as well. I’m on G2 and can’t do anything above 2,700-2,900 px per eye, either TAA or OXR. Once I get over 3.1k in either of these, the frame rate tanks but still have a plenty of memory unallocated.

1 Like

I use LOD 5 with my 3090. I can see the difference with tree draw distance, compared to LOD 9, but I have to be zoomed right in to see that, and they are so sparse at that distance that they don’t even render as as single pixel when not zoomed in. Anything higher seemed to offer less with more of a frame rate hit. I could still get 60FPS over London at LOD 5 before the last update, but I haven’t checked with this one. I did notice some frame rate drops when panning my view around, but a massive improvement over what we had before.

Dors this affect RAM too?

With my 3070 LOD 9 would probably be more of a slide show. I’m running LOD 4 on Terrain and LOD 2 on objects. That’s very decent performance even on photogrammetry. Tried LOD 6 and that was significantly worse in performance

There’s definitely increased total RAM usage at LOD9. You see in my screenshot the maximum total RAM usage reported by HWInfo was ~21 GB, which is the highest I’ve seen yet.

However, even at LOD9, my total RAM usage was still significantly less than pre-SU5. Before SU5, my RAM usage creeped up to ~32 GB with LOD2 in some situations. This is actually one if the reasons I invested in 64 GB of RAM.

That’s a good point. I’m running 5 for both. Does anyone know which affects system performance more. A hybrid setup might work well, with objects at a higher LOD than terrain, for example.

I haven’t been able to test that yet. At first glance, it seems like terrain LOD has the bigger impact for my system. However, I think that might vary from system to system. Some systems may have a harder time with object LOD at lower values. Memory bandwidth may be a big factor here. The 3090 has a memory bandwidth close to 1 TB/s, far higher than even some 3080s with ~750 GB/s.

1 Like

So the LOD settings and the custom config is finally working again after the patch, without constantly resetting everything to low rendering distance settings even with overwrite protection on?

This is awesome because I love to fly with custom config with at least LOD 4 or 5 :slight_smile:
I am very happy that this config settings problem having all my manual graphics settings resetting to low has been fixed.

Man I don’t know how some folks can adapt to these changes.

If I change my LOD to anything above 3 I already start to get more stutters when changing views and drop about 5-8 fps.

I love having my sim running at 40-50 fps. I already start to het annoyed when I start getting into the 30’s fps range.

So I stay at LOD 200. It’s really good right now so really don’t know why anybody would go higher but to each they’re own I guess.

Just can’t do those 20 fps like some people do.

My specs:

i9 10900KF
RTX 3080
64GB RAM
1TB SSD

2 Likes

I’ve been low 20s in VR quite a lot and I am amazed that it doesn’t feel too bad and the immersion more than justifies it. Flying GA and airliners are obviously quite slow moving, but before I tried it I would have expected to need 60fps+ in VR. This is without any ASW / reprojection, but maybe there is something else clever that is helping in the background.

I don’t mind 30 fps if the bump image quality is worth it. Changing LOD from 2 to 6 is quite noticeable in my opinion. I agree though, if you want a stable 60 fps, then definitely stay at LOD 2. It’s clear the latest performance optimizations are designed around LOD of 2. Anything higher starts to consume significant resources.

22.5 gb loooool

I’m running 20fps locked and then re-projection to 60fps in VR and it’s great. But it’s personal preference as some just don’t like it and are more sensitive to noticing the reprojection. I’m on an i9 10900kf, 3090 and 64gb using an 8gb ram drive for the rolling cache.