- Compatible API Versions
- 1.0
- Sourcecode
- https://github.com/lucko/spark
spark is a performance profiling plugin/mod for Minecraft clients, servers and proxies.
- Website - browse the project homepage
- Documentation - read documentation and usage guides
- Downloads - latest development builds
spark is made up of a number of components, each detailed separately below.
- CPU Profiler: Diagnose performance issues.
- Memory Inspection: Diagnose memory issues.
- Server Health Reporting: Keep track of overall server health.
CPU Profiler
spark's profiler can be used to diagnose performance issues: "lag", low tick rate, high CPU usage, etc.
It is:
- Lightweight - can be ran in production with minimal impact.
- Easy to use - no configuration or setup necessary, just install the plugin/mod.
- Quick to produce results - running for just ~30 seconds is enough to produce useful insights into problematic areas for performance.
- Customisable - can be tuned to target specific threads, sample at a specific interval, record only "laggy" periods, etc
- Highly readable - simple tree structure lends itself to easy analysis and interpretation. The viewer can also apply deobfuscation mappings.
There are two different profiler engines:
- Native
AsyncGetCallTrace
+perf_events
- uses async-profiler (only available on Linux x86_64 systems) - Built-in Java
ThreadMXBean
- an improved version of the popular WarmRoast profiler by sk89q.
Memory Inspection
spark includes a number of tools which are useful for diagnosing memory issues with a server.
- Heap Summary- take & analyse a basic snapshot of the servers memory
- A simple view of the JVM's heap, see memory usage and instance counts for each class
- Not intended to be a full replacement of proper memory analysis tools. (see below)
- Heap Dump- take a full (HPROF) snapshot of the servers memory
- Dumps (& optionally compresses) a full snapshot of JVM's heap.
- This snapshot can then be inspected using conventional analysis tools.
- GC Monitoring- monitor garbage collection activity on the server
- Allows the user to relate GC activity to game server hangs, and easily see how long they are taking & how much memory is being free'd.
- Observe frequency/duration of young/old generation garbage collections to inform which GC tuning flags to use
spark can report a number of metrics summarising the servers overall health.
These metrics include:
- TPS - ticks per second, to a more accurate degree indicated by the /tps command
- Tick Durations - how long each tick is taking (min, max and average)
- CPU Usage - how much of the CPU is being used by the server process, and by the overall system
- Memory Usage - how much memory is being used by the process
- Disk Usage - how much disk space is free/being used by the system
Usage
To install, just add the spark-nukkit.jar file to your servers plugins directory.
Information about how to use commands can be found in the docs.
If you’d like help analysing a profiling report, or just want to chat, feel free to join us on Discord.
Guides
There are a few small "guides" available in the docs, covering the following topics.