OneLiteFeatherNET / OneLiteFeatherNET/Voyager

Performance profiling + JVM tuning (ZGC, async-profiler)

Open
#142 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

infrastructure P2 release
Dominant language
Java
Stars
0
Forks
0
Avg merge
2d 21h
Merged PRs (30d)
12

Description

Description

Before releasing to the public, the server JVM must be tuned for low-latency GC to avoid tick pauses that cause lag spikes during races. ZGC is the recommended GC for Minestom's workload.

Acceptance Criteria

  • async-profiler run on a 20-player load test identifies the top 3 hot spots in the tick loop
  • ZGC is configured and validated: no GC pause exceeds 5ms during a 20-player 15-minute session
  • JVM startup flags documented in deploy/jvm-flags.sh and docs/ops/jvm-tuning.md
  • Heap sizing recommendations documented (initial: 512MB, max: 2GB for 20 players)
  • Off-heap direct memory usage checked (Minestom uses Netty direct buffers)
  • Before/after benchmark numbers committed to docs/research/jvm-tuning-results.md

Technical Details

  • Use java -XX:+UseZGC -XX:+ZGenerational for Java 25
  • async-profiler: ./profiler.sh -d 60 -f out.html <pid>
  • Key metrics: tick P50/P99/P999 duration, GC pause time, allocation rate

Dependencies

  • "Load-test ECS game loop" (Alpha) provides the baseline metrics to compare against

Estimate

M

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the dependent “Load-test ECS game loop” baseline, then run the specified async-profiler command during a 20-player session and track tick P50/P99/P999, GC pauses, allocation rate, and direct memory. Review deploy/jvm-flags.sh, docs/ops/jvm-tuning.md, and docs/research/jvm-tuning-results.md. Done means validated ZGC results meet the 5ms pause target, recommendations and flags are documented, and before/after numbers are recorded.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.