Flare

Flare

适用于1.12.2的性能分析套件,包含并改进了Spark。

基础库

Flare Banner

源自 spark;flare 是面向 1.12.2 Forge 与 Cleanroom 环境的性能分析器和调试器。

flare 能做什么?

flare 由以下独立组件构成:

  • CPU 分析器:诊断性能问题。
  • 内存检查:诊断内存问题。
  • 服务器健康报告:持续跟踪服务器整体健康状况。

✨ CPU 分析器

flare 的分析器可用于诊断性能问题:“卡顿”、低 tick 速率、高 CPU 占用等。

它具有以下特点:

  • 轻量 - 可在生产环境中运行,影响极小。
  • 易于使用 - 无需配置或设置,只需安装插件/模组。
  • 快速产生结果 - 仅运行约 30 秒就足以对性能问题区域产生有用的见解。
  • 可自定义 - 可调优以针对特定线程、以特定间隔采样、仅记录“卡顿”时段等。
  • 高度可读 - 简单的树状结构便于分析和解读。查看器还可以应用反混淆映射。

它的工作原理是对系统活动的统计数据进行采样,并基于这些数据构建调用图。然后,调用图会显示在在线查看器中,供用户进一步分析。

有两种不同的分析器引擎:

  • 原生 AsyncGetCallTrace + perf_events - 使用 async-profiler(仅在 Linux x86_64 系统上可用)
  • 内置 Java ThreadMXBean - sk89q 所开发流行的 WarmRoast 分析器的改进版本。

✨ 内存检查

flare 包含许多可用于诊断服务器内存问题的工具。

  • 堆摘要 - 获取并分析服务器内存的基本快照
    • JVM 堆的简单视图,可查看每个类的内存使用量和实例数量
    • 并不打算完全替代正规的内存分析工具。(见下一项)
  • 堆转储 - 获取服务器内存的完整(HPROF)快照
    • 转储(并可选压缩)JVM 堆的完整快照。
    • 随后可使用常规分析工具检查此快照。
  • GC 监控 - 监控服务器上的垃圾回收活动
    • 允许用户将 GC 活动与游戏服务器卡顿关联起来,并轻松查看它们耗费了多长时间以及释放了多少内存。
    • 观察新生代/老年代垃圾回收的频率/持续时间,以决定应使用哪些 GC 调优标志

✨ 服务器健康报告

flare 可以报告许多概括服务器整体健康状况的指标。

这些指标包括:

  • TPS - 每秒 tick 数,比 /tps 命令所指示的更为精确
  • Tick 持续时间 - 每个 tick 花费的时间(最小值、最大值和平均值)
  • CPU 使用率 - 进程以及整个系统占用了多少 CPU
  • 内存使用量 - 进程占用了多少内存
  • 磁盘使用量 - 系统有多少可用/已使用磁盘空间

除了提供 tick 速率平均值外,flare 还可以监控单个 tick - 每当单个 tick 的持续时间超过某个阈值时发送报告。这可用于识别性能问题的趋势和性质,并与其他系统或游戏事件相关联。

关于 flare、WarmRoast、Minecraft timings 和其他分析器之间的比较,请参见原始 spark 文档中的这个页面。

我该如何使用 flare?

flare 使用 Minecraft 的命令系统,让最终用户充分发挥 flare 的潜力。

许可证

flare 是自由且开源的。它根据 GNU GPLv3 许可证的条款发布。更多信息请参见 LICENSE。

flare API 子模块根据更宽松的 MIT 许可证条款发布。更多信息请参见 flare-api/LICENSE。

flare 是 spark 的分支,后者同样使用 GPLv3 授权。