{"id":13408473,"url":"https://github.com/lucko/spark","last_synced_at":"2025-05-14T18:01:45.884Z","repository":{"id":38018159,"uuid":"134997136","full_name":"lucko/spark","owner":"lucko","description":"A performance profiler for Minecraft clients, servers, and proxies.","archived":false,"fork":false,"pushed_at":"2025-05-08T18:25:19.000Z","size":6133,"stargazers_count":1125,"open_issues_count":84,"forks_count":163,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-08T19:38:14.455Z","etag":null,"topics":["bukkit","fabric","fabricmc","forge","minecraft","minecraft-server","performance","profiler","spigot"],"latest_commit_sha":null,"homepage":"https://spark.lucko.me/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"patreon":"luckdev"}},"created_at":"2018-05-26T21:53:21.000Z","updated_at":"2025-05-08T18:25:22.000Z","dependencies_parsed_at":"2024-01-06T13:02:03.977Z","dependency_job_id":"af379895-1ba4-4587-8d80-9f31eb5b36c7","html_url":"https://github.com/lucko/spark","commit_stats":{"total_commits":480,"total_committers":40,"mean_commits":12.0,"dds":"0.14166666666666672","last_synced_commit":"7f3228995f811f00450c3426749c3ffdd5eb29f8"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucko%2Fspark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucko%2Fspark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucko%2Fspark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucko%2Fspark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucko","download_url":"https://codeload.github.com/lucko/spark/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198452,"owners_count":22030964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bukkit","fabric","fabricmc","forge","minecraft","minecraft-server","performance","profiler","spigot"],"created_at":"2024-07-30T20:00:53.077Z","updated_at":"2025-05-14T18:01:45.845Z","avatar_url":"https://github.com/lucko.png","language":"Java","funding_links":["https://patreon.com/luckdev"],"categories":["Java","Other"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\t\u003cimg\n\t\talt=\"spark\"\n\t\tsrc=\"https://i.imgur.com/ykHn9vx.png\"\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003e\n  spark is a performance profiler for Minecraft clients, servers and proxies.\n\u003c/h3\u003e\n\n#### Useful Links\n* [**Website**](https://spark.lucko.me/) - browse the project homepage\n* [**Documentation**](https://spark.lucko.me/docs) - read documentation and usage guides\n* [**Downloads**](https://spark.lucko.me/download) - latest plugin/mod downloads\n\n\n## What does spark do?\n\nspark is made up of three separate components:\n\n* **CPU Profiler**: Diagnose performance issues.\n* **Memory Inspection**: Diagnose memory issues.\n* **Server Health Reporting**: Keep track of overall server health.\n\n### :zap: CPU Profiler\n\nspark's profiler can be used to diagnose performance issues: \"lag\", low tick rate, high CPU usage, etc.\n\nIt is:\n\n* **Lightweight** - can be ran in production with minimal impact.\n* **Easy to use** - no configuration or setup necessary, just install the plugin/mod.\n* **Quick to produce results** - running for just ~30 seconds is enough to produce useful insights into problematic areas for performance.\n* **Customisable** - can be tuned to target specific threads, sample at a specific interval, record only \"laggy\" periods, etc\n* **Highly readable** - simple tree structure lends itself to easy analysis and interpretation. The viewer can also apply deobfuscation mappings.\n\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* Native/Async - uses the [async-profiler](https://github.com/async-profiler/async-profiler) library (*only available on Linux \u0026 macOS systems*)\n* Java - uses `ThreadMXBean`, an improved version of the popular [WarmRoast profiler](https://github.com/sk89q/WarmRoast) by sk89q.\n\n### :zap: Memory Inspection\n\nspark includes a number of tools which are useful for diagnosing memory issues with a server.\n\n* **Heap Summary** - take \u0026 analyse a basic snapshot of the servers memory\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 next item)\n* **Heap Dump** - take a full (HPROF) snapshot of the servers memory\n  * Dumps (\u0026 optionally compresses) a full snapshot of JVM's heap.\n  * This snapshot can then be inspected using conventional analysis tools.\n* **GC Monitoring** - monitor garbage collection activity on the server\n  * Allows the user to relate GC activity to game server hangs, and easily see how long they are taking \u0026 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\n### :zap: Server Health Reporting\n\nspark can report a number of metrics summarising the servers overall health.\n\nThese metrics include:\n\n* **TPS** - ticks per second, to a more accurate degree indicated by the /tps command\n* **Tick Durations** - how long each tick is taking (min, max and average)\n* **CPU Usage** - how much of the CPU is being used by the process, and by the overall system\n* **Memory Usage** - how much memory is being used by the process\n* **Disk Usage** - how much disk space is free/being used by the system\n\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\nFor a comparison between spark, WarmRoast, Minecraft timings and other profiles, see this [page](https://spark.lucko.me/docs/misc/spark-vs-others) in the spark docs.\n\n## License\n\nspark is free \u0026 open source. It is released under the terms of the GNU GPLv3 license. Please see [`LICENSE.txt`](LICENSE.txt) for more information. \n\nThe spark API submodule is released under the terms of the more permissive MIT license. Please see [`spark-api/LICENSE.txt`](spark-api/LICENSE.txt) for more information.\n\nspark is a fork of [WarmRoast](https://github.com/sk89q/WarmRoast), which was also [licensed using the GPLv3](https://github.com/sk89q/WarmRoast/blob/3fe5e5517b1c529d95cf9f43fd8420c66db0092a/src/main/java/com/sk89q/warmroast/WarmRoast.java#L1-L17).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucko%2Fspark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucko%2Fspark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucko%2Fspark/lists"}