Metrics Server
Trasmetti in tempo reale le metriche del dispositivo ai dispositivi vicini tramite Bluetooth LE.
Panoramica
Metrics Server trasforma il tuo dispositivo in un periferico Bluetooth Low Energy (BLE) che trasmette metriche in tempo reale ai dispositivi vicini che eseguono Metrics Client. I client connessi ricevono un flusso continuo di dati che include utilizzo CPU, attività per singolo core, informazioni di identità del dispositivo e timestamp — tutto trasmesso una volta al secondo tramite caratteristiche BLE notify.
Questo è utile per monitorare le prestazioni di un dispositivo da un altro in tempo reale, senza necessità di una rete Wi-Fi o di infrastrutture aggiuntive.
Indice
- Sezioni principali
- Scheda di stato di Metrics Server
- Nome server e preset
- Controlli server
- Client connessi
- Metriche correnti
- Dati trasmessi
- Come usare con Metrics Client
- Dettagli tecnici
- Note e limitazioni
Sezioni principali
Metrics Server è una singola schermata scorrevole composta da quattro schede:
- Metrics Server — stato e configurazione del nome server
- Controlli server — avvio/arresto della trasmissione BLE
- Client connessi — conteggio dei dispositivi sottoscritti
- Metriche correnti — anteprima in tempo reale dei dati trasmessi
Scheda di stato di Metrics Server
La scheda superiore mostra:
- Un indicatore di stato — un punto colorato con etichetta:
- In esecuzione (verde) — il server sta trasmettendo e pubblicizzando attivamente.
- Arrestato (rosso) — il server non sta pubblicizzando.
- Campo Nome server — campo di testo modificabile che determina il nome visualizzato dagli altri dispositivi durante la scoperta BLE. Vedi Nome server e preset per dettagli.
- Stato — Attivo o Inattivo.
- Stato Bluetooth — stato attuale della radio Bluetooth (Acceso, Spento, Non autorizzato, Non supportato, In ripristino, Sconosciuto).
- Connessi — numero di dispositivi client attualmente sottoscritti al flusso di metriche.
- Errore — eventuale messaggio di errore dallo stack BLE (mostrato solo in caso di errore).
Nome server e preset
Il nome server determina come questo dispositivo appare agli utenti di Metrics Client durante la scoperta. Puoi inserire un nome personalizzato oppure utilizzare il menu a discesa Preset per applicare rapidamente una delle opzioni predefinite:
| Preset | Esempio |
|---|---|
| Nome commerciale + identificatore modello | iPhone 16 Pro Max (iPhone17,2) |
| Solo nome commerciale | iPhone 16 Pro Max |
| Solo identificatore modello | iPhone17,2 |
| Nome dispositivo | iPhone 16ProMax di Rogerio |
L'impostazione predefinita è Nome commerciale (Identificatore modello) quando disponibile.
Modificare il nome mentre il server è in esecuzione riavvia automaticamente la pubblicizzazione BLE affinché il nuovo nome abbia effetto immediato.
Controlli server
La scheda Controlli server contiene un unico pulsante Avvia server / Arresta server:
- Avvia server (verde) — avvia la pubblicizzazione BLE e inizia la raccolta delle metriche CPU. Il server inizierà a trasmettere dati non appena un client si sottoscrive.
- Arresta server (rosso) — interrompe la pubblicizzazione BLE e ferma la raccolta delle metriche.
Una descrizione sotto il pulsante spiega che il server trasmette le metriche ai client connessi tramite Bluetooth LE.
Client connessi
La scheda Client connessi mostra:
- Il numero di dispositivi client attualmente sottoscritti (visualizzato in grande).
- Quando nessun client è connesso: un segnaposto con icona e messaggio per avviare il server e usare Metrics Client su un altro dispositivo.
- Quando ci sono client connessi: un messaggio di conferma con il conteggio (es. "1 client sta ricevendo le metriche").
Il server trasmette dati solo quando almeno un client è sottoscritto. Quando nessun client è connesso, il timer interno viene messo in pausa per risparmiare risorse.
Metriche correnti
La scheda Metriche correnti mostra un'anteprima in tempo reale dei dati trasmessi:
| Campo | Descrizione |
|---|---|
| Utilizzo CPU | Percentuale attuale di utilizzo complessivo della CPU di questo dispositivo (es. 30,0%). |
| Numero core | Numero di core CPU presenti su questo dispositivo (es. 6). |
| Dispositivo | Nome del dispositivo assegnato dall'utente (es. "iPhone 16ProMax di Rogerio"). |
Sotto questi campi, un grafico Storico utilizzo mostra l'andamento dell'utilizzo CPU nel tempo, offrendo una rappresentazione visiva delle variazioni di carico.
Dati trasmessi
Il server trasmette due caratteristiche BLE notify una volta al secondo a tutti i client sottoscritti:
Caratteristica di riepilogo
Contiene i seguenti campi in un payload binario compatto:
| Campo | Tipo | Descrizione |
|---|---|---|
| Nome server | Stringa (fino a 32 caratteri) | Il nome configurabile mostrato nella scheda di stato. |
| Modello dispositivo | Stringa (fino a 32 caratteri) | Nome commerciale del dispositivo (es. "iPhone 16 Pro Max"). |
| Nome dispositivo | Stringa (fino a 32 caratteri) | Nome del dispositivo assegnato dall'utente nelle Impostazioni iOS. |
| Utilizzo CPU | Float (32 bit) | Utilizzo complessivo della CPU in percentuale (0–100). |
| Numero core | UInt16 | Numero di core CPU. |
| Timestamp | UInt64 | Millisecondi dall'epoca Unix. |
Caratteristica per-core
Contiene i dati di utilizzo CPU per singolo core:
| Campo | Tipo | Descrizione |
|---|---|---|
| Numero core | UInt8 | Numero di core (fino a 32). |
| Utilizzo core | Float[] | Un float 32 bit per core, che rappresenta la percentuale di utilizzo di ciascun core. |
| Timestamp | UInt64 | Millisecondi dall'epoca Unix. |
Come usare con Metrics Client
- Sul dispositivo che vuoi monitorare, apri Strumenti > Metrics Server e tocca Avvia server.
- Su un altro dispositivo, apri Strumenti > Metrics Client.
- Nella scheda Scoperta, trova il server nell'elenco e tocca Connetti.
- Il client passa automaticamente alla scheda Metriche per mostrare i dati in tempo reale.
Dettagli tecnici
- Il server agisce come BLE Peripheral utilizzando
CBPeripheralManager. Pubblicizza un servizio GATT personalizzato con due caratteristiche notify (riepilogo e per-core). - I dati vengono trasmessi una volta al secondo quando almeno un client è sottoscritto. Il timer viene messo in pausa quando nessun client è connesso.
- Tutti i valori numerici multi-byte nel payload sono in little-endian, come prodotto nativamente da Swift sulle piattaforme Apple.
- Il server utilizza il ripristino stato CoreBluetooth, permettendo di recuperare lo stato di pubblicizzazione se l'app viene riavviata dal sistema.
- La pressione sul canale BLE viene gestita in modo efficiente — se la coda di trasmissione è piena, gli aggiornamenti vengono accodati e inviati quando il sistema segnala la disponibilità tramite
peripheralManagerIsReady(toUpdateSubscribers:). - Le metriche CPU sono campionate dallo stesso
ToolCPUViewModelutilizzato dallo strumento Monitor CPU, garantendo letture coerenti.
Note e limitazioni
- Questo strumento utilizza Bluetooth LE, non la rete Wi-Fi. I dispositivi devono essere nel raggio BLE (tipicamente 10–30 metri in ambienti interni).
- Disponibilità BLE, comportamento in background e stabilità della connessione variano in base al dispositivo e alla versione del sistema operativo.
- Su visionOS, Metrics Server non è disponibile perché il ruolo BLE peripheral non è supportato.
- Il nome server è limitato a 32 caratteri a causa dei vincoli di dimensione del payload BLE.
- Attualmente vengono trasmesse solo metriche relative alla CPU. Altre metriche del dispositivo (memoria, termiche, ecc.) non sono incluse nel flusso BLE.