逐时制

逐时制

实时服务器性能监控,测量tick成本,将延迟归因于玩家和区块,并帮助准确识别导致服务器性能问题的原因。

🟢 Tickwise

查看卡顿的根源。修复真正重要的问题。

Tickwise 是一款轻量级的服务端性能监控模组,旨在帮助模组化的 Minecraft 服务器识别究竟是什么导致了性能问题、谁是罪魁祸首、问题出在哪里。

与主要提供聚合技术数据的传统性能监控工具不同,Tickwise 将服务器性能直接与玩家、区块、机器、实体、模组和位置关联起来。


🔍 Tickwise 能做什么?

Tickwise 会测量服务器上每个 tick 对象的真实 CPU 开销,并将这些数据转化为易于理解的信息。

它可以按以下维度跟踪性能:

  • 👤 玩家
  • 🗺️ 区块
  • ⚙️ 方块实体
  • 👾 实体
  • 📦 模组
  • 🧩 实体 / 方块实体类型

这使得你可以快速回答如下问题:

哪个玩家造成的服务器负载最高?

哪个区块导致了卡顿?

哪台机器或实体消耗的 tick 时间最多?


📊 实时性能数据

Tickwise 持续收集服务器上的性能数据,并随时间进行聚合分析。

系统跟踪以下内容:

  • MSPT
  • 单个 tick 的开销
  • 玩家性能影响
  • 区块性能影响
  • 实体和方块实体的开销
  • 模组级别的性能影响
  • 未分配 / 孤立的 tick 对象

性能数据使用滚动窗口维护,并采用约 60 秒 的指数平均值。


👤 玩家归属

Tickwise 的主要特性之一是其将性能开销与玩家关联的能力。

在可能的情况下,所有权通过以下方式解析:

  1. 领地系统,例如 FTB Chunks 或 Open Parties and Claims
  2. Tickwise 自有的 基于区块的所有权系统
  3. 一个未分配 / 孤立类别

Tickwise 从不存储每个独立方块的所有权。相反,其回退系统在区块级别运行,保持跟踪的轻量化和高效性。


🖥️ 玩家 HUD

Tickwise 不仅仅是一个管理员工具。

玩家可以选择在游戏中直接看到自己的性能影响。

HUD 可以显示以下信息:

基础: 2.1 毫秒/tick — 7%

该组件可以使用不同的阈值和颜色进行配置:

🟢 低影响 🟠 中等影响 🔴 高影响

HUD 在低于配置的阈值时保持隐藏,这样普通玩家不会持续看到性能信息。


🗺️ 性能热力图

Tickwise 包含一个可选的区块性能覆盖层。

按下可配置的按键绑定可以请求你周围区块的性能数据,并直接在游戏世界中可视化其开销。

覆盖层可以显示:

  • 🟢 低开销区块
  • 🟠 中等开销区块
  • 🔴 高开销区块
  • 以微秒为单位的精确性能开销

玩家始终可以检查自己的区域,而检查其他玩家的区域则可能需要管理员权限。


🧑‍💻 管理员命令

Tickwise 为服务器管理员提供了多个命令:

/tickwise top players [limit]
/tickwise top chunks [limit]
/tickwise top mods [limit]
/tickwise top types [limit]

/tickwise inspect <player>

/tickwise report

/tickwise goggles

📋 报告

报告可以包含以下信息:

  • 影响最大的玩家
  • 开销最高的区块
  • 高开销模组
  • 高开销实体类型
  • 未分配的 ticking 方块
  • 实体集群
  • 物品堆叠
  • 无附近玩家但已加载的区块

生成报告时还可以选择使用 Discord webhook。


🧩 为模组化 Minecraft 而生

Tickwise 专为大型模组服务器和整合包设计。

其架构围绕一个基于原版的共享核心构建,并带有特定加载器的集成,使得大部分性能关键代码可以在不同平台之间共享。

支持的加载器

  • 🟩 NeoForge
  • 🟦 Fabric

目标版本

Minecraft 1.21.1

该架构设计时考虑了未来的移植,但开发工作首先集中在 Minecraft 1.21.1 上。


⚡ 设计保持轻量

性能监控模组不应成为性能问题的一部分。

因此,Tickwise 使用 tick 采样 而不是对每个服务器 tick 进行插桩。

默认情况下,该模组测量 每 20 个 tick 中的 1 个,然后推断结果。

在未被测量的 tick 上,热路径只执行一个简单的布尔检查,零内存分配。

性能目标

平均 MSPT 开销低于 1%

这是项目的核心要求,而不是可选的优化项。


🛡️ 设计安全

Tickwise 旨在与大型复杂的整合包共存。

项目力求确保:

  • 不会因其他模组而崩溃
  • 对可选依赖采用软集成
  • 不依赖第三方 API 的运行时
  • 服务端测量
  • 用于客户端同步的网络数据包
  • 热路径中无不必要的内存分配
  • 不跨加载器复制业务逻辑

🚧 Tickwise 不做什么

Tickwise 专注于测量和可见性,而非自动惩罚。

它目前不会:

  • ❌ 限制或减慢玩家的机器
  • ❌ 自动惩罚玩家
  • ❌ 封禁玩家
  • ❌ 取代 Java 级性能分析工具
  • ❌ 作为仅客户端模组运行

自动机器节流计划在未来的版本中实现,前提是有足够的实际数据来安全地实施它。


🎯 目标

大型模组服务器可能包含数百个模组、数千台机器和海量的 ticking 实体。

当性能开始下降时,找出原因不应该靠猜。

Tickwise 将服务器性能转化为可操作的信息。

🟢 测量。 🟢 归属。 🟢 定位。 🟢 优化。

Tickwise — 查看卡顿的根源。修复真正重要的问题。