67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
# Agenda - [PERF] Runtime Telemetry Hot Path
|
|
|
|
## Problema
|
|
|
|
O runtime cobra telemetria de asset bank no caminho quente de todo host tick.
|
|
|
|
Hoje, `tick()` consulta `bank_info()` para `gfx` e `audio` mesmo quando nenhum logical frame foi fechado. O custo de observabilidade acaba sendo pago continuamente pela execucao normal.
|
|
|
|
## Dor
|
|
|
|
- CPU e locks sao gastos em todos os ticks, nao apenas quando a metrica muda.
|
|
- hardware barato sofre mais com trabalho pequeno e repetitivo do que com picos raros.
|
|
- overlay, stats e certifier acabam puxando custo estrutural para o core do runtime.
|
|
|
|
## Hotspots Atuais
|
|
|
|
- [tick.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/tick.rs#L167)
|
|
- [asset.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-drivers/src/asset.rs#L618)
|
|
|
|
## Alvo da Discussao
|
|
|
|
Remover varredura e agregacao lock-heavy do hot path do tick sem perder observabilidade util.
|
|
|
|
## O Que Precisa Ser Definido
|
|
|
|
1. Modelo de metrica.
|
|
Decidir o que passa a ser contador incremental e o que continua sendo snapshot sob demanda.
|
|
|
|
2. Frequencia de coleta.
|
|
Decidir se atualizacao acontece:
|
|
- no fechamento do logical frame;
|
|
- apenas com overlay/debug ativo;
|
|
- por amostragem periodica;
|
|
- por evento de mutacao (`load`, `commit`, `cancel`).
|
|
|
|
3. Responsabilidade da agregacao.
|
|
Delimitar se a verdade dos bytes/slots fica:
|
|
- no `AssetManager`;
|
|
- no runtime;
|
|
- em uma camada propria de telemetry cache.
|
|
|
|
4. Garantia de consistencia.
|
|
Decidir qual grau de defasagem e aceitavel para handheld barato:
|
|
- exato em tempo real;
|
|
- eventual por frame;
|
|
- eventual por tick de debug.
|
|
|
|
## Open Questions de Arquitetura
|
|
|
|
1. O certifier realmente precisa de snapshot de bank a cada tick?
|
|
2. O overlay pode ler uma versao resumida da telemetria em vez de recalcular tudo?
|
|
3. Vale manter caminho "preciso" so para testes/debug e caminho "barato" para runtime normal?
|
|
|
|
## Dependencias
|
|
|
|
- `../specs/10-debug-inspection-and-profiling.md`
|
|
- `../specs/16a-syscall-policies.md`
|
|
|
|
## Criterio de Saida Desta Agenda
|
|
|
|
Pode virar PR quando houver decisao escrita sobre:
|
|
|
|
- metrica incremental vs snapshot;
|
|
- ponto canonico de atualizacao da telemetria;
|
|
- custo maximo aceitavel no hot path do tick;
|
|
- comportamento de overlay/certifier sobre dados defasados.
|