3.5 KiB
3.5 KiB
| id | title | status | created | origin_decisions | tags | |
|---|---|---|---|---|---|---|
| PLN-0005 | Plano - [PERF] Implementação de Telemetria Push-based | open | 2026-03-27 |
|
Plano - [PERF] Implementação de Telemetria Push-based
Briefing
Este plano detalha as alterações técnicas para migrar o sistema de telemetria de um modelo de varredura O(n) com locks para um modelo push-based com contadores atômicos O(1). O objetivo é reduzir o overhead do hot path do runtime e adicionar visibilidade sobre a memória RAM (Heap) e volume de logs.
Decisions de Origem
Alvo
prometeu-drivers(AssetManager)prometeu-vm(Heap)prometeu-hal(TelemetryFrame)prometeu-system(LogService, VirtualMachineRuntime)prometeu-host-desktop-winit(HostRunner)
Escopo
- Contadores Atômicos: Implementação de
AtomicUsizenos subsistemas de assets, heap e logs. - Telemetry Frame: Expansão da struct para incluir
heap_used,heap_maxelogs_count. - Lógica de Tick: Refatoração do
tick.rspara usarinspection_activee snapshots de fim de frame. - Sinalização do Host: Integração do campo
inspection_activecom o acionamento do overlay F1.
Fora de Escopo
- Migração da renderização do overlay para o host nativo (será tratado em plano derivado da AGD-0012).
- Telemetria de FileSystem IO ou Corrotinas.
Plano de Execucao
Fase 1: Drivers e VM (Modelo Push)
prometeu-drivers/src/asset.rs:- Adicionar contadores em
BankPolicy. - Atualizar contadores em
load_internal,commitecancel. - Refatorar
bank_info()para retornar os valores atômicos sem varredura.
- Adicionar contadores em
prometeu-vm/src/heap.rs:- Adicionar contador
used_bytesna structHeap. - Atualizar contador em
alloc()efree().
- Adicionar contador
prometeu-system/src/log.rs:- Adicionar contador
logs_count(resetável por frame) noLogService.
- Adicionar contador
Fase 2: HAL e Runtime (Contrato e Lógica)
prometeu-hal/src/telemetry.rs:- Adicionar
heap_used_bytes,heap_max_byteselogs_countnaTelemetryFrame.
- Adicionar
prometeu-system/src/virtual_machine_runtime.rs:- Adicionar campo
public inspection_active: bool.
- Adicionar campo
prometeu-system/src/virtual_machine_runtime/tick.rs:- Modificar
tick()para coletarbank_infodetalhado apenas seinspection_active == true. - Implementar a captura do snapshot consolidado no fechamento do logical frame.
- Modificar
Fase 3: Host e Integração
prometeu-host-desktop-winit/src/runner.rs:- Sincronizar o estado do campo
overlay_enabledcomfirmware.os.inspection_active.
- Sincronizar o estado do campo
Criterios de Aceite
- O sistema compila sem avisos de tipos inexistentes.
- A telemetria de assets (
gfx/audio) continua funcional no overlay F1. - Novos campos de Heap e Logs aparecem no log de performance do console.
- O custo de telemetria no
tickdeve cair drasticamente quando o overlay estiver desligado (verificável via profiling).
Tests / Validacao
- Teste Unitário: Criar teste em
asset.rspara garantir que contadores batem com a realidade após sequências de carga e cancelamento. - Teste de Regressão: Garantir que o
certifiercontinua detectando violações de bank no fim do frame.
Riscos
- Consistência Eventual: Como os contadores são atômicos e não travam o sistema, pode haver uma defasagem momentânea durante um
commitpesado; isto é aceitável conforme DEC-0005.