L = λ × W
A Equação Mais Útil no Planejamento de Capacidade
Para qualquer fila estável, independentemente de sua estrutura interna: L = λ × W, onde:
- L = número médio de itens no sistema (em processamento ou aguardando)
- λ (lambda) = taxa média de chegada (itens por unidade de tempo)
- W = tempo médio que cada item passa no sistema
A leitura geométrica: plote λ em um eixo e W no outro. O produto L é a área do retângulo que eles formam. O planejamento de capacidade reside dentro deste retângulo.
Por que isso importa: quaisquer duas das três quantidades determinam a terceira. Meça a taxa de processamento e a latência, e você conhece a ocupação. Meça a ocupação e a taxa de processamento, e você conhece a latência. A lei é robusta: ela se aplica a requisições web, mesas de restaurante, filas de supermercado e pipelines de CPU sem modificação.
Três exemplos concretos:
- Um serviço web processa 200 req/s com latência média de 50 ms (0,05 s). L = 200 × 0,05 = 10 em voo.
- Uma cafeteria atende 60 clientes/hora com tempo médio de permanência de 15 minutos (0,25 h). L = 60 × 0,25 = 15 clientes dentro.
- Um pool de backend processa 1500 req/s com latência média de 200 ms (0,2 s). L = 1500 × 0,2 = 300 em voo.
Implicação para dimensionamento: a contagem de trabalhadores / threads / conexões de uma camada deve ser pelo menos L para manter o ritmo. Qualquer valor menor significa crescimento da fila.
Por que a Latência Explode Acima de 80% de Utilização
A Curva Mais Importante em Operações
Plote a utilização no eixo x (0% a 100%) e o tempo médio de espera no eixo y. O formato é uma das curvas mais consequentes no planejamento de capacidade.
O modelo de fila M/M/1: para um sistema com chegadas de Poisson (aleatórias) e tempos de serviço exponenciais (aleatórios), o tempo médio de espera é:
W_q = ρ / (μ × (1 - ρ))
onde ρ é a utilização (de 0 a 1) e μ é a taxa de serviço.
O formato da curva:
- Em ρ = 0,5 (50% de utilização), o tempo de espera é pequeno (1 tempo de serviço).
- Em ρ = 0,7 (70% de utilização), o tempo de espera é de ~2,3 tempos de serviço.
- Em ρ = 0,8 (80% de utilização), o tempo de espera é de ~4 tempos de serviço.
- Em ρ = 0,9 (90% de utilização), o tempo de espera é de ~9 tempos de serviço.
- Em ρ = 0,95 (95% de utilização), o tempo de espera é de ~19 tempos de serviço.
- Em ρ = 1,0 (100% de utilização), o tempo de espera é infinito.
O joelho: em torno de 80% de utilização, a curva faz uma curva acentuada. Abaixo do joelho, a capacidade é confortável; acima, a latência aumenta mais rápido do que a utilização.
Leitura prática: mire em 70% de utilização para o estado estacionário, nunca 100%. Os 30% de 'folga' não são desperdício; são o preço da latência limitada.
Dimensionamento Através do Joelho
Dois cenários:
Cenário A: 10 réplicas operando com 60% de CPU. Latência p99 = 100 ms.
Cenário B: a mesma frota operando com 90% de CPU devido ao crescimento do tráfego. p99 = 600 ms.
Mesma frota, mesmo código, apenas a utilização mudou.
Dimensionamento e Gatilho Juntos
Síntese
Agora você pode aplicar a Lei de Little como um retângulo, ler a curva de filas e seu joelho, e conectar ambos às decisões de capacidade.
Aplique ambos.
Uma camada de backend processa 2.000 req/s com latência média de 50 ms por réplica, com capacidade de 80 req/s a 70% de CPU. Fator de pico de 2x; você deseja sobreviver a 3 falhas simultâneas de réplicas.
Notas Complementares
Notas Complementares
Esta lição de geometria reformula a lição principal de Escalação Horizontal Stateless como geometria quantitativa.
O próximo companheiro, geometry_of_ingress_egress_separation, reformula a separação da fronteira de rede como um grafo bipartido com um vértice de corte que a separação remove.
Muito bem.