O Que É uma Fila de Runners? Por Que os Jobs Esperam Antes de Rodar
Uma fila de runners é a linha de jobs esperando por um runner livre - cada segundo que um job passa na fila é tempo antes de seu primeiro step sequer começar.
Quando você tem mais jobs do que runners disponíveis, os jobs extras entram na fila. O tempo de fila é puro desperdício: nada está buildando, nada está testando, seu time está apenas esperando. Entender por que as filas se formam é o primeiro passo para removê-las.
Por que as filas se formam
- Limites de concorrência: seu plano ou frota limita quantos runners rodam de uma vez.
- Escala lenta: uma rajada chega mais rápido do que o autoscaling consegue adicionar runners.
- Sem capacidade quente: todo job paga um cold start, então a vazão fica atrás da demanda.
- Incompatibilidade de label: jobs pedem um tipo de runner que não tem capacidade disponível.
Como ler o tempo de fila
Tempo de fila é o intervalo entre um job ser criado e efetivamente começar (started_at menos created_at). Um intervalo consistentemente alto significa um problema de capacidade ou escala, não um problema com o seu build em si.
O custo do enfileiramento
Filas atrasam todo o seu time: loops de feedback mais longos, merges bloqueados e pressão para desativar checks. Elas costumam ser invisíveis nas contas de CI (você não paga pelo tempo enfileirado), mas muito visíveis na frustração dos desenvolvedores.
Como eliminá-la
Adicione capacidade (autoscaling), remova cold starts (warm pools) e dimensione a concorrência corretamente. A combinação de warm pools com autoscaling rápido é o que mantém a fila vazia mesmo durante rajadas.
Runners sem fila
A Latchkey serve jobs a partir de warm pools e faz autoscaling, então os jobs tipicamente começam em cerca de um segundo sem fila - mesmo quando vários chegam de uma vez.
Principais conclusões
- Uma fila de runners são jobs esperando por um runner disponível.
- É causada por limites de concorrência, escala lenta ou falta de capacidade quente.
- Tempo de fila é started_at menos created_at - tempo de feedback puramente desperdiçado.
- Warm pools mais autoscaling mantêm a fila vazia.