Metrics Server
Транслюйте поточні метрики пристрою на сусідні пристрої через Bluetooth LE.
Огляд
Metrics Server перетворює ваш пристрій на периферійний пристрій Bluetooth Low Energy (BLE), який транслює поточні метрики пристрою на сусідні пристрої з Metrics Client. Підключені клієнти отримують безперервний потік даних, включаючи використання CPU, активність кожного ядра, ідентифікаційну інформацію пристрою та часові мітки — усе передається раз на секунду через BLE notify characteristics.
Це корисно для моніторингу продуктивності одного пристрою з іншого в реальному часі без необхідності у Wi-Fi-мережі чи додатковій інфраструктурі.
Зміст
- Основні розділи
- Картка стану Metrics Server
- Назва сервера та шаблони
- Елементи керування сервером
- Підключені клієнти
- Поточні метрики
- Передавані дані
- Як використовувати з Metrics Client
- Технічні деталі
- Примітки та обмеження
Основні розділи
Metrics Server — це один екран із прокруткою, що містить чотири картки:
- Metrics Server — стан і налаштування назви сервера
- Елементи керування сервером — запуск/зупинка трансляції BLE
- Підключені клієнти — кількість підписаних пристроїв
- Поточні метрики — живий перегляд даних, що транслюються
Картка стану Metrics Server
Верхня картка відображає:
- Індикатор роботи — кольорова крапка з підписом:
- Працює (зелений) — сервер активно рекламується та передає дані.
- Зупинено (червоний) — сервер не рекламується.
- Поле Назва сервера — редаговане текстове поле, яке визначає назву, що буде відображатися іншим пристроям під час виявлення через BLE. Детальніше див. Назва сервера та шаблони.
- Статус — Активний або Неактивний.
- Стан Bluetooth — поточний стан радіомодуля Bluetooth (Увімкнено, Вимкнено, Неавторизовано, Не підтримується, Скидання, Невідомо).
- Підключено — кількість пристроїв-клієнтів, які наразі підписані на потік метрик.
- Помилка — будь-яке повідомлення про помилку від BLE-стека (відображається лише у разі виникнення помилки).
Назва сервера та шаблони
Назва сервера визначає, як цей пристрій буде відображатися користувачам Metrics Client під час виявлення. Ви можете ввести будь-яку власну назву або скористатися випадаючим списком Шаблони для швидкого вибору одного з вбудованих варіантів:
| Шаблон | Приклад |
|---|---|
| Маркетингова назва + ідентифікатор моделі | iPhone 16 Pro Max (iPhone17,2) |
| Лише маркетингова назва | iPhone 16 Pro Max |
| Лише ідентифікатор моделі | iPhone17,2 |
| Назва пристрою | Rogerio's iPhone 16ProMax |
Типово використовується Маркетингова назва (Ідентифікатор моделі), якщо доступно.
Зміна назви під час роботи сервера автоматично перезапуск ає рекламу BLE, щоб нова назва застосувалася негайно.
Елементи керування сервером
Картка елементів керування сервером містить одну кнопку Запустити сервер / Зупинити сервер:
- Запустити сервер (зелений) — починає рекламу BLE і збір метрик CPU. Сервер почне передавати дані, щойно клієнт підпишеться.
- Зупинити сервер (червоний) — зупиняє рекламу BLE і припиняє збір метрик.
Пояснення під кнопкою інформує, що сервер транслює метрики підключеним клієнтам через Bluetooth LE.
Підключені клієнти
Картка підключених клієнтів відображає:
- Кількість пристроїв-клієнтів, які наразі підписані (відображається великим числом).
- Якщо клієнти не підключені: заглушка з іконкою та повідомлення м про необхідність запустити сервер і скористатися Metrics Client на іншому пристрої.
- Якщо клієнти підключені: підтвердження з кількістю (наприклад, «1 клієнт отримує метрики»).
Сервер передає дані лише тоді, коли підписаний хоча б один клієнт. Якщо клієнтів немає, внутрішній таймер призупиняється для економії ресурсів.
Поточні метрики
Картка поточних метрик відображає живий перегляд даних, що транслюються:
| Поле | Опис |
|---|---|
| Використання CPU | Поточний відсоток загального використання CPU на цьому пристрої (наприклад, 30.0%). |
| Кількість ядер | Кількість ядер CPU на цьому пристрої (наприклад, 6). |
| Пристрій | Назва пристрою, задана користувачем (наприклад, "Rogerio's iPhone 16ProMax"). |
Під цими полями розташовано графік Історія використання, який відображає зміну навантаження CPU з часом для візуального аналізу коливань навантаження.
Передавані дані
Сервер транслює дві BLE notify characteristics раз на секунду для всіх підписаних клієнтів:
Summary Characteristic
Містить такі поля у компактному бінарному форматі:
| Поле | Тип | Опис |
|---|---|---|
| Назва сервера | Рядок (до 32 символів) | Налаштовувана назва, що відображається у картці стану. |
| Модель пристрою | Рядок (до 32 символів) | Маркетингова назва пристрою (наприклад, "iPhone 16 Pro Max"). |
| Назва пристрою | Рядок (до 32 символів) | Назва пристрою, задана користувачем у налаштуваннях iOS. |
| Використання CPU | Float (32-біт) | Загальне використання CPU у відсотках (0–100). |
| Кількість ядер | UInt16 | Кількість ядер CPU. |
| Часова мітка | UInt64 | Мілісекунди з початку Unix-епо хи. |
Per-Core Characteristic
Містить дані про використання CPU по кожному ядру:
| Поле | Тип | Опис |
|---|---|---|
| Кількість ядер | UInt8 | Кількість ядер (до 32). |
| Використання ядер | Float[] | По одному 32-бітному float на кожне ядро, що відображає відсоток використання цього ядра. |
| Часова мітка | UInt64 | Мілісекунди з початку Unix-епохи. |
Як використовувати з Metrics Client
- На пристрої, який потрібно спостерігати, відкрийте Інструменти > Metrics Server і натисніть Запустити сервер.
- На іншому пристрої відкрийте Інструменти > Metrics Client.
- На вкладці Виявлення знайдіть сервер у списку та натисніть Підключити.
- Клієнт автоматично перемкнеться на вкладку Метрики для відображення даних у реальному часі.
Технічні деталі
- Сервер працює як BLE Peripheral з використанням
CBPeripheralManager. Він рекламує власний GATT-сервіс із двома характеристиками лише для сповіщень (summary та per-core). - Дані передаються раз на секунду, якщо підписаний хоча б один клієнт. Таймер призупиняється, коли клієнтів немає.
- Усі багатобайтові числові значення у корисному навантаженні мають little-endian порядок байтів, як це реалізовано у Swift на платформах Apple.
- Сервер використовує CoreBluetooth state restoration, що дозволяє відновити стан реклами, якщо додаток перезапущено системою.
- BLE backpressure обробляється коректно — якщо черга передачі заповнена, оновлення ставляться у чергу та надсилаються, коли система сигналізує про готовність через
peripheralManagerIsReady(toUpdateSubscribers:). - Метрики CPU зчитуються з того ж
ToolCPUViewModel, що й у інструменті моніторингу CPU, що гарантує узгоджені показники.
Примітки та обмеження
- Цей інструмент використовує Bluetooth LE, а не Wi-Fi. Пристрої мають бути в межах дії BLE (зазвичай 10–30 метрів у приміщенні).
- Доступність BLE, робота у фоні та стабільність з'єднання залежать від пристрою та версії ОС.
- На visionOS Metrics Server недоступний, оскільки роль BLE-периферії не підтримується.
- Назва сервера обмежена 32 символами через обмеження розміру BLE-пакету.
- Наразі передаються лише метрики, пов'язані з CPU. Інші метрики пристрою (пам'ять, температура тощо) не включені у BLE-потік.