Direct answer
A host showing 20% total CPU on a multi-core machine can still have one saturated game thread. Monitor the Java process and compare with spark instead of relying on one dashboard number.
Recommended procedure
- Record player count, version, world activity and
uptimewhen lag occurs. - Use
top -H -p <PID>for Linux thread-level activity if permitted, andps -p <PID> -o pid,%cpu,etime,cmdfor the Java process. - If hosted in a cgroup v2 container, inspect
cpu.max/cpu.statfor quota throttling; compare observations with MSPT.
What to change
ps -p <PID> -o pid,%cpu,etime,cmd
top -H -p <PID>
cat /sys/fs/cgroup/cpu.stat- Capture a spark profile at the actual lag time before removing plugins or changing JVM flags.
- If competing jobs are consuming CPU, move them to off-peak hours; for CPU quota/steal problems consult the host.
- Track per-thread CPU along with in-game symptoms over multiple samples, not a single screenshot.
How to verify the result
Confirm that the specific hot thread, throttling or profiler cost improves, not just total CPU utilization.
Version and safety notes
top -H thread IDs do not automatically identify a Minecraft function. Folia can use several region tick threads; do not assume its behavior is identical to a traditional main-thread server.
Official references
Related guides
Help us improve this article
Tell us what is missing, unclear, outdated, or incorrect. You can also suggest something we should add.