prometeu-runtime/discussion/workflow/agendas/AGD-0013-perf-vm-allocation-and-copy-pressure.md

2.6 KiB

id ticket title status created resolved decision tags
AGD-0013 perf-vm-allocation-and-copy-pressure Agenda - [PERF] VM Allocation and Copy Pressure open 2026-03-27

Agenda - [PERF] VM Allocation and Copy Pressure

Problema

O core da VM ainda aloca e clona demais em alguns caminhos relevantes, especialmente quando strings entram no fluxo.

Hoje ADD com string usa format!/to_string(), GET_GLOBAL clona valores e varios caminhos de erro montam strings dinamicas.

Dor

  • churn de heap reduz o teto de throughput da VM.
  • carts que abusam de string e estado global pagam custo cedo demais.
  • hardware barato sente alocacao repetitiva de forma desproporcional.

Hotspots Atuais

Alvo da Discussao

Definir o nivel de disciplina de alocacao/copia exigido do core da VM no baseline do console.

O Que Precisa Ser Definido

  1. Prioridade dos casos. Fechar quais caminhos sao realmente hot:

    • opcodes de string;
    • acesso a globals;
    • faults;
    • logs.
  2. Estrategia de ownership. Decidir onde vale introduzir:

    • borrow temporario;
    • small-string strategy;
    • copy-on-write;
    • intern/cache de strings.
  3. Meta de alocacao. Definir se o projeto quer:

    • zero alloc no frame loop feliz;
    • alloc rara e explicita;
    • apenas reducao oportunista.
  4. Instrumentacao. Decidir como medir alocacao sem transformar a VM em microbenchmark artificial.

Open Questions de Arquitetura

  1. Strings sao citizen de primeira classe no fantasy console ou recurso conveniente mas caro?
  2. Vale endurecer a linguagem/ABI para reduzir alocacao implicitamente?
  3. Caminhos de fault precisam ser maximizados para desempenho ou apenas os caminhos felizes?

Dependencias

  • ../specs/02a-vm-values-and-calling-convention.md
  • ../specs/03-memory-stack-heap-and-allocation.md
  • ../specs/10-debug-inspection-and-profiling.md

Criterio de Saida Desta Agenda

Pode virar PR quando houver decisao escrita sobre:

  • caminho quente prioritario para desengordurar;
  • meta minima de alocacao/copia da VM;
  • estrategia de ownership para strings/values;
  • instrumentacao canonica para medir regressao.