A
Admincraft5mo ago
Rash

Prominence 2 Server Optimizations

I'm currently using the Oracle free cloud instance to host a modded MC server for Prominence 2 (1.20.1) using this server pack: https://www.curseforge.com/minecraft/modpacks/prominence-2-rpg/files/5473716/changelog The instance is running on VM.Standard.A1.Flex with: - OCPU count: 4 - Network Bandwidth: 4Gbps - Memory: 24gigs I'm looking for any specific optimizations I can make since the server begins to drop tps when more than 5-7 people are in the server at once. So far I've done the following: - Installed GraalVM EE 22.3.5 for JDK 17 (heard the performance is much better) - Lowered view and simulation distance in ther server.properties - Used the following JAVA_ARGS:
-Xms22G -Xmx22G --add-modules=jdk.incubator.vector -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1HeapWastePercent=5 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
-Xms22G -Xmx22G --add-modules=jdk.incubator.vector -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1HeapWastePercent=5 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
As recommended from both here and Aiker's. Here is a spark profiler view from when people begin joining the server (older with slightly different flags): https://spark.lucko.me/jrpKdoI888 The minor tweaks I've made since have not helped much. Ideally, I would like to host up to 10 people at once with little issue. Any help will be greatly appreciated!
168 Replies
Admincraft Meta
Admincraft Meta5mo ago
❌ Processing Error
The bot cannot process this Spark profile. Please use an alternative Spark profile.
Requested by rash2
Admincraft Meta
Admincraft Meta5mo ago
Thanks for asking your question!
Make sure to provide as much helpful information as possible such as logs/what you tried and what your exact issue is
Make sure to mark solved when issue is solved!!!
/close !close !solved !answered
Requested by rash2#0
Asentra | KebabXL
spark link doesn't works, and why u are using 22GB RAM mate? its really too much try 10-12GB
Tamz
Tamz5mo ago
prominence fucking annoying to optimize use servercore + if you run a large enough network, buy the Performant mod and itll give you stable tps until like 30+ players along with dropping the view distance and sim distance to 2, servercore CAN raise it back up when its stable but overall un needed for clients to see beyond as they can just see the chunks with the Bobby mod pre installed
Rash
RashOP5mo ago
I did try 16Gs at some point to see if GCs are complaining about the heap size. Will 10-12gigs be enough for 10 people on the server? Interesting. I havent heard of servercore before. Is it free to try out like Oracle's free tier? I've dropped view and sim distance both to 5. Will try out going lower and see if that helps
Tamz
Tamz5mo ago
its a mod
Rash
RashOP5mo ago
Running a new spark profiler and will upload after I get some data from more people joining and limit testing
Tamz
Tamz5mo ago
Modrinth
ServerCore - Minecraft Mod
A mod that aims to optimize the minecraft server.
Tamz
Tamz5mo ago
it does Nothing once you install it, you will need to setup its config
Rash
RashOP5mo ago
Gotcha Sorry this is my first server so gonna have some newbie questions. If I add this mod onto the server, Are there any necessary actions needed for the client side? And is this confirmed compatible with prominence 2?
Tamz
Tamz5mo ago
thats ok, just a server mod. it is compatible you just need to remove night config, or it will crash when you launch
Asentra | KebabXL
servercore can help but stil we can only speculate about without spark profiler to be honest 12GB should be totaly fine, 20GB is ultra overkill
Rash
RashOP5mo ago
Gonna grab the spark profiler tonight when more people are on. I'll also lower the ram and look into adding servercore after. Appreciate the help guys 🙏
Rash
RashOP5mo ago
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
Admincraft Meta
Admincraft Meta5mo ago
Spark Profile Analysis
❌ Processing Error
The bot cannot process this Spark profile. It appears that the platform is not supported for analysis. Platform: Fabric
Requested by rash2
Rash
RashOP5mo ago
@Jared | InfraCharm Sorry to ping you if you're busy, but I saw that you helped someone earlier with this as well and was wondering if you had any input Dropping the ram to 12Gbs and running another spark profiler for it
Skullians
Skullians5mo ago
@Rash rare ice is quite laggy. So are villagers, check out villager related configs in ServerCore. Also out of interest, where’d you get graalvm EE?
Rash
RashOP5mo ago
QQ: I'm learning how to read the spark profiler - where do you see rare ice and entity count like villagers?
Jared | InfraCharm
Add -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M to your startup, send me the gc.log file and the new spark report. Let them both run for 10 mins
Skullians
Skullians5mo ago
if you go to the mods tab at the top of spark and scroll down you can see mods that used most of the tick beware: things like lithium and neruina are at the top. they aren’t causing lag! it’s just because they change a lot of the server code that the mods use a lot of the thread also for entity counts, click the information button and go to the world tab and you can see what is using the most of your thread by going to the ‘all’ tab at the top and expanding the server thread drop-down And going to the entity list.foreach spark has a guide on reading the profiler
Rash
RashOP5mo ago
Ah beautiful TYSM!!
Skullians
Skullians5mo ago
np!
Rash
RashOP5mo ago
I have a live spark profiler going on if anybody is interested. I'm having people log in right now: https://spark.lucko.me/96LC0bEVeU
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
Admincraft Meta
Admincraft Meta5mo ago
Spark Profile Analysis
❌ Processing Error
The bot cannot process this Spark profile. It appears that the platform is not supported for analysis. Platform: Fabric
Requested by rash2
Rash
RashOP5mo ago
Running right now and will send in a few minutes
Skullians
Skullians5mo ago
I think you’re more or less at the limits of your cpu
Jared | InfraCharm
CPU is at 80% In the high end
Rash
RashOP5mo ago
I did read somewhere that the VM.Standard.A1.Flex OCPU cores aren't the best for minecraft server hosting. It's an Ampere Arm-based processor
Skullians
Skullians5mo ago
it’s oracle ARM tho :/ yeah, not the greatest singlethread perf, definitely not ideal for modded
Jared | InfraCharm
Can you also send me the limits of your container and your actual system specs?
Rash
RashOP5mo ago
No description
Skullians
Skullians5mo ago
what about your mc server itself are you using a panel?
Rash
RashOP5mo ago
No description
Skullians
Skullians5mo ago
or running it in ssh / the terminal
Rash
RashOP5mo ago
I ssh into the terminal and run the server on a tmux session
Skullians
Skullians5mo ago
can you send your startup command?
Rash
RashOP5mo ago
yup one second. I'm trying to figure out how to pass a file through from the remote server to my local
Skullians
Skullians5mo ago
you can just run cat filename.txt in terminal if you want and it outputs the file contents
Jared | InfraCharm
-XX:ThreadPriorityPolicy=1 -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:JVMCIThreadsPerNativeLibraryRuntime=1 -XX:-UnlockExperimentalVMOptions -Dlog4j2.formatMsgNoLookups=true -Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
-XX:ThreadPriorityPolicy=1 -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:JVMCIThreadsPerNativeLibraryRuntime=1 -XX:-UnlockExperimentalVMOptions -Dlog4j2.formatMsgNoLookups=true -Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
Are these your current flags? If not, send me your current flags.
Rash
RashOP5mo ago
Its pretty long so, but I essentially just run the start.sh file provided in the server pack on curseforge. Here's the file
Admincraft Meta
Admincraft Meta5mo ago
We have uploaded your file to a paste service for better readability
Paste services are more mobile friendly and easier to read than just posting a file
Requested by rash2
Jared | InfraCharm
We need the variables.txt file
Rash
RashOP5mo ago
The cpu seems to have leveled off btw 🤔
MINECRAFT_VERSION=1.20.1
MODLOADER=Fabric
MODLOADER_VERSION=0.15.11
LEGACYFABRIC_INSTALLER_VERSION=1.0.0
FABRIC_INSTALLER_VERSION=1.0.1
QUILT_INSTALLER_VERSION=0.9.2
MINECRAFT_SERVER_URL=https://piston-data.mojang.com/v1/objects/84194a2f286ef7c14ed7ce0090dba59902951553/server.jar
NEOFORGE_INSTALLER_URL=NONE
JAVA_ARGS="-Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16"
JAVA="java"
MINECRAFT_VERSION=1.20.1
MODLOADER=Fabric
MODLOADER_VERSION=0.15.11
LEGACYFABRIC_INSTALLER_VERSION=1.0.0
FABRIC_INSTALLER_VERSION=1.0.1
QUILT_INSTALLER_VERSION=0.9.2
MINECRAFT_SERVER_URL=https://piston-data.mojang.com/v1/objects/84194a2f286ef7c14ed7ce0090dba59902951553/server.jar
NEOFORGE_INSTALLER_URL=NONE
JAVA_ARGS="-Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16"
JAVA="java"
Jared | InfraCharm
Alrighty and can you send the gc.log
Rash
RashOP5mo ago
Admincraft Meta
Admincraft Meta5mo ago
We have uploaded your file to a paste service for better readability
Paste services are more mobile friendly and easier to read than just posting a file
Requested by rash2
Rash
RashOP5mo ago
wait that is truncated
Jared | InfraCharm
It's fine
Rash
RashOP5mo ago
I'm up to GC(51). How can I get the whole thing?
Jared | InfraCharm
Dw about it, I can work with this
Rash
RashOP5mo ago
Thanks again. Really appreciate the help from everyone!!
Jared | InfraCharm
Do you have Numa enabled?
Rash
RashOP5mo ago
I'm not too sure what Numa is unfortunately. How do I check whether it is enabled?
SilentBot
SilentBot5mo ago
If I'm being honest, from what I can see, the ampere processor just doesn't have the single core performance to handle the pack. 50% of CPU is used by entity AI ticking, and that's with only 600 mobs.
Skullians
Skullians5mo ago
^^^
Jared | InfraCharm
Can't, it would be through the hypervisor.
Skullians
Skullians5mo ago
GC will only help so much i doubt oracle has it enabled
Jared | InfraCharm
Doesn't hurt to try, we can make CPU optimizations via G1C if needed specifically for the ARM arch.
Skullians
Skullians5mo ago
and I doubt they would tell you if you asked if you’re not PAYG ._.
Rash
RashOP5mo ago
I am actually payg. I can ask
SilentBot
SilentBot5mo ago
"Numa enabled" as in NUMA aware scheduling or?
Skullians
Skullians5mo ago
not worth it tbh
Rash
RashOP5mo ago
I needed to put a card down in order to get a free server LOL
Jared | InfraCharm
No, for memory
JAVA_ARGS="-Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16 -XX:+UseNUMA"
JAVA_ARGS="-Xms12G -Xmx12G -Xlog:gc*:file=gc.log:time,tags:filecount=5,filesize=10M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16 -XX:+UseNUMA"
Go ahead and edit your startup parameters to this, let it run for an hour. If it crashes, ping me. We're going to test using NUMA to see if we can pull some more juice from your system and I've edited the heap size and caching size for the GC to hopefully lower times even more. Also added a few tags for ARM specific optimizations.
SilentBot
SilentBot5mo ago
Yeah, so each VM would get scheduled to only run on one NUMA node/not span NUMA nodes, to prevent the latency of cache access / memory access
Jared | InfraCharm
At the 40 minute mark, start a spark report for 10 mins and send me the gc.log for the entire run time. If the server doesn't start because of a flag, remove the flag and let me know which one it was
Rash
RashOP5mo ago
Server started successfully. Going to monitor for 40min now
Jared | InfraCharm
🙂
Rash
RashOP5mo ago
In the meanwhile, I have client side people set these Java Args:
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -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:GCTimeRatio=99 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -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:GCTimeRatio=99 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
Any thoughts on these and will this help the server performance in any way?
Jared | InfraCharm
I don't deal with client side. There are too many variables like differing hardware and stuff like that.
SilentBot
SilentBot5mo ago
Client side flag changes also wouldn't impact server performance outside of rare things like compression/encryption.
Rash
RashOP5mo ago
Makes sense
Rash
RashOP5mo ago
You guys are the 🐐 s
Rash
RashOP5mo ago
Spark: https://spark.lucko.me/dCigEoYBHU and attached gc.log
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
Admincraft Meta
Admincraft Meta5mo ago
We have uploaded your file to a paste service for better readability
Paste services are more mobile friendly and easier to read than just posting a file
Requested by rash2
Admincraft Meta
Admincraft Meta5mo ago
Spark Profile Analysis
❌ Processing Error
The bot cannot process this Spark profile. It appears that the platform is not supported for analysis. Platform: Fabric
Requested by rash2
Rash
RashOP5mo ago
Will still be monitoring the thread, but need to step out for a bit
SilentBot
SilentBot5mo ago
There is now a longer time between GCs, and the GCs are faster than before, so it looks good. But it still won't address the underlaying lack of single threaded performance from the CPU imo 60% of the tick time (-10m to -8m) is still entity ticking with only ~454 entities loaded.
Jared | InfraCharm
Yeah, TPS is looking much better and GC is much better, memory is a tad lower then before. Now your only issue is the CPU - you are as optimized as can be.
Rash
RashOP5mo ago
Just curious, what are you guys looking for to tell that the CPU is the issue? The spark report indicates green so I'm a little lost
Jared | InfraCharm
Minecraft servers run on 1 thread - so single core speed is very important. You are using a ton of your thread on one of your mods and the rest are being used on mobs.
No description
SilentBot
SilentBot5mo ago
In this graph, you can hover and select timeframes in the graph, so in my case, I selected the timeframes where mspt <50 indicating lag, which was -10m to -8m
SilentBot
SilentBot5mo ago
No description
SilentBot
SilentBot5mo ago
From there I checked what in the report was taking up a lot of CPU time (causing the amount of work to go over 50ms of work per tick), which on the flame chart, appears as wide bars:
No description
SilentBot
SilentBot5mo ago
As Jared said, Minecraft is mostly single threaded, so all that work needs to be done by a single CPU thread, all within a single 50ms window If there is nothing obvious is causing lag in that report, then it's just that the processor itself isn't powerful enough to complete the normal amount of work within that 50ms window.
Tamz
Tamz5mo ago
Neruina doesnt cause any lag issues, well Used to. they seemed to remove it on their mod page tho. hmm
Jared | InfraCharm
May not inheritably cause lag, but in this case it's using ~60% of the thread.
Skullians
Skullians5mo ago
neruina isn’t causing lag neruina is a ticking entity fixer so it reroutes all entity ticking through its own code it’s no lag
Jared | InfraCharm
It's still using a ton of CPU - taking away from the rest of the system - causing lag.
Skullians
Skullians5mo ago
:/ It’s like lithium being high on the list it’s not causing lag
SilentBot
SilentBot5mo ago
It may re-route the entity ticking, but it's still what's eating 60% of the ticks, yeah.
Tamz
Tamz5mo ago
funny bugs
No description
Skullians
Skullians5mo ago
It’s the same with things like carpet TIS It’s a only ticks over profiler
SilentBot
SilentBot5mo ago
Unless it stops processing mob ticks when it hits a mspt threshold, it is still in the chain of what is eating the ticks.
Tamz
Tamz5mo ago
gotcha
Jared | InfraCharm
If he got rid of neruina for a test, we can prove that.
Tamz
Tamz5mo ago
well, if oracle gives you free 24gb ram its going to be at a cost (meh cpu)
Skullians
Skullians5mo ago
‘notTheCauseOfTickLag’ guess they lied.
No description
Tamz
Tamz5mo ago
:LUL: there it is prominence is buggy asf
Skullians
Skullians5mo ago
This is the exact same as carpet TIS which prevents update suppression crashes
Tamz
Tamz5mo ago
if you remove neruina you are going to crash the pack
Skullians
Skullians5mo ago
carpet TIS shows to use tons of the thread because it monitors the entire ticking Did it cause lag, no
Tamz
Tamz5mo ago
why do i know? i used to be staff for the team that made the crappy pack, also worked on performance optimizations for their official servers :pain: i hated every moment of it as they have a proxy system for it
Jared | InfraCharm
You guys aren't seeing it from our POV. We are saying that yes, while it assists with cleaning up the system - it is using most of the thread.
Skullians
Skullians5mo ago
fair never had issues with it here but
Jared | InfraCharm
The thread is what controls TPS/MSPT. Hence ~60% of the thread being used is translating into a higher MSPT
SilentBot
SilentBot5mo ago
When MSPT drops <50, I'd also double check htop to see if it is a single thread being pegged to 100% usage just to verify this also. As spark shows ~35% CPU usage when MSPT <50, which would be 1 thread capped and 40% of another being used. (This is at least usually how I determine if the CPU just doesn't have enough single threaded performance)
Rash
RashOP5mo ago
LOL aint no way
Tamz
Tamz5mo ago
it was fr but ive been kicked off :Sadge: oh well 😛 drama drama is fun
Rash
RashOP5mo ago
haha your help is very appreciated though
Tamz
Tamz5mo ago
always
Rash
RashOP5mo ago
Thanks for the thorough explanation. V helpful to understand
Tamz
Tamz5mo ago
but from me, had to deal with a cpu from bisect but had all threads. servercore does a Lot for you, even if its just 1 mod
Skullians
Skullians5mo ago
ServerCore sacrifices vanilla functionality ish which is why it helps more
Tamz
Tamz5mo ago
and then basically begged for them to get a bloom dedi (they did) and was sailing for a while until the pack became the limit
Skullians
Skullians5mo ago
dynview, dynamic mobcaps etc
Rash
RashOP5mo ago
Gotcha. since the java args are pr much optimized this might be the next thing I try
Tamz
Tamz5mo ago
thats true, but the main fix was the Villager lobotomizing :YEP:
Skullians
Skullians5mo ago
oh yeah villager lobotomizing is a godsend
Tamz
Tamz5mo ago
what in the world is Numa frfr performant does it Far better but causes the mobs to start swimming in blocks :Sadge:
Skullians
Skullians5mo ago
Performant is patreon now :(
Tamz
Tamz5mo ago
the dev was nice tho, patched a issue with bosses of mass destruction, the items dropped caused lag and he gave a update to fix that in like 10 mins i know, its pain, but pretty worth ngl
Jared | InfraCharm
Non-Uniform Memory Access. Allows multiprocessing with the memory buffers so it can access memory faster.
Tamz
Tamz5mo ago
oh interesting, and this is for EE or any java? :hmm:
Jared | InfraCharm
Any, but it depends solely on your system.
Tamz
Tamz5mo ago
interesting, interesting. am i able to just dm you with a spark and you peak if it could need some better flags? :hmm: then i just send $$ and i hopefully get some 😛 haha if you are free and ok with it i really should make just 1 big message ngl...... :YEP:
Jared | InfraCharm
or... hear me out... post a question 🙂
SilentBot
SilentBot5mo ago
Probably a public server and doesn't want the reports chunk details being out there
Tamz
Tamz5mo ago
very true, but uh. private stuff :Sadge: kinda? im unsure how i would describe it without breaking rules (my place's rules)
SilentBot
SilentBot5mo ago
It's fine, no need for an explanation, just saying you don't want to post it publicly is fine and understandable 🙂
Tamz
Tamz5mo ago
tyty ❤️ anyways @Rash if you need more help i am always @ able :thumbsupcat: i may not know systems / hardware like Jarad and Silent do, but i do know the pack quite well to give help
Rash
RashOP5mo ago
What do you guys mean by villager lobotomizing here? Will some villager features be disabled like trading?
Skullians
Skullians5mo ago
villager lobotomizing refers to the act of kind of ‘slowing down’ villagers trading, everything still works but they tick slower so less lag
Rash
RashOP5mo ago
Nice very cool
Tamz
Tamz5mo ago
basically changing the time the ai can do things, i do around 200 ticks so it takes like 10 seconds for them to do something, causing less lag 🙂
Rash
RashOP5mo ago
Ooo can I get a recommendation on the settings in config.yml and optimizations.yml files from you? I'm looking into how to add this mod onto my server atm but I see that I'll have to add these at some point later
Tamz
Tamz5mo ago
yeah sure, i can do them for you if you want just throw the config.yml over and ill start editing
Rash
RashOP5mo ago
Will ServerCore need to be on the client side as well?
Skullians
Skullians5mo ago
nope
Tamz
Tamz5mo ago
server only crashes the client 😛
Rash
RashOP5mo ago
Bless
Tamz
Tamz5mo ago
also tom's storage mod fucking SUCKS if your players are friends and are fine with removing mods, remove toms storage if not friends and is a future network or something, disable it via item_obliterator.json5 and blockswap
Rash
RashOP5mo ago
the c terminal is so nice though, but i can see how it can be super unoptimized lmao. Any good storage mod alternatives you know?
Tamz
Tamz5mo ago
are you playing with friends or public server type deal private or public server*
Rash
RashOP5mo ago
friends so mods are negotiable
Tamz
Tamz5mo ago
amazing! and you dont have to worry about cc exploits 😭 computer craft
Rash
RashOP5mo ago
LOL
Tamz
Tamz5mo ago
when i was still with the place, literally 1 cc terminal = Operator and sudo console access fucking insane how the mod lets you do that anyways let me find a good lag friendly mod
Rash
RashOP5mo ago
yea we're doing our annual 4 week minecraft fever so no need to worry about sweats or hackers here haha
Tamz
Tamz5mo ago
CurseForge
Sophisticated Storage (Unofficial Fabric port)
The Unofficial Fabric version of the Sophisticated Storage 95.3K Downloads | Mods
Tamz
Tamz5mo ago
sophisticated storage when i used it, has no big issues you are very lucky 😄
Rash
RashOP5mo ago
i dont think im built for dealing with public servers like you 🤣 . I can imagine the many issues that come with it
Tamz
Tamz5mo ago
yeahhhhh you live and learn helps when 30 + players are coming everyday so you just nerd out trying to optimize :YEP:
Rash
RashOP5mo ago
Sorry it took a while, I totally overthought how to get that servercore jar into the mod folder. Here is the config.yml:
Admincraft Meta
Admincraft Meta5mo ago
We have uploaded your file to a paste service for better readability
Paste services are more mobile friendly and easier to read than just posting a file
Requested by rash2
Rash
RashOP5mo ago
optimizations.yml:
# Allows you to toggle specific optimizations that don't have full vanilla parity.
# These settings will only take effect after server restarts.

# Prevents many different lagspikes caused by loading chunks synchronously.
# This for example causes maps to only update loaded chunks, which depending on the viewdistance can be a smaller radius than vanilla.
reduce-sync-loads: true
# Can significantly reduce the time spent on chunk iteration by caching ticking chunks every second.
# This is especially useful for servers with a high playercount and / or viewdistance.
# Note: The list of ticking chunks is only updated every second, rather than every tick (but that is very unlikely to matter).
cache-ticking-chunks: true
# Can significantly reduce time spent on mobspawning, but isn't as accurate as vanilla on biome borders.
# This may cause mobs from another biome to spawn a few blocks across a biome border (this does not affect structure spawning!).
fast-biome-lookups: false
# Fluid random ticks, like lava spreading fire, are run twice each game tick.
# Enabling this will cancel the 'duplicate' second fluid tick, but this may cause slight behavior changes.
cancel-duplicate-fluid-ticks: false
# Allows you to toggle specific optimizations that don't have full vanilla parity.
# These settings will only take effect after server restarts.

# Prevents many different lagspikes caused by loading chunks synchronously.
# This for example causes maps to only update loaded chunks, which depending on the viewdistance can be a smaller radius than vanilla.
reduce-sync-loads: true
# Can significantly reduce the time spent on chunk iteration by caching ticking chunks every second.
# This is especially useful for servers with a high playercount and / or viewdistance.
# Note: The list of ticking chunks is only updated every second, rather than every tick (but that is very unlikely to matter).
cache-ticking-chunks: true
# Can significantly reduce time spent on mobspawning, but isn't as accurate as vanilla on biome borders.
# This may cause mobs from another biome to spawn a few blocks across a biome border (this does not affect structure spawning!).
fast-biome-lookups: false
# Fluid random ticks, like lava spreading fire, are run twice each game tick.
# Enabling this will cancel the 'duplicate' second fluid tick, but this may cause slight behavior changes.
cancel-duplicate-fluid-ticks: false
Tamz
Tamz5mo ago
here @Rash
Admincraft Meta
Admincraft Meta5mo ago
We have uploaded your file to a paste service for better readability
Paste services are more mobile friendly and easier to read than just posting a file
Requested by tamz_
Tamz
Tamz5mo ago
i left some things the same, but most of it was changed this is just what i have kidna for the server i run
Rash
RashOP5mo ago
Nothing needed for optimizations.yml? I've added everything. Now we pray and hope :Prayge:
Tamz
Tamz5mo ago
nope just keep default
Rash
RashOP5mo ago
@Clyde thanks for taking the extra step to helping me with the config. And thanks everyone for the patience and help as well in optimizing the server. It's unfortunate that the cpu is the limiting issue, but I'm trying to keep this server free of charge so can't really upgrade. I'm just going to monitor the server overnight and if there are no more issues, I'll close the thread! Definitely learned a lot today 🙇‍♂️
Tamz
Tamz5mo ago
:thumbsupcat: yeah the cpu limiting is a issue, but free is free cant lie :YEP: and np if you need more help my dms are open, just be sure you say who you are i keep getting spam dms on scammers
Rash
RashOP5mo ago
We've achieved a flat line of 20 tps so far. It's been great everyone. 🫡 I will be closing the thread as solved https://spark.lucko.me/7elwsNLlen
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
Admincraft Meta
Admincraft Meta5mo ago
Spark Profile Analysis
❌ Processing Error
The bot cannot process this Spark profile. It appears that the platform is not supported for analysis. Platform: Fabric
Requested by rash2
Admincraft Meta
Admincraft Meta5mo ago
post closed!
The post/thread has been closed!
Requested by rash2#0

Did you find this page helpful?