본문으로 건너뛰기

Metrics Server

Bluetooth LE를 통해 인근 기기에 실시간 기기 정보를 방송하세요.

Metrics Server: 구성 가능한 서버 이름, 서버 제어, 연결된 클라이언트 수, 현재 메트릭이 표시된 상태 카드.
사용자 지정 서버 이름을 설정하거나 마케팅 이름, 모델 식별자, 기기 이름과 같은 프리셋에서 선택하세요.
CPU 사용량, 코어 수, 기기 이름 및 실시간 사용 이력 그래프가 표시된 현재 메트릭 카드.

Overview

Metrics Server는 기기를 Bluetooth Low Energy (BLE) 주변기기로 전환하여 **Metrics Client**를 실행하는 인근 기기에 실시간 기기 정보를 방송합니다. 연결된 클라이언트는 CPU 사용량, 코어별 CPU 활동, 기기 식별 정보, 타임스탬프 등 초당 한 번씩 BLE notify 특성으로 전송되는 연속 데이터 스트림을 수신합니다.

이는 Wi-Fi 네트워크나 인프라 없이 한 기기의 성능을 다른 기기에서 실시간으로 모니터링하는 데 유용합니다.

Table Of Contents

Main Sections

Metrics Server는 네 개의 카드가 포함된 단일 스크롤 화면으로 구성됩니다:

  • Metrics Server — 상태 및 서버 이름 구성
  • Server Controls — BLE 방송 시작/중지
  • Connected Clients — 구독 중인 기기 수
  • Current Metrics — 방송 중인 데이터 실시간 미리보기

Metrics Server Status Card

상단 카드는 다음을 표시합니다:

  • 실행 상태 표시기 — 색상 점과 레이블:
    • Running (녹색) — 서버가 광고 및 전송 중임.
    • Stopped (빨간색) — 서버가 광고 중지 상태임.
  • 서버 이름 필드 — BLE 검색 시 다른 기기에 표시될 이름을 편집할 수 있는 텍스트 필드입니다. 자세한 내용은 Server Name And Presets 참조.
  • 상태 — 활성 또는 비활성.
  • Bluetooth 상태 — 현재 Bluetooth 라디오 상태 (켜짐, 꺼짐, 권한 없음, 지원 안 함, 재설정 중, 알 수 없음).
  • 연결됨 — 현재 메트릭 스트림을 구독 중인 클라이언트 기기 수.
  • 오류 — BLE 스택에서 발생한 오류 메시지 (오류 발생 시에만 표시).

Server Name And Presets

서버 이름은 이 기기가 Metrics Client 사용자에게 검색 시 어떻게 표시될지를 결정합니다. 사용자 지정 이름을 입력하거나 프리셋 드롭다운에서 내장 옵션 중 하나를 빠르게 선택할 수 있습니다:

프리셋예시
마케팅 이름 + 모델 식별자iPhone 16 Pro Max (iPhone17,2)
마케팅 이름만iPhone 16 Pro Max
모델 식별자만iPhone17,2
기기 이름Rogerio's iPhone 16ProMax

기본값은 사용 가능한 경우 마케팅 이름 (모델 식별자) 입니다.

서버가 실행 중일 때 이름을 변경하면 BLE 광고가 자동으로 재시작되어 새 이름이 즉시 적용됩니다.

Server Controls

Server Controls 카드는 단일 서버 시작 / 서버 중지 버튼을 포함합니다:

  • 서버 시작 (녹색) — BLE 광고를 시작하고 CPU 메트릭 수집을 시작합니다. 클라이언트가 구독하면 즉시 데이터 전송을 시작합니다.
  • 서버 중지 (빨간색) — BLE 광고를 중지하고 메트릭 수집을 멈춥니다.

버튼 아래 설명에는 서버가 Bluetooth LE를 통해 연결된 클라이언트에 메트릭을 방송한다고 안내합니다.

Connected Clients

Connected Clients 카드는 다음을 표시합니다:

  • 현재 구독 중인 클라이언트 기기 수 (크고 눈에 띄는 숫자로 표시).
  • 클라이언트가 없을 때: 아이콘과 함께 서버를 시작하고 다른 기기에서 Metrics Client를 사용하라는 안내 메시지.
  • 클라이언트가 연결되었을 때: 수신 중인 클라이언트 수를 확인하는 메시지 (예: "1 client is receiving metrics").

