Metrics Server
透過藍牙低功耗(Bluetooth LE)即時廣播裝置指標數據到附近裝置。
概覽
Metrics Server 會將你嘅裝置變成一個藍牙低功耗(BLE)外圍裝置,實時廣播裝置指標數據到運行緊 Metrics Client 嘅附近裝置。已連接嘅客戶端會持續收到數據流,包括 CPU 使用率、每個核心嘅 CPU 活動、裝置身份資訊同時間戳記——全部都會透過 BLE notify characteristic 每秒傳送一次。
呢個功能適合用嚟即時監控另一部裝置嘅效能,無需 Wi-Fi 網絡或其他基礎設施。
目錄
主要部分
Metrics Server 係一個單一可捲動畫面,包含四張卡片:
- Metrics Server — 狀態及伺服器名稱設定
- 伺服器控制 — 開始/停止 BLE 廣播
- 已連接客戶端 — 已訂閱裝置數量
- 即時指標 — 廣播中數據嘅即時預覽
Metrics Server 狀態卡
頂部卡片會顯示:
- 運行指示器 — 有顏色嘅圓點同標籤:
- 運行中(綠色)— 伺服器正廣播及傳送數據。
- 已停止(紅色)— 伺服器未廣播。
- 伺服器名稱欄位 — 可編輯文字欄,決定其他裝置喺 BLE 探索時見到嘅名稱。詳情請參閱伺服器名稱與預設值。
- 狀態 — 啟用或未啟用。
- 藍牙狀態 — 藍牙無線電目前狀態(已開啟、已關閉、未授權、不支援、重設中、未知)。
- 已連接 — 目前已訂閱指標數據流嘅客戶端裝置數量。
- 錯誤 — 來自 BLE 堆疊嘅錯誤訊息(只會喺發生錯誤時顯示)。
伺服器名稱與預設值
伺服器名稱決定咗呢部裝置喺 Metrics Client 用戶探索時點樣顯示。你可以輸入自訂名稱,或者用 預設值 下拉選單快速套用內建選項之一:
| 預設值 | 範例 |
|---|---|
| 行銷名稱 + 型號識別碼 | iPhone 16 Pro Max (iPhone17,2) |
| 只用行銷名稱 | iPhone 16 Pro Max |
| 只用型號識別碼 | iPhone17,2 |
| 裝置名稱 | Rogerio's iPhone 16ProMax |
預設會用 行銷名稱(型號識別碼)(如有)。
當伺服器運行期間更改名稱,BLE 廣播會自動重啟,令新名稱即時生效。
伺服器控制
伺服器控制卡片只包含一個 啟動伺服器/停止伺服器按鈕:
- 啟動伺服器(綠色)— 開始 BLE 廣播並開始收集 CPU 指標。只要有客戶端訂閱,伺服器就會開始傳送數據。
- 停止伺服器(紅色)— 停止 BLE 廣播並暫停指標收集。
按鈕下方會有說明,解釋伺服器會透過藍牙 LE 廣播指標數據到已連接客戶端。
已連接客戶端
已連接客戶端卡片會顯示:
- 目前已訂閱客戶端裝置數量(以大字顯示)。
- 無客戶端連接時:會顯示一個圖示同提示訊息,指示用戶啟動伺服器並喺另一部裝置用 Metrics Client。
- 有客戶端連接時:會顯示確認訊息及數量(例如「1 個客戶端正接收指標」)。
只有最少有一個客戶端訂閱時,伺服器先會傳送數據。無客戶端連接時,內部計時器會暫停以節省資源。
即時指標
即時指標卡片會即時預覽廣播中嘅數據:
| 欄位 | 說明 |
|---|---|
| CPU 使用率 | 呢部裝置目前整體 CPU 使用百分比(例如 30.0%)。 |
| 核心數 | 呢部裝置嘅 CPU 核心數量(例如 6)。 |
| 裝置 | 用戶自訂嘅裝置名稱(例如「Rogerio's iPhone 16ProMax」)。 |
呢啲欄位下方會有一個 使用歷史 線圖,顯示 CPU 使用率隨時間 變化,方便視覺化工作負載波動。
傳送數據
伺服器每秒會向所有已訂閱客戶端廣播兩個 BLE notify characteristic:
摘要 characteristic
以精簡二進位格式包含以下欄位:
| 欄位 | 類型 | 說明 |
|---|---|---|
| 伺服器名稱 | 字串(最多 32 字元) | 狀態卡顯示嘅可設定名稱。 |
| 裝置型號 | 字串(最多 32 字元) | 裝置行銷名稱(例如「iPhone 16 Pro Max」)。 |
| 裝置名稱 | 字串(最多 32 字元) | 來自 iOS 設定嘅用戶自訂裝置名稱。 |
| CPU 使用率 | Float(32-bit) | 整體 CPU 使用百分比(0–100)。 |
| 核心數 | UInt16 | CPU 核心數量。 |
| 時間戳記 | UInt64 | Unix epoch 起計嘅毫秒數。 |
每核心 characteristic
包含每個核心嘅 CPU 使用數據:
| 欄位 | 類型 | 說明 |
|---|---|---|
| 核心數 | UInt8 | 核心數量(最多 32) 。 |
| 核心使用率 | Float[] | 每個核心一個 32-bit float,代表該核心使用百分比。 |
| 時間戳記 | UInt64 | Unix epoch 起計嘅毫秒數。 |
配合 Metrics Client 使用方法
- 喺你想觀察嘅裝置打開 工具 > Metrics Server,然後點擊 啟動伺服器。
- 喺另一部裝置打開 工具 > Metrics Client。
- 喺 探索 分頁搵到伺服器,然後點擊 連接。
- 客戶端會自動切換到 指標 分頁,顯示即時數據。
技術細節
- 伺服器以 BLE 外圍裝置 角色運作,使用
CBPeripheralManager。會廣播一個自訂 GATT 服務,包含兩個只讀(notify-only)characteristic(摘要及每核心)。 - 只要有最少一個客戶端訂閱,數據就會每秒傳送一次。無客戶端連接時,計時器會暫停。
- 所有 payload 入面多字節數值都係 little-endian,同 Swift 喺 Apple 平台原生產生嘅格式一致。
- 伺服器支援 CoreBluetooth 狀態回復,即使 app 被系統重新啟動都可以回復廣播狀態。
- BLE 背壓會妥善處理——如果傳送佇列滿咗,更新 會排隊,等系統透過
peripheralManagerIsReady(toUpdateSubscribers:)訊號通知時再傳送。 - CPU 指標數據來自同 CPU 監控工具用嘅
ToolCPUViewModel,確保讀數一致。
注意事項與限制
- 呢個工具用 藍牙 LE,唔係 Wi-Fi 網絡。裝置必須喺 BLE 範圍內(室內一般約 10–30 米)。
- BLE 可用性、背景行為同連線穩定性會因裝置及作業系統版本而異。
- 喺 visionOS,Metrics Server 唔支援,因為唔支援 BLE 外圍裝置角色。
- 伺服器名稱因 BLE payload 大小限制,只可用最多 32 個字元。
- 目前只會傳送 CPU 相關指標。其他裝置指標(記憶體、溫度等)暫未包含喺 BLE 數據流內。