having a hard time optimizing mod for my hardware

Forgive my lack of knowledge (and yapping), some of these may be stupid questions. I thinkk that I am cpu bottlenecked on my system. By far the greatest performance benefit comes from reducing the LOD drop off distance. But, in the explanation for this setting, it says that increasing this setting should only increase gpu and memory usage, not cpu usage. My best guess is that updating LOD chunks is more cpu intensive when they’re of a higher quality. But this doesn’t really make sense as FPS still drops off proportionally even when rendering a static scene. What even is the difference between the LOD updater and LOD builder threads? How are file handler threads used? The explanations given are quite vague. I would think the builder threads do just that, build LODs, but the odd part is I work with a fully generated world where I render all the LOD chunks at once. So the chunks are built once when joining the world, and from that point on, only the quality is updated as the player moves throughout the world. So you’d think, the only threads that would be active would be the LOD updater threads. But, are file handler threads still used after the world is fully loaded in? Additionally, when moving around the world and when performance drops, I often get the message saying DH is overloaded and that there are “too many chunks queued for updating”. So, logically, you’d think I would need to increase the number of LOD updater threads. But, you’d be mistaken. Actually, increasing the number of builder threads improves performance, and makes this message less frequent. It even shows in the message that increasing the builder threads increases the “max queue count”. So, needless to say, I’m lost
15 Replies
jonasl2075
jonasl2075OP3mo ago
Tl.Dr. What is the difference between LOD updater threads, LOD builder threads, and file handler threads? With respect to the question above, how can I lower CPU usage if I play in a fully pregenerated world with all the chunks rendered at once (I.e the world is smaller than my LOD distance).
jonasl2075
jonasl2075OP3mo ago
referenced messages
No description
No description
jonasl2075
jonasl2075OP3mo ago
Wait, does “queued for updating” reference updating the LOD quality? Or updating the LOD itself (I.e. the blocks in the LOD have changed)
CreepermeYT
CreepermeYT3mo ago
chunks queued for updating are the chunks your player has just loaded in the vanilla render distance. DH runs a check on them to update the LODs in case they have changed while they weren't loaded. So if you move too fast and your LOD builder threads/runtime% are too low, then DH will get overloaded. increase the number of LOD updater threads or their runtime %
jonasl2075
jonasl2075OP3mo ago
You reference builder threads here But updater threads here Should I increase both? I could also increase the time between update checks right? (It actually seems like the 2 settings are increase the time between updates themselves, or disable the check all together)
CreepermeYT
CreepermeYT3mo ago
I haven't played with DH 2.2 for a long time now so I dont remember exactly what it does. But i do not recommend disabling them or LODs wont load at all I think there's a slight misunderstanding here. The # of threads or the runtime % don't determine the time between checks. They determine how much and how fast the CPU should be used to DO the check
jonasl2075
jonasl2075OP3mo ago
There’s a separate setting in the LOD building section
CreepermeYT
CreepermeYT3mo ago
What I meant with that is that the queue will fill up with chunks regardless of your DH settings for these threads. What you can change is how much of your cpu DH is allowed to use to update the chunks in the queue.
jonasl2075
jonasl2075OP3mo ago
Okay okay, so here’s my question Why is distant horizons attempting to update so many chunks, if I haven’t changed a single block in the entirety of the worlds existence There should be no chunks that need an update (I.e. the unchanged chunk check should return every chunk as unchanged)
CreepermeYT
CreepermeYT3mo ago
It's a fair question, and while I don't know the exact internals of how DH works I'll do my best to answer DH runs a check on all chunks you load with your vanilla render distance for two reasons: 1- to generate the LODs if the new chunks haven't been generated before 2- if LODs already exist, DH will ensure that LODs are exactly the same as the chunks you just loaded in vanilla I think reason 2 exists because of multiplayer or singleplayer lan worlds where some player could have changed chunks while they were unloaded for you or just to avoid a de-sync between vanilla and DH Lods So increasing the number of builder threads let's DH use more of your CPU to complete the updates in the queue faster. It will help reduce the problem, not worsen it. You can also try increasing the other threads, just keep in mind that if they make your CPU usage too high, you might experience fps drops.
jonasl2075
jonasl2075OP3mo ago
Every time I move, even walk, fps drops from stable 40-50 (no matter how fast I look around) to a very unstable 10-20 with frequent freezes. I really appreciate the explanations, but this just doesn’t feel like normal behavior I’ve got all my threads at 1 besides updater threads which are at 2 Runtime percent default values (0.25)
CreepermeYT
CreepermeYT3mo ago
Freezes as in MC freezes for whole second and then resumes normally?
jonasl2075
jonasl2075OP3mo ago
Correct. Are you thinking it could be a memory thing?
CreepermeYT
CreepermeYT3mo ago
Yeah, probably
jonasl2075
jonasl2075OP3mo ago
Hmm Okay so to summarize, distant generation is disabled so no generation threads are active, file handler threads are active only when first loading in LODS, but both builder and updater threads are active while the player is moving
Want results from more Discord servers?
Add your server