# mc-bench — Minecraft Server Load Benchmark Benchmarks vanilla vs patched Minecraft server-26.1 under simulated load. ## Setup ```bash # JDK 25 required JAVA=/tmp/jdk25/bin/java # Server jar (bundler) SERVER_JAR=/home/fox/Downloads/server.jar # Install both servers bash bench-server.sh vanilla 40 bash bench-server.sh patched 40 ``` ## Tools | File | Purpose | |------|---------| | `bench-server.sh` | Full benchmark: startup + `/reload` + bot wave | | `gen-modpack-tags.py` | Generates synthetic depth-N diamond tag data | | `raw-connect.mjs` | Raw TCP handshake bot (version-agnostic) | | `sim-players.mjs` | mineflayer bot runner (requires matching protocol version) | | `rcon.py` | RCON command injection | ## What it measures - **Startup time** (wall clock, JVM launch → "Done") - **/reload time** (RCON-triggered, measures tag reload) - **Connection capacity** (how many handshakes the server accepts simultaneously) - **Handshake latency** (p50/p95/max) ## Notes - Real-world improvement requires a genuine modpack with tag depth ≥ 10. - Synthetic tag data uses HashMap iteration (hash-ordered), which may not trigger worst-case DFS. Real modpacks load tags alphabetically (base before root) which reliably triggers the exponential in vanilla. - See `tests/bench/LoadSimBenchmark.java` for controlled algorithmic benchmark.