+ "description": "[CENTER][B][SIZE=7][IMG]https://i.imgur.com/ykHn9vx.png[/IMG] [/SIZE][/B]\n[SIZE=4][B]spark is a performance profiler for Minecraft clients, servers and proxies.[/B][/SIZE]\n[/CENTER]\n[B]Useful Links[/B]\n[LIST]\n[*][B][URL='https://spark.lucko.me/']Website[/URL][/B] - browse the project homepage\n[*][B][URL='https://spark.lucko.me/docs']Documentation[/URL][/B] - read documentation and usage guides\n[*][B][URL='https://spark.lucko.me/download']Downloads[/URL][/B] - latest development builds\n[/LIST]\n[B][SIZE=5]What does it do?[/SIZE][/B]\nspark is made up of a number of components, each detailed separately below.\n[LIST]\n[*][B]CPU Profiler[/B]: Diagnose performance issues.\n[*][B]Memory Inspection[/B]: Diagnose memory issues.\n[*][B]Server Health Reporting[/B]: Keep track of overall server health.\n[/LIST]\n\n[B][SIZE=6]⚡ CPU Profiler[/SIZE][/B]\nspark's profiler can be used to diagnose performance issues: \"lag\", low tick rate, high CPU usage, etc.\n\nIt is:\n[LIST]\n[*][B]Lightweight[/B] - can be ran in production with minimal impact.\n[*][B]Easy to use[/B] - no configuration or setup necessary, just install the plugin/mod.\n[*][B]Quick to produce results[/B] - running for just ~30 seconds is enough to produce useful insights into problematic areas for performance.\n[*][B]Customisable[/B] - can be tuned to target specific threads, sample at a specific interval, record only \"laggy\" periods, etc\n[*][B]Highly readable[/B] - simple tree structure lends itself to easy analysis and interpretation. The viewer can also apply deobfuscation mappings.\n[/LIST]\nIt works by sampling statistical data about the systems activity, and constructing a call graph based on this data. The call graph is then displayed in an online viewer for further analysis by the user.\n\nThere are two different profiler engines:\n[LIST]\n[*]Native [ICODE]AsyncGetCallTrace[/ICODE] + [ICODE]perf_events[/ICODE] - uses [URL='https://github.com/jvm-profiling-tools/async-profiler']async-profiler[/URL] ([I]only available on Linux x86_64 systems[/I])\n[*]Built-in Java [ICODE]ThreadMXBean[/ICODE] - an improved version of the popular [URL='https://github.com/sk89q/WarmRoast']WarmRoast profiler[/URL] by sk89q.\n[/LIST]\n[B]\n[SIZE=6]⚡ Memory Inspection[/SIZE][/B]\nspark includes a number of tools which are useful for diagnosing memory issues with a server.\n[LIST]\n[*][B]Heap Summary[/B] - take & analyse a basic snapshot of the servers memory\n[LIST]\n[*]A simple view of the JVM's heap, see memory usage and instance counts for each class\n[*]Not intended to be a full replacement of proper memory analysis tools. (see below)\n[/LIST]\n[/LIST]\n[LIST]\n[*][B]Heap Dump[/B] - take a full (HPROF) snapshot of the servers memory\n[LIST]\n[*]Dumps (& optionally compresses) a full snapshot of JVM's heap.\n[*]This snapshot can then be inspected using conventional analysis tools.\n[/LIST]\n[/LIST]\n[LIST]\n[*][B]GC Monitoring[/B] - monitor garbage collection activity on the server\n[LIST]\n[*]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.\n[*]Observe frequency/duration of young/old generation garbage collections to inform which GC tuning flags to use\n[/LIST]\n[/LIST]\n[B][SIZE=6]⚡ Server Health Reporting[/SIZE][/B]\nspark can report a number of metrics summarising the servers overall health.\n\nThese metrics include:\n[LIST]\n[*][B]TPS[/B] - ticks per second, to a more accurate degree indicated by the /tps command\n[*][B]Tick Durations[/B] - how long each tick is taking (min, max and average)\n[*][B]CPU Usage[/B] - how much of the CPU is being used by the server process, and by the overall system\n[*][B]Memory Usage[/B] - how much memory is being used by the process\n[*][B]Disk Usage[/B] - how much disk space is free/being used by the system\n[/LIST]\nAs well as providing tick rate averages, spark can also monitor individual ticks - sending a report whenever a single tick's duration exceeds a certain threshold. This can be used to identify trends and the nature of performance issues, relative to other system or game events.\n\n\n[SIZE=5][B]Us[SIZE=5]a[/SIZE]ge[/B][/SIZE]\nTo install, just add the [B]spark.jar[/B] file to your servers plugins directory.\n\nInformation about [URL='https://spark.lucko.me/docs/Command-Usage']how to use commands[/URL] can be found in the docs.\n\nIf you’d like help analysing a profiling report, or just want to chat, feel free to join us on [URL='https://discord.gg/PAGT2fu']Discord[/URL].\n\n\n[B][SIZE=5]Guides[/SIZE][/B]\nThere are a few small \"guides\" available in the docs, covering the following topics.\n[LIST]\n[*][URL='https://spark.lucko.me/docs/guides/The-tick-loop']The tick loop[/URL]\n[*][URL='https://spark.lucko.me/docs/guides/Finding-lag-spikes']Finding the cause of lag spikes[/URL]\n[/LIST]",
0 commit comments