Performance expectations
Currently running Forge 1.20.1
DH 2.1.0-a-RC1
Oculus 1.6.15a
Complementary Shaders r5.2 Dev10 on settings Medium (plus 4 block coloured lighting turned on)
Render distance 16
Mizuno 16 texture pack
JVM argument: -Xmx12G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=37 -XX:+PerfDisableSharedMem -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=23 -XX:G1ReservePercent=20 -XX:SurvivorRatio=32 -XX:G1MixedGCCountTarget=3 -XX:G1HeapWastePercent=20 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRSHotCardLimit=16 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:GCTimeRatio=99
System specs:
7800X3D CPU
4070TI card
32GB RAM
3440 x 1440 resolution
With DH turned on and all world generation tasks done (though currently set to Low Impact), I'm getting around 70-80 FPS, with regular dips as low as 30. With everything exactly the same but DH disabled, I'm getting closer to 160. See screenshots attached.
Wondering if this is around what I should expect? Other people seem to be getting much higher FPS on less powerful systems, so I'm wondering if there's something I could optimise. It seems like a very high performance hit considering there are no world generation tasks running.
104 Replies
what dh settings
the lag spikes most likely due to gc, you can switch to shenandoah or zgc instead
if you dont wanna switch, lower ram allocation to between 4-6gb instead
I tried the shenandoah settings once but I was getting 10FPS for some reason.
But I'll give it another try
get oculus 1.7.0
also get newer distant horizons version
from #links-n-downloads
Okay yes I'm going to say Shenandoah doesn't agree with my system
0 to 9 FPS
I was attempting to use Oculus 1.7.0 earlier, but my LODs weren't even rendering at all
https://discord.com/channels/881614130614767666/881614131877269586/1236602151338508358
Only got them to display once I downgraded
Also my quality preset is on High and I haven't touched any individual settings
From my experience the mere existence of DH causes big performance drop, but if you have DH, you can first decrease vanilla render distance to match vanilla performance and increase DH render distance to e.g. 512 for free
Drat, I dunno how other people are getting such better frame rates.
Turn off distant generation while playing or turn down cpu impact if you haven’t already
And download a monitoring software like rtss or something else to see your cpu and gpu usage
Otherwise there’s no way to know what the problem is
My CPU impact is set to minimal, and I left it running for long enough that there is no world generation in progress
You can see in the screenshot that it's World gen tasks 0/0 (0 in progress)
I'd expect some slowdown while it's generating, but it seems odd that my FPS is halved even when DH isn't generating lods
But maybe it's my expectations that are wrong
Get a software to look at gpu and cpu utilization
I've done that, but it doesn't really mean much to me
Should mention that the columns are Current, Minimum, Maximum and Average
Is that while playing the game?
Gpu and cpu usage looks low
Yeah that was during a play session
I dunno what's normal, but it doesn't look like everything is constantly maxed out while playing or anything
I was watching it while I was running around getting 70FPS. CPU usage stayed around 20% with distant generation off. GPU usage anywhere between about 40 and 70%
CPU goes up to 100 if I turn on distant generation + maxed setting, but I'm guessing that's expected
Yea
But gpu usage shouldn’t be low if cpu usage is also low
What’s your memory speed?
Ermm DDR5.
6000 MT/s
32GB
Is it actually running at that speed?
I can’t really see why else your gpu would be underutilized
Although ig you should test a separate instance with just distant horizons and shaders and none of the other mods to see if it’s just the result of some weird incompatibility
And also try with the default jvm arguments to see if those somehow make a difference
Also maybe update gpu drivers
GPU driver is up to date, so definitely not that
The JVM arguments are a weird one. I dunno why Shenandoah or the other one tank my frame rate. Doesn't seem normal.
Shenandoah literally gives me 0 FPS
Yea that shouldn’t happen
I do get bad performance with zgc when my memory allocation rate is high enough
But it has to be a few thousand MB/s
Minecraft isn't the best optimised, if its witout shaders of 20 other performance mods I would consider this normal. Remember that vanilla Minecraft can struggle with fps while only consuming 10% CPU and 5% GPU
Shenandoah and Z tries to run in the background alongside your game, while G1 (default) stops your game during cleanup (stutter). Such big performance drop propably means some system incompatibylity. Try updating your JAVA (e.g. with adoptium open jdk)
https://adoptium.net/ This is the one I've got at the moment
Home | Adoptium
Eclipse Adoptium provides prebuilt OpenJDK binaries ...
Do you have the latest version of it?
21.0.3.9
Which appears to be the latest release
Although now that I think of it, I'm not convinced minecraft is actually using it
Since my F3 seems to say I'm using Java 17
Make sure XMP is enabled, restart your PC and try again using "ZGC"
Sorry, what is XMP?
Search your installed apps with keyword "Java" and "JDK"
pcgamer
What are XMP and EXPO profiles and how do I use them?
XMP and EXPO profiles automatically set your system RAM to higher frequencies. Here's how to do it.
Sometimes custom launcher download JDKs by itself
you can check settings to assert path to correct java version
My installed apps say I have java 17 by oracle
You can try uninstalling that, and in worst case you can install it back later
If I set the Adoptium java in my launcher, should that make it launch with the correct version?
probably
Would you happen to know the full string I should put in my java arguments? I see to get a lot of "error 1" when I try to follow the instructions
I think the path should be to "javaw.exe" file or something like that
Yep that part is fine
e.g. "C:\Program Files\Eclipse Adoptium\jdk-17.0.8.101-hotspot\bin\javaw.exe"
I think
I know the java argument is meant to have my RAM allocation and also something about experimental options, and then something about garbage collection
If I understand correctly I THINK I am trying:
This is how it looks on modrinth:
-Xmx12G -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive enables it, but allocate more RAM and more ConcGCThreads
Yeah see I just can't get it working
Note that this arguments are old, and not good enought anymore
I can't help you right now, but good luck
Thanks for the help anyway
Oculus 1.7
Embedium as fabric + indium port
And shaders from that github gist pinned in #general
Yep I have all of those
I can launch fine when I set my java arguments to default
On my 4060 I get ~60 FPS with default bliss withr real terrain mattering much more than DH
So the answer may just be that my performance is normal
Lol this sure ain't normal. I wonder how this happened.
Shaders always were power hungry
Monoliths are whsn you remove mods
That's valid, I did remove some stuff trying to improve performance
Guess I can just regen my lods
And now that shaders also add some shadows in DH area too yohr performance will dip
I actually think the performance is a little better without those mods though
Maybe it's placebo but I'm getting around 120 in the same area I was getting 90
Ere you cheching if you had 100% GPU usage before?
Well my GPU usage is almost always 100% in the F3 menu
But the monitoring software seems to suggest it's not that high in reality
Hwinfo screens said 70%
Yeah
Whats your real rd
Pardon?
Fatfingering a lot
Haha
What does rd stand for?
Render distance
Ohhh
Ermm anywhere between 10 and 16
I don't go crazy with it
Vanilla is super CPU limited
Try idk... 8
I'll give it a go
Distanthorizons.sqlite in Data is the file I need to delete to regen my lods, right?
Or go crazy and see how your fps and gpu usage is with rd of 2
Gonna leave it alone to regenerate "aggressively" for a while
Vanilla Minecraft can’t use all your cpu cores so you’re still cpu limited even if overall cpu usage looks relatively low
But on a 7800x3d with all those performance mods it shouldn’t really be an issue
I would say its more a code limit then CPU limit
depends on exact function and use case, but for Vanilla Minecraft it's definitely a code limit/engine limit
It’s a cpu limit bc it’s written poorly
that's not true. Chunk loading may use 100% CPU but when you just sit next to some animal farm Minecraft will still use mostly one core (exception is mod MCMT, but it is really unstable)
technicaly it is a CPU limit, but when casual person hears cpu limit they think the cpu is to slow, not that the programmer wrote bad code
that's why I would argue "code limit" fits better
Idk if every scenario I’ve tested it in just happens to use multiple cores but with performance mods I haven’t seen it only use one core
not only one, but mostly one, and definitely not all of them (at least with count 32) while e.g. standing in place after the world loads in
DH though uses all of my CPU without any problems
I removed Ice and Fire and Dungeons Arise, reset my java arguments to default, and turned render distance down to 12. With all that, and world gen off, I'm sitting around 110-130, which seems not tooooo bad?
lol
what kind of performance are you expecting?
that seems pretty good if i say so
Mainly it's just the drop-off between Distant Horizons installed vs Distant Horizons not installed. Seems a bit steep when there's no world gen going on.
But 110 is definitely more workable than 80
have you tried just distant horizons without other mods?
just your performance and what not
i might actually have to test and see if that's the case for me
too
It would be interesting to see. I'd have to set up a new instance, but it might be worth it.
Of course there are always other factors as well. Like a brand new world always has better FPS than one with a big base, farms etc.
yeah, but you said you have fps difference with and without dh
that's something you can check regardless
Well if I disable all my mods on my existing world, my game won't load, lol
But yeah I could do a new unmodded instance without DH and with DH
ill check too
at least from standing still, same area and world. 139-153fps -> 162 - 180fps. 4k and shaders enabled. There is some impact.
Mine's still generating in the DH version
The non-DH version is certainly fast. Looks pretty rugged, but it's fast.
262FPS
Well for some reason my LODs only, like, half-generated? Even though it says world gen is done.
But at the same time my FPS is even higher than without DH. So I can't explain that at all.
What on earth system are you running to get those numbers?
7800X3D CPU
4070TI card
32GB RAM
3440 x 1440 resolution
This performance is a bit more in line with what I'd be hoping for. You would allow some FPS loss if you're running a bunch of mods, but my feeling is that maybe there's a particular mod or mods that doesn't play nicely with DH and causes a bigger performance hit than expected
So I am running some testing. 1.20.1, an optimized Fabric build with all the usual performance mods, 6gb of ram, default java arguements. First is with no shaders, second is with the latest Bliss build of shaders. About what I'd expect to see here.
Utilized these settings on DH, and got these results, first with no shaders, second with the same Bliss shaders.
DH absolutely clobbers the fps on default, spinning up only 12.6% of the frames I would get without it. With shaders, it's a little bit better of a story, getting 60% of the fps, but it's still a pretty signifigant hit.
Wow, that's crazy
Mind you, 1850 FPS is also crazy
Sure, it is
But when you're looking at mods that sap fps....taking something like 87% of the frames away for one mod? Ouch.
It's obviously quite playable still
but if you're looking to run some 200+ mod pack...DH might not be a great fit.
Was yours definitely finished all LOD generation in the DH instance?
i'm running a second test to confirm
Yeah, after a second 15-minute test, I got nearly duplicate results. Variance of ~10 fps
In case it matters, I'm running a 12600kf, a 4070, and 32 gb of ram.
I might do a couple benchmarks for the generation speed spreadsheet tomorrow, to give some more data as well
I'm surprised that your unmodded + shader + DH FPS is about the same as my 400 modded + shader + DH FPS
When our systems are similar
yeah, it's been bothering me a fair bit. Been building a pack for a small friend group to play, and I really want DH, as it was definitely my draw for coming back again. But I get like a stable 50-60 fps on my system, and it should theoretically be so much higher than that xD So I've been digging.
I'm sure several mods fight against DH, it's a well-known thing at this point, but I am doing what I can to try and optimize for frames. I've had 3 pcs at my disposal for testing, ranging from a potato to this system, so it's been useful for trying different breaking points.
Have you tried all the stuff people told me to do in this thread? System monitoring programs and such?
I don't think I learned anything new from it, but maybe you would
I still have no idea why default GC is the only one that works for me
It's a bit harder for me to see that information, as I am single-screening, but things read about what I'd expect from the F3 menu. GPU hovers in the 20-40% range with shaders off and 50-70% with them on. I haven't messed much with different GCs, but I haven't had much stuttering issues running on ~6gb so I haven't really had to mess with it.
I dunno if you're running When Dungeons Arise or Ice&Fire, but removing those two seemed to give me some frames back
Interesting, I might remove When Dungeons Arise and see what that gets me
you should measure gpu utilization after the lod generation's done if you wanna check fps