YouHaveTrouble / minecraft-optimization

Minecraft server optimization guide
2.08k stars 92 forks source link

Remove recommendation of the Aikars flags #121

Open LemmaEOF opened 5 months ago

LemmaEOF commented 5 months ago

The Aikars flags are old and outdated. Using them on Java 17 and 21 does users a massive disservice, as they are built around the archaic G1 garbage collector. Shenandoah on Java 17 and Generational ZGC on Java 21 are significantly more performant, with GenZGC providing sub-millisecond maximum GC pauses.

YouHaveTrouble commented 5 months ago

ZGC is hit or miss depending on the hardware setup. Aikar's flags are a popular standard, because they work good enough for over 90% of servers out of the box without the need of tweaking anything.

LemmaEOF commented 5 months ago

ZGC is hit-or-miss if it's not generational - GenZGC is excellent pretty much universally. On the other hand, some of the Aikars flags are massive footguns which are liable to make things way less stable.

YouHaveTrouble commented 5 months ago

Those are bold claims with no evidence provided. Benchmarks would need to be done on most hardware, old and new to even consider changing this.

Pantera07 commented 5 months ago

Which is better depends on hardware.

brianewell commented 5 months ago

Any recommendations on a benchmarking suite to test for this?

YouHaveTrouble commented 5 months ago

Not really, as benchmarking minecraft itself is not realistically possible as it's not deterministic enough. You would need similar workload. set amount of operations within x amount of time, just like server ticking.

You would also have to cover insane amount of hardware configurations. from desktop cpus to old xeons, because most people use crappy hosts that provide those old server cpus.

brianewell commented 5 months ago

So what evidence would the OP need to provide, as you've requested, to support their claim?

YouHaveTrouble commented 5 months ago

You would need similar workload. set amount of operations within x amount of time, just like server ticking.

You would also have to cover insane amount of hardware configurations. from desktop cpus to old xeons, because most people use crappy hosts that provide those old server cpus.

ChrisTVH commented 3 months ago

The Aikars flags are old and outdated. Using them on Java 17 and 21 does users a massive disservice, as they are built around the archaic G1 garbage collector. Shenandoah on Java 17 and Generational ZGC on Java 21 are significantly more performant, with GenZGC providing sub-millisecond maximum GC pauses.

I was curious to try this you propose: -XX:+UseZGC -XX:+ZGenerational But in doing so I received the error of Failed to commit memory (Not enough space).

LemmaEOF commented 3 months ago

I was curious to try this you propose: -XX:+UseZGC -XX:+ZGenerational But in doing so I received the error of Failed to commit memory (Not enough space).

I mean you still need -Xmx for maximum RAM allocation. Check noflags.sh for a command builder.

ChrisTVH commented 3 months ago

I was curious to try this you propose: -XX:+UseZGC -XX:+ZGenerational But in doing so I received the error of Failed to commit memory (Not enough space).

I mean you still need -Xmx for maximum RAM allocation. Check noflags.sh for a command builder.

When I set it, it looks like this, since I can only assign flags, but the RAM flags are already defined. image image

ChrisTVH commented 3 months ago

I made it allocate a minimum amount of memory at startup, it will end up using all the RAM when the server loads anyway. Now I will test if it is better than Arkflags with real players and using a configuration based on the recommendations in this guide.

ChrisTVH commented 3 months ago

I've tried it and I've never used something that works so horrible, it generates a lot of server lag. https://spark.lucko.me/1tJhYAxeGu