서버는 최소 한 명의 클라이언트가 구독 중일 때만 데이터를 전송합니다. 클라이언트가 없으면 내부 타이머가 일시 중지되어 리소스를 절약합니다.

Current Metrics

Current Metrics 카드는 방송 중인 데이터의 실시간 미리보기를 보여줍니다:

필드설명
CPU Usage이 기기의 현재 전체 CPU 사용률(예: 30.0%).
Core Count이 기기의 CPU 코어 수(예: 6).
Device사용자가 지정한 기기 이름(예: "Rogerio's iPhone 16ProMax").

이 필드 아래에는 CPU 사용량 변동을 시각적으로 보여주는 사용 이력 선 그래프가 표시됩니다.

Transmitted Data

서버는 초당 한 번씩 두 개의 BLE notify 특성을 모든 구독 클라이언트에 방송합니다:

Summary Characteristic

다음 필드를 포함하는 컴팩트한 이진 페이로드:

필드타입설명
Server Name문자열 (최대 32자)상태 카드에 표시되는 구성 가능한 이름.
Device Model문자열 (최대 32자)기기의 마케팅 이름 (예: "iPhone 16 Pro Max").
Device Name문자열 (최대 32자)iOS 설정에서 사용자가 지정한 기기 이름.
CPU Usage32비트 부동소수점전체 CPU 사용률 백분율 (0–100).
Core CountUInt16CPU 코어 수.
TimestampUInt64Unix epoch 이후 밀리초 단위 타임스탬프.

Per-Core Characteristic

코어별 CPU 사용량 데이터를 포함:

필드타입설명
Core CountUInt8코어 수 (최대 32).
Core Usages부동소수점 배열각 코어별 사용률을 나타내는 32비트 부동소수점 값 배열.
TimestampUInt64Unix epoch 이후 밀리초 단위 타임스탬프.

How To Use With Metrics Client

  1. 관찰하려는 기기에서 도구 > Metrics Server를 열고 서버 시작을 탭하세요.
  2. 다른 기기에서 도구 > Metrics Client를 엽니다.
  3. 검색 탭에서 서버를 찾아 연결을 탭하세요.
  4. 클라이언트는 자동으로 메트릭 탭으로 전환되어 실시간 데이터를 표시합니다.

Technical Details

  • 서버는 CBPeripheralManager를 사용하여 BLE 주변기기 역할을 수행합니다. 두 개의 notify 전용 특성(요약 및 코어별)을 포함하는 맞춤 GATT 서비스를 광고합니다.
  • 최소 한 명의 클라이언트가 구독 중일 때 초당 한 번 데이터를 전송합니다. 클라이언트가 없으면 타이머가 일시 중지됩니다.
  • 페이로드 내 모든 다중 바이트 숫자 값은 Apple 플랫폼의 Swift가 기본 생성하는 리틀 엔디언 형식입니다.
  • 서버는 CoreBluetooth 상태 복원을 사용하여 시스템에 의해 앱이 재실행될 경우 광고 상태를 복구할 수 있습니다.
  • BLE 백프레셔는 원활하게 처리됩니다 — 전송 큐가 가득 차면 업데이트가 대기열에 쌓이고 시스템이 peripheralManagerIsReady(toUpdateSubscribers:)를 통해 준비 신호를 보낼 때 전송됩니다.
  • CPU 메트릭은 CPU Monitor 도구에서 사용하는 동일한 ToolCPUViewModel에서 샘플링되어 일관된 측정값을 보장합니다.

Notes And Limitations

  • 이 도구는 Bluetooth LE를 사용하며 Wi-Fi 네트워킹을 사용하지 않습니다. 기기는 BLE 범위 내(실내 기준 약 10~30미터)에 있어야 합니다.
  • BLE 사용 가능성, 백그라운드 동작, 연결 안정성은 기기 및 OS 버전에 따라 다릅니다.
  • visionOS에서는 BLE 주변기기 역할이 지원되지 않아 Metrics Server를 사용할 수 없습니다.
  • 서버 이름은 BLE 페이로드 크기 제한으로 인해 32자 이내로 제한됩니다.
  • 현재 CPU 관련 메트릭만 전송하며, 메모리, 온도 등 다른 기기 메트릭은 BLE 스트림에 포함되지 않습니다.