2.4 KiB
2.4 KiB
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
-
Prioridade dos casos. Fechar quais caminhos sao realmente hot:
- opcodes de string;
- acesso a globals;
- faults;
- logs.
-
Estrategia de ownership. Decidir onde vale introduzir:
- borrow temporario;
- small-string strategy;
- copy-on-write;
- intern/cache de strings.
-
Meta de alocacao. Definir se o projeto quer:
- zero alloc no frame loop feliz;
- alloc rara e explicita;
- apenas reducao oportunista.
-
Instrumentacao. Decidir como medir alocacao sem transformar a VM em microbenchmark artificial.
Open Questions de Arquitetura
- Strings sao citizen de primeira classe no fantasy console ou recurso conveniente mas caro?
- Vale endurecer a linguagem/ABI para reduzir alocacao implicitamente?
- 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.