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:
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
❌ Processing Error
The bot cannot process this Spark profile. Please use an alternative Spark profile.
Requested by rash2
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
spark link doesn't works, and why u are using 22GB RAM mate? its really too much try 10-12GB
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
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
its a mod
Running a new spark profiler and will upload after I get some data from more people joining and limit testing
it does Nothing once you install it, you will need to setup its config
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?
thats ok, just a server mod. it is compatible you just need to remove night config, or it will crash when you launch
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
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 🙏
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
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
@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
@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?
It's provided as part of using Oracle I believe https://docs.oracle.com/en/graalvm/enterprise/22/docs/getting-started/
Oracle Help Center
Get Started with Oracle GraalVM Enterprise Edition
QQ: I'm learning how to read the spark profiler - where do you see rare ice and entity count like villagers?
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 minsif 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
Ah beautiful TYSM!!
np!
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.
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
Running right now and will send in a few minutes
I think you’re more or less at the limits of your cpu
CPU is at 80%
In the high end
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 processorit’s oracle ARM tho :/
yeah, not the greatest singlethread perf, definitely not ideal for modded
Can you also send me the limits of your container and your actual system specs?
what about your mc server itself
are you using a panel?
or running it in ssh / the terminal
I ssh into the terminal and run the server on a tmux session
can you send your startup command?
yup one second. I'm trying to figure out how to pass a file through from the remote server to my local
you can just run
cat filename.txt
in terminal if you want
and it outputs the file contents
Are these your current flags? If not, send me your current flags.
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
start.sh
Requested by rash2
We need the
variables.txt
fileThe cpu seems to have leveled off btw 🤔
Alrighty and can you send the gc.log
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
message.txt
Requested by rash2
wait that is truncated
It's fine
I'm up to GC(51). How can I get the whole thing?
Dw about it, I can work with this
Thanks again. Really appreciate the help from everyone!!
Do you have Numa enabled?
I'm not too sure what Numa is unfortunately. How do I check whether it is enabled?
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.
^^^
Can't, it would be through the hypervisor.
GC will only help so much
i doubt oracle has it enabled
Doesn't hurt to try, we can make CPU optimizations via G1C if needed specifically for the ARM arch.
and I doubt they would tell you if you asked if you’re not PAYG ._.
I am actually payg. I can ask
"Numa enabled" as in NUMA aware scheduling or?
not worth it tbh
I needed to put a card down in order to get a free server LOL
No, for memory
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.
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
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
Server started successfully. Going to monitor for 40min now
🙂
In the meanwhile, I have client side people set these Java Args:
Any thoughts on these and will this help the server performance in any way?
I don't deal with client side. There are too many variables like differing hardware and stuff like that.
Client side flag changes also wouldn't impact server performance outside of rare things like compression/encryption.
Makes sense
^
You guys are the 🐐 s
spark
spark is a performance profiler for Minecraft clients, servers, and proxies.
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
message.txt
Requested by rash2
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
Will still be monitoring the thread, but need to step out for a bit
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.
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.
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
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.
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
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:
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.
Neruina doesnt cause any lag issues, well Used to. they seemed to remove it on their mod page tho. hmm
May not inheritably cause lag, but in this case it's using ~60% of the thread.
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
It's still using a ton of CPU - taking away from the rest of the system - causing lag.
:/
It’s like lithium being high on the list
it’s not causing lag
It may re-route the entity ticking, but it's still what's eating 60% of the ticks, yeah.
funny bugs
It’s the same with things like carpet TIS
It’s a only ticks over profiler
Unless it stops processing mob ticks when it hits a mspt threshold, it is still in the chain of what is eating the ticks.
gotcha
If he got rid of neruina for a test, we can prove that.
well, if oracle gives you free 24gb ram its going to be at a cost (meh cpu)
‘notTheCauseOfTickLag’ guess they lied.
:LUL:
there it is
prominence is buggy asf
This is the exact same as carpet TIS which prevents update suppression crashes
if you remove neruina you are going to crash the pack
carpet TIS shows to use tons of the thread because it monitors the entire ticking
Did it cause lag, no
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
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.
fair
never had issues with it here but
The thread is what controls TPS/MSPT.
Hence ~60% of the thread being used is translating into a higher MSPT
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)
LOL aint no way
it was fr
but ive been kicked off :Sadge: oh well
😛
drama drama is fun
haha your help is very appreciated though
always
Thanks for the thorough explanation. V helpful to understand
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
ServerCore sacrifices vanilla functionality ish which is why it helps more
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
dynview, dynamic mobcaps etc
Gotcha. since the java args are pr much optimized this might be the next thing I try
thats true, but the main fix was the Villager lobotomizing
:YEP:
oh yeah
villager lobotomizing is a godsend
what in the world is Numa
frfr
performant does it Far better
but causes the mobs to start swimming in blocks
:Sadge:
Performant is patreon now :(
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
Non-Uniform Memory Access. Allows multiprocessing with the memory buffers so it can access memory faster.
oh interesting, and this is for EE or any java?
:hmm:
Any, but it depends solely on your system.
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:
or... hear me out... post a question 🙂
Probably a public server and doesn't want the reports chunk details being out there
very true, but uh. private stuff :Sadge:
kinda? im unsure how i would describe it without breaking rules (my place's rules)
It's fine, no need for an explanation, just saying you don't want to post it publicly is fine and understandable 🙂
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
What do you guys mean by villager lobotomizing here? Will some villager features be disabled like trading?
villager lobotomizing refers to the act of kind of ‘slowing down’ villagers
trading, everything still works
but they tick slower so less lag
Nice very cool
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
🙂
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 lateryeah sure, i can do them for you if you want
just throw the config.yml over and ill start editing
Will ServerCore need to be on the client side as well?
nope
server only
crashes the client 😛
Bless
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
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?
are you playing with friends or public server type deal
private or public server*
friends so mods are negotiable
amazing!
and you dont have to worry about cc exploits 😭
computer craft
LOL
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
yea we're doing our annual 4 week minecraft fever so no need to worry about sweats or hackers here haha
https://www.curseforge.com/minecraft/mc-mods/sophisticated-storage-unofficial-fabric-port
this is pretty good
CurseForge
Sophisticated Storage (Unofficial Fabric port)
The Unofficial Fabric version of the Sophisticated Storage
95.3K Downloads | Mods
sophisticated storage when i used it, has no big issues
you are very lucky 😄
i dont think im built for dealing with public servers like you 🤣 . I can imagine the many issues that come with it
yeahhhhh you live and learn
helps when 30 + players are coming everyday so you just nerd out trying to optimize
:YEP:
Sorry it took a while, I totally overthought how to get that servercore jar into the mod folder. Here is the config.yml:
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
message.txt
Requested by rash2
optimizations.yml:
here @Rash
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
message_4.txt
Requested by tamz_
i left some things the same, but most of it was changed
this is just what i have kidna for the server i run
Nothing needed for optimizations.yml?
I've added everything. Now we pray and hope :Prayge:
nope just keep default
@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 🙇♂️
: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
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.
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
post closed!
The post/thread has been closed!
Requested by rash2#0