OneLiteFeatherNET / OneLiteFeatherNET/Voyager
Performance profiling + JVM tuning (ZGC, async-profiler)
Nobody has claimed this yet.
- 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.shanddocs/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:+ZGenerationalfor 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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