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 andamento ou esperando)
- λ (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 em outro. O produto L é a área do retângulo que formam. O planejamento de capacidade vive dentro deste retângulo.
Por que é importante: qualquer dois dos três quantitativos determinam o terceiro. Medir throughput e latência, você sabe a ocupação. Medir ocupação e throughput, você sabe a latência. A lei é robusta: ela se aplica a solicitações da web, mesas de restaurantes, filas de supermercado e canais de CPU sem modificações.
Três exemplos concretos:
- Um serviço web manipula 200 req/s com latência média de 50 ms (0,05 s). L = 200 × 0,05 = 10 em andamento.
- Um café serve 60 clientes por hora com tempo de permanência médio de 15 minutos (0,25 h). L = 60 × 0,25 = 15 clientes dentro.
- Uma pool de back-end manipula 1.500 req/s com latência média de 200 ms (0,2 s). L = 1.500 × 0,2 = 300 em andamento.
Implicações de dimensionamento: o número de trabalhadores / contas de thread / contas de conexão de uma camada deve ser pelo menos L para manter o ritmo. Alguma coisa menor significa crescimento de fila.
Por que a Latência Explode Passe dos 80% de Utilização
A Curva Mais Importante nas Operações
Uso de plot na eixo x (0% a 100%) & tempo médio de espera na eixo y. A forma é uma das curvas mais importantes na capacidade de planejamento.
O modelo de filas M/M/1: para um sistema com chegadas de Poisson (aleatórias) & tempos de serviço exponenciais (aleatórios), o tempo médio de espera:
W_q = ρ / (μ × (1 - ρ))
onde ρ é a utilização (0 a 1) & μ é a taxa de serviço.
A forma 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 é ~2,3 tempos de serviço.
- Em ρ = 0,8 (80% de utilização), o tempo de espera é ~4 tempos de serviço.
- Em ρ = 0,9 (90% de utilização), o tempo de espera é ~9 tempos de serviço.
- Em ρ = 0,95 (95% de utilização), o tempo de espera é ~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 se curva bruscamente. Abaixo do joelho, a capacidade é confortável; acima, a latência aumenta mais rápido do que a utilização.
Leitura prática: alvo de 70% de utilização para um estado estável; nunca 100%. O 30% de 'espaço aéreo' não é desperdício; é o preço da latência limitada.
Dimensionamento ao longo do Joelho
Dois cenários:
Cenário A: 10 réplicas executando a 60% de CPU. Latência p99 = 100 ms.
Cenário B: mesma frota executando a 90% de CPU devido ao crescimento de tráfego. p99 = 600 ms.
Mesma frota, mesmo código, apenas a utilização foi alterada.
Tamanho e Desencadeante Juntos
Síntese
Agora você pode aplicar a Lei de Little como um retângulo, ler a curva de fila e sua articulação, e conectar ambos aos decisões de capacidade.
Aplique ambos.
Uma camada de backend manipula 2.000 req/s com latência média de 50 ms por capacidade de replica 80 req/s com 70% de CPU. Fator de surto 2x; você deseja sobreviver a 3 falhas simultâneas de replicas.
Notas de Acompanhamento
Notas de Acompanhamento
Esta lição de geometria reformula a lição principal Stateless Horizontal Scaling em geometria quantitativa.
A próxima companhia, geometry_of_ingress_egress_separation, reformula a divisão da fronteira de rede como um grafo bipartido com um vértice de corte que a divisão remove.
Bem feito.