Neste documento, explicamos o processo de execução e as opções de criação de jobs. Jobs em lote permitem executar cargas de trabalho de processamento Google Cloud. Aprender sobre os componentes de um job e as pré-requisitos para usar o Batch, consulte Primeiros passos com o Batch.
Como funcionam a criação e a execução de jobs
Para usar o Batch, crie um job que especifique a carga de trabalho e os requisitos dela, e o processamento em lote o executa automaticamente.
Os detalhes de como funcionam a criação e a execução de jobs são descritos nas seguintes seções:
- Ciclo de vida do job: entenda os estados que um job avança da criação à exclusão.
- Enfileiramento e agendamento de jobs: entenda fatores que afetam o tempo que leva para um job começar a ser executado.
- Execução de job: entenda como as tarefas de um job são executadas nos durante a execução.
Ciclo de vida do job
Esta seção descreve o ciclo de vida de um job e as tarefas dele desde a criação até a exclusão.
Para cada carga de trabalho que você quer executar no Batch, você precisa seguinte processo básico:
- Criar um job: você define a carga de trabalho que quer executar especificando um os elementos executáveis, as tarefas e outros requisitos do job. Os detalhes de a criação de jobs são apresentadas Seção Opções de criação de jobs deste documento.
- Monitorar e resolver problemas do job: quando você terminar de criar uma tarefa, o job é colocado em fila, programado e executado automaticamente nos do Google Cloud. É possível visualizar os detalhes de um job criado ou de qualquer tarefa dele para ver o estado atual. É possível cancelar um job, se necessário (Visualizar) para interrompê-lo ou impedir que ele não seja executado. Depois que um job estiver em execução ou concluído, também é possível monitorar e analisar o job usando registros. Se um job falhar, é possível resolver o problema Usar mensagens de erro, eventos de status ou registros para diagnosticar o problema antes de recriar o job.
- Excluir ou exportar o job: os registros de um job são automaticamente retidos e excluídos de acordo com a política de retenção do Cloud Logging. As outras informações de um job permanecem disponíveis no Batch. até que você ou o Google Cloud os exclua. O Google Cloud exclui automaticamente um job 60 dias depois de ele terminar. Antes disso, você pode excluir o job por conta própria ou, se precisar reter as informações, é possível exportar as informações do job antes que ele seja excluído.
Depois de criar um job, ele passa pelos seguintes estados:
- Na fila (
QUEUED
): a solicitação de job foi aceita e está em espera na fila. O job permanece na fila até que os recursos necessários estão disponíveis e os trabalhos anteriores foram avaliados. - Programado (
SCHEDULED
): o job foi selecionado na fila comece a funcionar e os recursos sejam alocados. Em execução (
RUNNING
): os recursos do job foram criados com sucesso e as tarefas podem começar a ser executadas.Quando um job está em execução, cada uma das tarefas avança os seguintes estados:
- Pendente (
PENDING
): a tarefa está aguardando uma VM ser executada. - Atribuída (
ASSIGNED
): a tarefa recebeu uma VM para ser executada. - Em execução (
RUNNING
): a tarefa está sendo executada em uma VM. Uma tarefa é concluída em um dos seguintes estados:
Com êxito (
SUCCEEDED
): a tarefa foi bem-sucedida porque cada um dos seus executáveis atendem a uma das seguintes condições:- O executável succeeded (retornau um código de saída de zero).
- O executável falha (retornou um código de saída diferente de zero), mas era um executável não crítico (você ativou).
do executável
campo
ignoreExitStatus
). - O executável não terminou, mas sim um executável em segundo plano (você
ativo do executável
campo
background
).
Com falha (
FAILED
): a tarefa falhou e parou de ser executada porque pelo menos um executável não atendeu às condições anteriores.
- Pendente (
Um job é concluído em um dos seguintes estados:
- Concluído (
SUCCEEDED
): o job foi bem-sucedido porque todas as tarefas. bem-sucedido. - Com falha (
FAILED
): o job falhou e parou de ser executado porque às pelo menos uma das tarefas falhou. - Cancelado (
CANCELLED
): um usuário cancelou o job (Visualizar) antes da conclusão ou falhou.
- Concluído (
Para mais informações, consulte estados de job e estados de tarefas na documentação de referência.
Como enfileirar e programar jobs
Geralmente, os jobs têm mais chances de serem executados e concluídos antes menores e exigem apenas alguns recursos comuns. Para os jobs de exemplo na documentação do Batch, que geralmente são e usar o mínimo de recursos, é possível que eles terminem a execução em apenas um alguns minutos.
Especificamente, o tempo que um job leva para concluir o enfileiramento e a programação varia para trabalhos diferentes e em horários diferentes com base nos seguintes fatores:
Disponibilidade de recursos do job: a disponibilidade dos recursos necessários do job dentro do em vários locais.
Em primeiro lugar, um job não poderá ser executado se você especificar quaisquer recursos que não são oferecidos nesse local. Quando isso acontece, o trabalho falha Um erro de disponibilidade de zona.
Em segundo lugar, um job tem mais chances de atrasar ou falhar os recursos necessários têm baixa capacidade em relação à demanda atual, devido à erros de disponibilidade de recursos. Como resultado, o job pode ser executado antes quando você precisa de menos recursos mais comuns e não restringem a execução do job em qualquer zona de uma região.
Para mais informações sobre os recursos de um job, consulte Execução do job na este documento. Para mais informações sobre os locais especificar para um job do Batch e seus recursos, consulte Locais.
Prioridade do job: a prioridade de um job em relação às prioridades do outros jobs em seu projeto.
Opcionalmente, você pode especificar a prioridade de um job incluindo o Flag
--priority
para a CLI gcloud ou o campopriority
JSON. Você pode definir a prioridade de um job como um número entre0
(prioridade mais baixa) e99
(prioridade mais alta). Definir uma prioridade pode ajudar um job a ser executado antes dos jobs de menor prioridade no projeto.Se você não configurar a prioridade de um job, o padrão será usar o prioridade mais baixa:
0
. Se dois jobs na fila tiverem a mesma prioridade, o job que foi criado primeiro tem a prioridade mais alta.Cotas e limites:os limites que seu projeto tem. para recursos e solicitações do Google Cloud.
Um job não pode ser executado se exceder um limite ou a cota do projeto para qualquer um os recursos ou solicitações necessários. Quando isso acontece, O lote pode atrasar um job e tentar novamente mais tarde. falhar no job e exibir um erro relacionado.
Você pode ajudar a evitar atrasos e erros no seu job criando jobs que cumprir todos os limites relevantes e garantir que o projeto tenha a cota relevante. Para mais informações, consulte Cotas e limites em lote.
Execução do trabalho
O tempo que um job leva para ser executado pode variar de acordo com a programação da tarefa e os recursos do job.
Agendamento de tarefas
Quando um job é executado, as tarefas dele são agendadas de acordo com
campo de política de programação (schedulingPolicy
),
que permite especificar uma das seguintes opções:
- Assim que possível (
AS_SOON_AS_POSSIBLE
) (padrão): as tarefas são executadas assim que os recursos ficam disponíveis e podem ser executadas em paralelo. A quantidade de tarefas executadas de cada vez depende das tarefas paralelas por VM permitido pelos recursos do job e outras opções de configuração, conforme explicado em Recursos do job neste documento. - Em ordem (
IN_ORDER
): as tarefas são executadas uma de cada vez, em ordem crescente ordem do índice.
Recursos do job
Cada job em lote é executado em um grupo gerenciado de instâncias (MIG) regional. que é um grupo de um ou mais itens instâncias de máquina virtual (VM) do Compute Engine, cada uma localizada em um dos nas zonas incluídas. Cada VM tem um hardware dedicado Núcleos de CPU, especificamente CPUs virtuais (vCPUs)) e memória, o que afeta o desempenho job e um disco de inicialização, que armazena um código imagem de sistema operacional (SO) e instruções para executar o job.
Durante o tempo de execução de um job, o Batch cria e exclui os recursos que atendem às especificações. Ao criar um job, você configura os recursos dele especificando o seguinte:
É preciso especificar os recursos de computação: vCPUs, memória e (se necessário) armazenamento extra em disco de inicialização, necessário para executar cada tarefa. a menos que os valores padrão sejam suficientes. Para mais informações, consulte a recursos de computação por campo de tarefa (
computeResource
) e subcampos.Também é possível especificar os tipos de VMs a serem usadas e outros recursos para cada VM, como GPUs e volumes de armazenamento. Se você não especificar essas opções, o Batch seleciona tipos compatíveis de VMs e não adiciona outros recursos. Para mais informações, consulte a Campo "Recursos da instância de VM" (
instances[]
) e subcampos.
o número de VMs e de tarefas que podem ser executadas simultaneamente
em cada VM variam para jobs diferentes com base na programação de tarefas e nas suas
aos requisitos de hardware especificados. Se você especificar que as tarefas de um job sejam executadas
IN_ORDER
, o job tem uma VM e executa apenas uma tarefa por vez. Caso contrário,
Se as tarefas de um job executarem AS_SOON_AS_POSSIBLE
, será possível estimar o
número de VMs e o número de tarefas simultâneas usando a seguinte fórmula:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Essa fórmula tem os seguintes valores:
- \({vmsPerJob}\): o número máximo de VMs para um job. A quantidade real de VMs criada para uma vaga pode ser menor do que isso. Por exemplo, se O Batch espera que seja mais rápido executar um job com menos recursos do que esperar por mais recursos. Esse valor também é limitado pelo de VMs simultâneas por limites de job.
- \({taskCount}\): o número total de tarefas do job, que você define
usando o campo de contagem de tarefas (
taskCount
). \({parallelTasksPerVM}\): o número máximo de tarefas que podem ser executadas em uma VM. ao mesmo tempo.
Esse valor é determinado pelas condições a seguir critérios:
O valor mínimo é 1 tarefa.
O valor máximo é a menor de 20 tarefas e, se definido, o valor do campo máximo de tarefas paralelas por job (
parallelism
).Se o máximo de tarefas paralelas por campo de VM (
taskCountPerNode
) for definido, esse valor será usado.Caso contrário, se
taskCountPerNode
for indefinido, o Batch decide um valor dividindo o número total de recursos de computação (especificamente vCPUs) por VM no valor necessários para cada tarefa:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
Essa fórmula tem os seguintes valores:
\({vcpusPerVm}\): o número total de vCPUs por VM, que é é determinado pelo tipo de máquina das VMs do job.
\({vcpusPerTask}\): o número de vCPUs por tarefa, que é determinado pela conversão das unidades campo de vCPUs por tarefa (
cpuMilli
).
Opções de criação de jobs
Criar e executar um job básico explica os básicos, incluindo como definir um executável usando um script ou imagem de contêiner e como configurar variáveis de ambiente predefinidas e personalizadas.
Depois de entender os fundamentos para a criação de empregos, considere criar um job que use uma ou mais das opções de configuração extras a seguir:
Controlar o acesso de um job:
Controlar o acesso a um job usando uma conta de serviço personalizada explica como especificar uma conta de serviço do job, o que influencia o recursos e aplicativos que as VMs de um job podem acessar. Se você não especificarem uma conta de serviço personalizada, os jobs usarão por padrão o Conta de serviço padrão do Compute Engine
Visão geral da rede fornece uma visão geral de quando e como você pode personalizar configuração de rede para um job, incluindo especificar a na rede do job, bloqueando conexões externas proteger dados e recursos usando o VPC Service Controls.
Proteger dados sensíveis usando o Secret Manager explica como definir dados sensíveis com segurança, como informações variáveis de ambiente e credenciais de login Secrets do Secret Manager para especificar informações criptografadas ao criar um job.
Configure outras opções para um job:
Configurar a comunicação de tarefas usando uma biblioteca MPI explica como configurar um job com tarefas interdependentes que se comunicam entre si em diferentes VMs usando uma interface de transmissão de mensagens (MPI, na sigla em inglês). Um caso de uso comum da MPI é com acoplamento rígido, de computação de alto desempenho (HPC).
Personalize os recursos em que um job é executado:
Definir recursos de job usando um modelo de instância de VM explica como especificar um modelo de VM do Compute Engine para definir aos recursos do job ao criá-lo.
O artigo Usar GPUs em um job explica como definir um job que usa uma ou mais unidades de processamento gráfico (GPUs). Uso comum os casos de jobs que usam GPUs incluem o processamento intensivo de dados de machine learning (ML).
Usar volumes de armazenamento para um job explica como definir um job que pode acessar um ou mais volumes de armazenamento externo. As opções de armazenamento incluem discos permanentes novos ou atuais, novos SSDs locais, buckets atuais do Cloud Storage e um sistema de arquivos de rede (NFS) como um compartilhamento de arquivos do Filestore.
Visão geral do ambiente do SO da VM fornece uma visão geral de quando e como você pode personalizar ambiente de sistema operacional (SO) da VM para um job, incluindo o imagem do SO da VM e discos de inicialização.
Otimizar vários aspectos de um job:
Melhore o monitoramento e a análise:
O artigo Gravar registros de tarefas explica como configurar os executáveis de um job para gravar registros de tarefas. A gravação de registros de tarefas permite exibir informações personalizadas no Cloud Logging, o que facilita a realização de jobs análise e solução de problemas.
Configurar eventos de status personalizados explica como configurar eventos de status personalizados para a executáveis. Eventos de status personalizados permitem descrever eventos que acontecem para executáveis e aparecem quando você visualizar o histórico de eventos de status de uma tarefa, o que pode ajudar a facilitar a análise e a solução de problemas dos jobs.
Ativar notificações de status explica como configurar um job para enviar ao Pub/Sub notificações sobre o status, que você pode armazenar e fazer consultas em uma tabela do BigQuery. Antes de ler este documento, configure seu projeto para monitorar o status do job usando as notificações do Pub/Sub e o BigQuery primeiro.
Ativar as métricas do Agente de operações explica como configurar um job para instalar automaticamente o Agente de operações. O Agente de operações coleta métricas adicionais sobre a desempenho e utilização dos recursos de um job. Para mais informações sobre como visualizar e usar métricas de recursos, ver Monitorar e otimizar recursos do job visualizando métricas.
Automatizar novas tentativas de tarefas explica como repetir automaticamente as tarefas de um job depois de todas ou as falhas especificadas. Novas tentativas automatizadas podem reduzir o atrito na solução de problemas e o ambiente de execução geral necessária para trabalhos com erros temporários. Por exemplo, use novas tentativas automáticas para um job executado em VMs spot, que oferecem descontos significativos, nem sempre estarão disponíveis e podem ser interrompidas a qualquer momento.
Colocar VMs para reduzir a latência explica como reduzir a latência de rede entre as VMs de um job ao que as VMs estejam fisicamente próximas umas das outras. Esse benefício de desempenho pode ser especialmente útil para trabalhos comunicações de rede frequentes entre VMs, como tarefas se comunicam usando bibliotecas MPI.
Garantir a disponibilidade de recursos usando reservas de VM explica como configurar um job que podem ser executados em VMs reservadas. Como usar recursos de reserva As VMs podem ajudar a minimizar o tempo de agendamento de um job, evitar erros de disponibilidade de recursos e para otimizar os custos.
Usar streaming de imagens explica como melhorar o tempo de inicialização do job com o streaming do contêiner imagens do Artifact Registry.
Use serviços adicionais para criar e executar jobs:
Orquestrar jobs usando o Workflows explica como usar os Workflows para executar o as tarefas em uma ordem que você define usando o Sintaxe de fluxos de trabalho.
Orquestrar jobs usando o Nextflow explica como executar um job em lote usando uma pipeline do Nextflow, que que podem ser usados para orquestrar fluxos de trabalho de bioinformática.
Orquestrar jobs usando o dsub explica como executar um job em lote usando uma
dsub
pipeline, que pode ser usado para orquestrar fluxos de trabalho de processamento em lote nos serviços do Google Cloud.Criar e executar jobs em lote usando o Terraform e o Cloud Scheduler explica como incorporar jobs do Batch ao Terraform. Terraform você provisiona e gerencia a infraestrutura especificando em arquivos de configuração, que podem ser tratados como código e armazenados em sistemas de controle de versões, como o GitHub.
A seguir
Aprenda os fundamentos da criação de vagas: