Camada Zero · 34 · Latência p50/p99 (por que a média mente)
A média é a métrica mais enganosa de latência que existe. Uma cauda de requests lentas puxa ela pra cima, e uma média baixa esconde um p99 horrível. Roda aqui embaixo, olha a distribuição, e veja o p99 contar a verdade que a média some debaixo do tapete.
Mexe no fan-out: simula uma página que faz N chamadas de backend e espera por todas. A latência da página é a da chamada mais lenta.
médiap50p95p99p99.9
A média trata todas as requests como iguais. Mas a cauda lenta tem origem real, e você já a conhece: pausa de GC (aula 13), cache miss (12), contenção de lock (08), context switch (15), retry de rede (18), page fault (14). O p99 é onde todas as "constantes" do Big-O (aula 01) aparecem juntas. É por isso que SLO e alerta moram no p99, não na média.
Percentil em Go
funcpercentile(lat []float64, p float64) float64 {
sort.Float64s(lat) // O(n log n), aula 01
idx := int(float64(len(lat)-1) * p)
return lat[idx]
}
p50 := percentile(lat, 0.50)
p99 := percentile(lat, 0.99)
// nunca reporte só a média de latência
Tail amplification
// página com F chamadas independentes:// P(todas rápidas) = 0.99^F// F=100 -> 0.99^100 ≈ 37%// logo ~63% das páginas pegam// pelo menos 1 chamada no p99
🧠 Desafio — Latência & Percentis
Roda a distribuição e mexe no fan-out antes de responder. As duas últimas são de reflexão: escreve a sua e só então revela o modelo.