-
Encontre e corrija problemas de desempenho nos seus jogos em Metal
Encontre problemas de desempenho difíceis de detectar nos jogos com as poderosas ferramentas do Metal. Descubra como coletar dados de desempenho detalhados usando o recurso Game Performance Overview na ferramenta Instruments, executar rastreamentos em segundo plano com metalperftrace no macOS e a Central de Controle no iOS, e usar a nova API StateReporting para correlacionar métricas diretamente ao estado de tempo de execução do seu jogo. Transforme horas de telemetria em insights claros e práticos.
Capítulos
- 0:00 - Introdução
- 1:51 - Métricas de desempenho do Metal
- 3:32 - Coleta de rastreamentos
- 6:38 - Analisar rastreamentos de desempenho
- 10:08 - Contextualizar com StateReporting
- 17:48 - Coleta de dados de campo com MetricKit
- 19:41 - Próximas etapas
Recursos
- Understanding the Metal Performance HUD metrics
- Monitoring your Metal app’s graphics performance
- Getting started with StateReporting
- Metal debugger
Vídeos relacionados
Tech Talks
-
Buscar neste vídeo...
-
-
5:00 - Collect a trace with metalperftrace
# Collect the last 5 hours metalperftrace collect /tmp --last 5h # Output # Metal performance traces collected to: /tmp # /tmp/MetalPerfTrace_20260401_094100_to_144100.atrc # Or collect an explicit time range metalperftrace collect /tmp \ --start 2026-04-01T09:41:00 \ --end 2026-04-01T12:41:00 -
7:02 - Print a trace overview
metalperftrace overview /Data/MyGameTrace.atrc # [Modern Renderer pid:13833] # Mem: 2146.1 MiB (2343.9 Peak, 1199.4 Metal) # Total CPU Time: 2417.601s (33.17% Sys, 66.83% User) # Instructions: 9944836683668 (5.75% P, 94.25% E) # Cycles: 5176430469224 (4.45% P, 95.55% E) # Disk Reads / Writes: 317.37 / 0.04 MiB (Logical Write 0.04) # Layer 0x729293000 (3456x2104) Interval 300.065s Active 300.065s # 59.7 FPS 17735 Frames 188 Skipped # Frame Time avg: 16.74ms min: 8.33 max: 125.00 stddev: 3.70 # CPU Begin-to-Present avg: 3.99ms min: 1.40 max: 94.37 stddev: 1.80 # On-GPU Time avg: 13.39ms min: 5.24 max: 37.57 stddev: 1.43 # Next Drawable Wait avg: 0.26ms min: 0.00 max: 91.08 stddev: 1.75 # Shader Compilation Time: 0.000s (Total: 0, Cached: 18) -
7:58 - Filter by process and emit JSON
// Report state transitions #import <StateReporting/StateReporting.h> NSString *domain = @"com.mygame.level"; SRStateReporter *reporter = [SRStateReporter reporterForDomain:domain]; [reporter reportTransitionToStateLabel:@"Level 1" stableMetadata:nil volatileMetadata:nil]; [reporter reportTransitionToStateLabel:@"Level 1" stableMetadata:@{ @"id": @1001 } volatileMetadata:nil]; [reporter reportVolatileMetadataUpdate:@{ @"health": @100 }]; -
13:55 - Include full state transitions in overview
metalperftrace overview /Data/MyGameTrace.atrc --include-state-transitions # [States] # com.mygame.graphics # High (30.59%, 14.996s) raytracing: 1 shadow: ultra # Medium (69.38%, 34.012s) raytracing: 0 shadow: medium # com.mygame.level # Level 1 (20.47%, 10.033s) biome: forest id: 1001 # Level 2 (79.53%, 38.991s) biome: volcano id: 1002 -
14:15 - Aggregate metrics by state
# Aggregate across all domains / transitions metalperftrace overview /Data/MyGameTrace.atrc --aggregate # Aggregate one domain metalperftrace overview /Data/MyGameTrace.atrc --aggregate \ --domain com.mygame.graphics # Aggregate a specific state label within a domain metalperftrace overview /Data/MyGameTrace.atrc --aggregate \ --domain com.mygame.graphics \ --state-label "High"
-