O Que É Pipeline Parallelism? Executando Jobs ao Mesmo Tempo
Pipeline parallelism executa jobs independentes simultaneamente em vez de sequencialmente, encolhendo o tempo de relógio que um pipeline leva.
Executar jobs um de cada vez é o jeito lento. Se dois jobs não dependem um do outro, não há razão para fazer um esperar pelo outro. Pipeline parallelism os executa de uma vez em agentes separados. É a diferença entre um pipeline que soma o tempo de cada job e um limitado apenas pela sua cadeia mais longa.
De onde vem o paralelismo
- Jobs independentes sem dependência entre si.
- Uma matrix expandindo um job em muitas variantes.
- Sharding de um único job em fatias paralelas.
O que limita o paralelismo
Duas coisas o limitam: dependências (um job que deve esperar não pode executar cedo) e capacidade (agentes insuficientes significam que jobs extras entram na fila). Você obtém o benefício completo apenas quando jobs independentes também têm agentes disponíveis para executar.
Um exemplo rápido
Uma matrix os: [linux, windows, macos] transforma um job de test em três que executam em paralelo. Em vez de três execuções sequenciais se somando, o mais lento dos três limita o tempo.
Paralelismo vs o critical path
O paralelismo não pode superar o critical path: a cadeia de dependências mais longa ainda define o piso. Adicionar agentes acelera o trabalho paralelo, mas não faz nada por uma longa cadeia serial. Ambas as alavancas importam.
Paralelismo e capacidade de runner
Declarar jobs paralelos só ajuda se houver agentes livres para executá-los; caso contrário, eles entram na fila e executam serialmente de qualquer forma. Runners gerenciados (Latchkey) fornecem capacidade paralela sob demanda para que o paralelismo declarado realmente execute em paralelo.
Principais conclusões
- Pipeline parallelism executa jobs independentes ao mesmo tempo.
- Dependências e capacidade de agentes são o que limita o quanto você obtém.
- Ele não pode superar o critical path, e precisa de agentes livres para entregar.