메트릭스 서버
Bluetooth LE를 통해 인근 기기에 실시간 기기 정보를 방송하세요.
Overview
Metrics Server는 기기를 Bluetooth Low Energy (BLE) 주변기기로 전환하여 **Metrics Client**를 실행하는 인근 기기에 실시간 기기 정보를 방송합니다. 연결된 클라이언트는 CPU 사용량, 코어별 CPU 활동, 기기 식별 정보, 타임스탬프 등 초당 한 번씩 BLE notify 특성으로 전송되는 연속 데이터 스트림을 수신합니다.
이는 Wi-Fi 네트워크나 인프라 없이 한 기기의 성능을 다른 기기에서 실시간으로 모니터링하는 데 유용합니다.
Table Of Contents
- Main Sections
- Metrics Server Status Card
- Server Name And Presets
- Server Controls
- Connected Clients
- Current Metrics
- Transmitted Data
- How To Use With Metrics Client
- Technical Details
- Notes And Limitations
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 Usage | 32비트 부동소수점 | 전체 CPU 사용률 백분율 (0–100). |
| Core Count | UInt16 | CPU 코어 수. |
| Timestamp | UInt64 | Unix epoch 이후 밀리초 단위 타임스탬프. |
Per-Core Characteristic
코어별 CPU 사용량 데이터를 포함:
| 필드 | 타입 | 설명 |
|---|---|---|
| Core Count | UInt8 | 코어 수 (최대 32). |
| Core Usages | 부동소수점 배열 | 각 코어별 사용률을 나타내는 32비트 부동소수점 값 배열. |
| Timestamp | UInt64 | Unix epoch 이후 밀리초 단위 타임스탬프. |
How To Use With Metrics Client
- 관찰하려는 기기에서 도구 > Metrics Server를 열고 서버 시작을 탭하세요.
- 다른 기기에서 도구 > Metrics Client를 엽니다.
- 검색 탭에서 서버를 찾아 연결을 탭하세요.
- 클라이언트는 자동으로 메트릭 탭으로 전환되어 실시간 데이터를 표시합니다.
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 스트림에 포함되지 않습니다.