Перейти до основного вмісту

Metrics Server

Транслюйте поточні метрики пристрою на сусідні пристрої через Bluetooth LE.

Metrics Server: картка стану з налаштовуваною назвою сервера, елементами керування сервером, кількістю підключених клієнтів і поточними метриками.
Встановіть власну назву сервера або виберіть один із шаблонів, наприклад, маркетингова назва, ідентифікатор моделі чи назва пристрою.
Картка поточних метрик із відображенням використання CPU, кількості ядер, назви пристрою та графіка історії навантаження в реальному часі.

Огляд

Metrics Server перетворює ваш пристрій на периферійний пристрій Bluetooth Low Energy (BLE), який транслює поточні метрики пристрою на сусідні пристрої з Metrics Client. Підключені клієнти отримують безперервний потік даних, включаючи використання CPU, активність кожного ядра, ідентифікаційну інформацію пристрою та часові мітки — усе передається раз на секунду через BLE notify characteristics.

Це корисно для моніторингу продуктивності одного пристрою з іншого в реальному часі без необхідності у Wi-Fi-мережі чи додатковій інфраструктурі.

Зміст

Основні розділи

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.
Використання CPUFloat (32-біт)Загальне використання CPU у відсотках (0–100).
Кількість ядерUInt16Кількість ядер CPU.
Часова міткаUInt64Мілісекунди з початку Unix-епохи.

Per-Core Characteristic

Містить дані про використання CPU по кожному ядру:

ПолеТипОпис
Кількість ядерUInt8Кількість ядер (до 32).
Використання ядерFloat[]По одному 32-бітному float на кожне ядро, що відображає відсоток використання цього ядра.
Часова міткаUInt64Мілісекунди з початку Unix-епохи.

Як використовувати з Metrics Client

  1. На пристрої, який потрібно спостерігати, відкрийте Інструменти > Metrics Server і натисніть Запустити сервер.
  2. На іншому пристрої відкрийте Інструменти > Metrics Client.
  3. На вкладці Виявлення знайдіть сервер у списку та натисніть Підключити.
  4. Клієнт автоматично перемкнеться на вкладку Метрики для відображення даних у реальному часі.

Технічні деталі

  • Сервер працює як 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-потік.