Modern GPU and CPU underutilized by viewer, resulting in poor framerate and sometimes freezes
tracked
Huns Valen
The freezes are especially annoying with vehicles. Some places can cause rendering to stop for most of a second as you move near them.
Specs:
- CPU: Intel(R) Core(TM) Ultra 9 185H (3072 MHz)
- Memory: 65015 MB
- OS Version: Microsoft Windows 11 64-bit
- Graphics Card: NVIDIA GeForce RTX 4070 Laptop GPU/PCIe/SSE2
- Maximum bandwidth setting: 8,000 kbps
Test 1: Standing still
- Draw distance: 512
- Position: NE Albion, looking west towards Abbotts
- Framerate: Stabilizes around 11FPS
- CPU: ~11%
- GPU: ~18%
Test 2: Flying unassisted: Albion - Yamato
- Draw distance: 512
- Framerate: Varies between 4-8FPS
- CPU: ~20-30%, occasional spikes to 49%, depending on object density
- GPU: ~18%
Log In
Wicked Nightfall
My draw distance is set to 200m and when in a vehicle or flying SL locks up continuously. I can play ultra on every modern game but when I get on SL I'm playing on a potato cause LL does not want to put in the time to optimize their older than dirt code. WHAT ARE WE PAYING FOR, LL?! How about the execs be satisfied with their tens of millions and start re-investing profits back into SL instead. My rig has slightly better GPU and CPU 32GB of RAM - mostly unused by SL.
Kyle Linden
marked this post as
tracked
Beatrice Voxel
The problem isn't the CPU or GPU capability, it's the VRAM.
Because your draw distance is so far out, your system is having to store every texture within the region, as soon as you enter it. In an AAA game that wouldn't be a problem, because all those textures have been optimized. But in SL, textures of objects (and mesh of objects) are all made by fellow residents, many of whom do not know what 'optimizing' even entails.
Couple that with LOD calculations for when you do get close enough to see something (another factor many newbie or intermediate creators don't consider) and yes, your viewer has to figure things out. If the region is populated, you've also got animations loading, people with hundred-flexie skirts (shudders) moving around... it's a mess.
The SL engine is old, and the content is about as varied in age and quality as all of the items at a large flea market. But if you decrease draw distance to below "binoculars" distance (128m should be fine for driving, 256m for flying), and also kick your LOD factor for distant objects down, you'll probably get better performance. It won't be great, but it'll likely be better.
Huns Valen
Beatrice Voxel
I'm not asking for an explanation of what's wrong. I'm asking them to refactor the client to bring it from 2002 to 2026. To get away from the massive single-threaded workload that makes traveling with high draw distance awful. That is the problem, not bus saturation.
They farmed out image decode and a few other things to worker threads, but they still have the meat of the rendering pipeline in one thread. Fixing that is a major overhaul. Not fixing it makes the experience jankier than it could be. The attached image shows about 70 milliseconds in ONE FRAME being spent almost entirely on CPU-bound logic, and that's only the parts they instrumented in the fast timers overlay. (Geo Update is almost entirely CPU, does talk to the GPU concerning trees/water/sky, but these are not significant factors.)
It's bad for me at high draw distance, and I have a 16-core CPU and an RTX 4070. Other people with older/slower machines have to run at very small draw distances, or throttle their network bandwidth severely.
Photo Viewer
View photos in a modal
observeur Resident
Huns Valen One thing to take into account regarding the fast time window here is that, the fast timer code 1) isn't complete and 2) is broken, it remains an interesting tool, but it can't be read so strictly. As here you see the green part thinking "it's cpu", but it's not .. it's just the tool is missing some informations, some being processed by the cpu, some other by the gpu, and the more internal parts where a component is waiting for data. Linden people use an other set of tools to measure and analyse frames.
Now, it doesn't mean you are wrong about the underutilisation of the hardware. Thing is, cpu and gpu "utilisation" is what every game engine seeks to optimise, and there are many reasons in SL why it's more complicated to do it compared to other game engines, starting with the fact that in a more standard game, each scene is actually (normally) optimised by the developers, as they have the full control on what's going on: how complex the geometry will be, how much volume of textures would there be from certain point of view, how many light sources, which shaders will be used etc etc.. Linden Labs doesn't create the content, and let people being very free about it.
So when you push the draw distance in SL to 512m, specially on mainland, you will put any hardware on their knees, just because for reasons to determine case by case, it will cause a under-utilization of the hardware, synchronizations issues .. and so on. (also if you use shadows, it will get worse).
And for large draw distances, one major issue is also how the geometry (and textures) LOD is managed.
Last but not least: OpenGL doesn't allow some modern optimisations, specially when you deal with a lots of objects.
When you double the draw distance, the vision cone not only become deeper, but also becomes much larger, resulting to an important multiplication of the actual objects to process, that goes far beyond a simple X2 factor.
Huns Valen
observeur Resident I don't necessarily disagree, but fundamentally the issue is that they're using a primarily single-threaded architecture to solve a problem that could be solved more effectively with multi-threading. The number of objects can theoretically scale on a curve approaching distance^3, but that doesn't change the underlying problem: it's just not as efficient as it could be regardless of draw distance or object density.
observeur Resident
Huns Valen There is always ways to optimise, it's just, LL has a limited team and many subjects to cover. But, to be fair, performance has actually increased over time, specially with recent enough hardware (exception being, very old or very weak hardware). Now there is room for many other optimisations, and that includes this particular case where you use a long view distance in a messy place like Mainland, or any place with high density geometry. This implies different combined strategies, including a more "horizontal" approach, as better using multiple threads, maybe a more efficient objects culling strategy (this is specially important, since in your example, there are several buildings/houses, and you want the objects inside those houses to be properly and efficiently culled).. which is related to lod too, because if a house is lowered to a single triangle from a distance, then the objects inside the building will become potentially visible). But also by using a more modern graphics api. And they perfectly know it, and it has been mentioned several times in developers meetings.
observeur Resident
One little tip that can help in different conditions: When using an nVidia gpu, you should make sure that "Multithreaded optimisations" is turned ON, in the (old) nVidia control panel, generally, or specifically for Second life.
This will tell the OpenGL driver to use its own internal optimisations, and this leads to important performance boost in different situations.
a couple things i observed in the area you mentioned:
performance is indeed pretty low with a 512 meters view distance, specially when enabling sun shadows.
1) this is not due to vram, because i tested it with a machine with 40gb of vram, and it doesn't help in this particular case.
2) this is not directly related to the cpu single core performance, as i also tested this with a much faster cpu than my gaming PC, without gain, i also used a lower CPU power mode in the PC, without any loss in performance.
3) this is not (much) related to the gpu performance either.
An other thing worth mentioning: if you raise the object lod setting in the graphics advanced settings (objects -> High), you won't see any loss in performance on recent enough hardware, such as yours.
most likely this is due to how objects are processed into exploitable data for the gpu. Maybe a high context switches rate also.
side note) enabling shadows in this scenario will divide the performance by 2, which is to be expected.
Toothless Draegonne
You're on the madlands with a 512m draw distance. I'm not sure there's a developer studio on the planet that could solve your problem. Especially not with a UMPC-oriented APU and a laptop 4070.
...which, incidentally, is the same laptop GPU I'm quite happy with because I'm not on the madlands with a 512m draw distance.
Huns Valen
Toothless Draegonne I think they should try :)