Minecraft Servers and X3D

It has been known for a long time that Minecraft servers are heavily single threaded. I’ve always wondered how much Minecraft Servers benefited from Ryzen CPUs with X3D ever since they came out, but I have never been able to find any definitive answer online.

With a recent upgrade, I now have the means to run real world tests, not on the latest gen 7000 series but on Ryzen 5000 series. I now own both a 5800X and a 5800X3D and I would like to find out for myself. However, I don’t know what way of generating load would be most realistic and I would like to ask for help in this community.

Known things:
I will be running the tests on the 2 CPUs using all the same other hardware, under Ubuntu LTS.

Unknown things:
How do I generate load? What type of load - Chunk Generation, Redstone, Lighting, Entities? What server software - Vanilla, PaperMC, Modded? Any specific things the community would like to see tested?

Ideally I would like the tests to be as repeatable as possible.

Proposed test systems:
CPU - Ryzen 5800X, Ryzen 5800X3D
RAM - DDR4-2666 8GB *4 (i don’t have enough 3200 memory to assemble 2 systems with 32GB each so 2666 is the best I can do)
Motherboard - Gigabyte Aorus or Asus Tuf B550 (Exact variant not sure but will be 2 of the same.)
Cooler - ID-Cooling SE-224-XT
Storage - Nvme SSD (Might be different models but this shouldn’t affect results too much)
GPU - Some random low end cards I have lying around. I will make sure to use 2 same models (Likely going to be AMD HD7450)

These systems will exclusively be hosting the server and I will have a separate machine for the client.

Going to leave the above questions to the community, and I will be able to start testing in about a month.

1 Like

minecraft performance has always been munted primarily by garbage collection. there is some super goofy java trickery that can be done to try and minimize the impact of garbage collection.

here is the command i use to launch my minecraft server, seems to be pretty good, server performance only takes a hit when new chunks are being generated, but my server stays at 20tps even when there’s an obscene amount of things going on in existing chunks. it should be noted that ive disabled ecc on this system, because ive noticed a huge improvement in minecraft performance without it. just gotta manually down the everything and run memests every now and then. as for why ECC munts java performance, it’d take somebody smarter than myself to answer that.


/usr/bin/screen -DmS mc-%i /usr/bin/java -server -Xms512M -Xmx10G -Dfml.readTimeout=180 -XX:+AggressiveOpts -Dfml.queryResult=confirm -XX:+UseConcMarkSweepGC -XX:+UnlockExperimentalVMOptions  -XX:+UseParNewGC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=50 -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -XX:NewSize=84m -XX:+UseAdaptiveGCBoundary -XX:NewRatio=3 -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=3 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:+AlwaysPreTouch -jar $(ls -v | grep -i "FTBServer.*jar\|minecraft_server.*jar" | head -n 1) nogui -Dfml.queryResult=confirm -Dfml.readTimeout=180

this is on an sp3r2 system, and im sure my setup isnt completley optimal, but its gotta be close to the best it can be. i know i could significantly reduce the impact of chunk generation if i disabled the world data compression entirely. unfortunately a significant number of my users just dont have the bandwith for uncompressed minecraft, even when trying to crank up the timeout, the TCP transmission just times out before most of my players can download the world. wish there was some way my clients can precache the world based on the seed, and would only need the uncompressed differences. or even save the world to cache based on the last time they rendered whatever chunk theyre visiting.

i run modded 1.12.2, but java is java, so most of this black magic should still apply to whatever the latest garbageversion is.

Probably because you are running 1.12
Newer versions (1.13+) are a complete disaster in the performance front

1 Like

I remember running a MC server something like 10 years ago now back in alpha and beta and those are a lot of the same options I used. Looks like there are a couple new options available in java now too that would have been useful back then. The latest version of java back then was V6. lol

but yes, back then the biggest performance factors of a server were tuning garbage collection and having enough RAM.

1 Like