指标服务器
通过 Bluetooth LE 向附近设备广播实时设备指标。
概览
指标服务器将您的设备转变为 Bluetooth Low Energy (BLE) 外围设备,向附近运行 指标客户端 的设备广播实时设备指标。已连接的客户端会收到持续的数据流,包括 CPU 使用率、每核心 CPU 活动、设备身份信息和时间戳——所有数据均通过 BLE 通知特征每秒传输一次。
这对于从另一台设备实时监控一台设备的性能非常有用,无需 Wi-Fi 网络或任何基础设施。
目录
主要部分
指标服务器是一个可滚动的单屏界面,包含四张卡片:
- 指标服务器 — 状态和服务器名称配置
- 服务器控制 — 启动/停止 BLE 广播
- 已连接客户端 — 已订阅设备的数量
- 当前指标 — 正在广播的数据的实时预览
指标服务器状态卡片
顶部卡片显示:
- 运行指示器 — 带有标签的彩色圆点:
- 运行中( 绿色)— 服务器正在活跃地广告和传输。
- 已停止(红色)— 服务器未在广告。
- 服务器名称字段 — 可编辑的文本字段,决定其他设备在 BLE 发现过程中看到的名称。详见服务器名称和预设。
- 状态 — 活跃或未活跃。
- 蓝牙状态 — 当前蓝牙无线电状态(已开启、已关闭、未授权、不支持、重置中、未知)。
- 已连接 — 当前订阅指标流的客户端设备数量。
- 错误 — 来自 BLE 堆栈的任何错误消息(仅在发生错误时显示)。
服务器名称和预设
服务器名称决定了此设备在指标客户端用户发现过程中的显示方式。您可以输入任何自定义名称,或使用预设下拉菜单快速应用内置选项之一:
| 预设 | 示例 |
|---|---|
| 营销名称 + 型号标识符 | iPhone 16 Pro Max (iPhone17,2) |
| 仅营销名称 | iPhone 16 Pro Max |
| 仅型号标识符 | iPhone17,2 |
| 设备名称 | Rogerio's iPhone 16ProMax |
默认为营销名称(型号标识符)(如可用)。
在服务器运行时更改名称会自动重启 BLE 广告,以便新名称立即生效。
服务器控制
服务器控制卡片包含一个启动服务器 / 停止服务器按钮:
- 启动服务器(绿色)— 开始 BLE 广告并开始收集 CPU 指标。一旦有客户端订阅,服务器将开始传输数据。
- 停止服务器(红色)— 停止 BLE 广告并停止指标收集。
按钮下方的说明解释了服务器通过 Bluetooth LE 向已连接客户端广播指标。
已连接客户端
已连接客户端卡片显示:
- 当前订阅的客户端设备数量(以大数字醒目显示)。
- 无客户端连接时:显示带有图标和消息的占位符,提示启动服务器并在另一台设备上使用指标客户端。
- 有客户端连接时:显示确认消息,显示数量(例如"1 个客户端正在接收指标")。
服务器仅在至少有一个客户端订阅时才传输数据。当没有客户端连接时,内部计时器会暂停以节省资源。
当前指标
当前指标卡片显示正在广播的数据的实时预览:
| 字段 | 描述 |
|---|---|
| CPU 使用率 | 此设备当前的整体 CPU 使用率百分比(例如 30.0%)。 |
| 核心数量 | 此设备的 CPU 核心数量(例如 6)。 |
| 设备 | 用户指定的设备名称(例如"Rogerio's iPhone 16ProMax")。 |
在这些字段下方,使用历史折线图显示了 CPU 使用率随时间的变化,直观地展示工作负载的波动情况。
传输的数据
服务器每秒向所有订阅的客户端广播两个 BLE 通知特征:
摘要特征
在紧凑的二进制载荷中包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| 服务器名称 | 字符串(最多 32 个字符) | 状态卡片中显示的可配置名称。 |
| 设备型号 | 字符串(最多 32 个字符) | 设备的营销名称(例如"iPhone 16 Pro Max")。 |
| 设备名称 | 字符串(最多 32 个字符) | 用户在 iOS 设置中指定的设备名称。 |
| CPU 使用率 | Float(32 位) | 整体 CPU 使用率百分比(0–100)。 |
| 核心数量 | UInt16 | CPU 核心数量。 |
| 时间戳 | UInt64 | 自 Unix 纪元以来的毫秒数。 |
每核心特征
包含每核心的 CPU 使用率数据:
| 字段 | 类型 | 描述 |
|---|---|---|
| 核心数量 | UInt8 | 核心数量(最多 32 个)。 |
| 核心使用率 | Float[] | 每个核心一个 32 位浮点数,表示该核心的使用率百分比。 |
| 时间戳 | UInt64 | 自 Unix 纪元以来的毫秒数。 |
如何与指标客户端配合使用
- 在您想要观察的设备上,打开工具 > 指标服务器,然后点击启动服务器。
- 在另一台设备上,打开工具 > 指标客户端。
- 在发现选项卡中,在列表中找到服务器并点击连接。
- 客户端会自动切换到指标选项卡以显示实时数据。
技术细节
- 服务器使用
CBPeripheralManager作为 BLE 外围设备。它广告一个自定义 GATT 服务,包含两个仅通知特征(摘要和每核心)。 - 当至少有一个客户端订阅时,数据每秒传输一次。当没有客户端连接时,计时器会暂停。
- 载荷中的所有多字节数值均为小端序,这是 Swift 在 Apple 平台上的原生格式。
- 服务器 使用 CoreBluetooth 状态恢复,允许在应用被系统重新启动时恢复广告状态。
- BLE 反压得到优雅处理——如果传输队列已满,更新会被排队,并在系统通过
peripheralManagerIsReady(toUpdateSubscribers:)发出就绪信号时进行排空。 - CPU 指标采样自 CPU 监视器工具使用的同一个
ToolCPUViewModel,确保读数一致。
注意事项与限制
- 此工具使用 Bluetooth LE,而非 Wi-Fi 网络。设备必须在 BLE 范围内(室内通常为 10–30 米)。
- BLE 可用性、后台行为和连接稳定性因设备和操作系统版本而异。
- 在 visionOS 上,指标服务器不可用,因为不支持 BLE 外围设备角色。
- 由于 BLE 载荷大小限制,服务器名称限制为 32 个字符。
- 目前仅传输 CPU 相关指标。其他设备指标(内存、温度等)不包含在 BLE 流中。