Minecraft Java server optimization

What is the best option for optimizing a java server? I am using Ubuntu server 20.04 on a machine with dual xeon E5-2620 v3 series processors 8 Gb ram per cpu. Currently I am running vanilla with a couple resource packs from Vanilla Tweaks.

I have heard of paper, spigot, and lithium, but not sure what will be my best option at this point.

Its just a shot in the blue, but try and slap that whole minecraft Server into a VM with 4 (real) cores and as much ram as ONE Node has. Turn on NUMA. Install Openjdk-8-jre-headless.

Create a runfile with:

nano Launch.sh

and Paste in the following:

#!/bin/bash
java -server -Xms6G -Xmx6G -jar nameofjavafile.jar nogui

6G is the Amount of RAM Java will use, and it will preallocate it. Save and exit

chmod +x Launch.sh

run it with

screen bash Launch.sh

so it can run in the Background, without the need to have the SSH Session open all the time.

Other Solution is: More Singlecorespeed = more better.
Minecraft, especially Java, is just a Performance Nightmare. It got better in 1.16, but not that even a 5950x can handle more than 100 People at once.

Best Performance is in my opinion on Paper, but there u got no Modsupport if i remember correctly. One thing to note: if the VM crashes for whatever reason and Paper gets a “forced shutdown”, it will most likely corrupt your world. Dont ask why i know that.

I currently have 4 Gig of ram allocated to the server since there is only 2 active people on it, I will try putting it up to 6. I haven’t done a VM before so I can attempt that I guess… Thanks