Operate · 01

Benchmarking

SilkMC ships with upstream profiling surfaces plus the project's own scheduler bridging telemetry. This page describes how to run repeatable benchmarks against the platform.

Tooling

Suggested scenarios

ScenarioGoal
Vanilla baselineEstablish lowest-overhead TPS floor with no plugins on a pregenerated world.
Player-spread SMPMultiple players spread across distant chunks — exercises regional parallelism.
Plugin-heavy compatibilityMixed Paper/Bukkit/Spigot plugin pack — measures scheduler-bridge overhead.
Redstone-heavyStress block-update propagation inside a region.
Mob farmStress entity ticking and chunk loading at region boundaries.

Suggested protocol

  1. Use the same world snapshot between runs (copy a known-good world directory).
  2. Use identical JVM flags. Recommended starting point:
    -Xms6G -Xmx6G
    -XX:+UseG1GC
    -XX:+ParallelRefProcEnabled
    -XX:MaxGCPauseMillis=200
    -XX:+UnlockExperimentalVMOptions
    -XX:+DisableExplicitGC
    -XX:+AlwaysPreTouch
    -XX:G1NewSizePercent=30
    -XX:G1MaxNewSizePercent=40
    -XX:G1HeapRegionSize=8M
    -XX:G1ReservePercent=20
    -XX:G1HeapWastePercent=5
    -XX:G1MixedGCCountTarget=4
  3. Warm up for at least 5 minutes before sampling.
  4. Sample TPS, MSPT, and spark profile data for 10 minutes.
  5. Repeat each scenario at least three times and report median values.

Interpreting results

Reporting

Open an issue with the "Performance problems" template if you observe regressions versus an earlier SilkMC build, and include: