Este documento explica o processo de execução e as opções de criação de tarefas. As tarefas em lote permitem-lhe executar cargas de trabalho de processamento em lote no Google Cloud. Para saber mais sobre os componentes de uma tarefa e os pré-requisitos para usar o Batch, consulte o artigo Comece a usar o Batch.
Como funciona a criação e a execução de tarefas
Para usar o Batch, cria uma tarefa que especifica a sua carga de trabalho e os respetivos requisitos e, em seguida, o Batch executa-a automaticamente.
Os detalhes sobre como a criação e a execução de tarefas funcionam são descritos nas secções seguintes:
- Ciclo de vida da tarefa: compreenda os estados pelos quais uma tarefa passa desde a criação até à eliminação.
- Colocação em fila e agendamento de tarefas: compreenda os fatores que afetam o tempo que uma tarefa demora a começar a ser executada.
- Execução de tarefas: compreenda como as tarefas de uma tarefa são executadas nos respetivos recursos durante a execução.
Ciclo de vida do trabalho
Esta secção descreve o ciclo de vida de um trabalho e das respetivas tarefas desde a criação até à eliminação.
Para cada carga de trabalho que quer executar no Batch, passa pelo seguinte processo básico:
- Criar uma tarefa: define a carga de trabalho que quer executar especificando os elementos executáveis, as tarefas e quaisquer outros requisitos de uma tarefa. Os detalhes para criar uma tarefa são apresentados na secção Opções de criação de tarefas deste documento.
- Monitorize e resolva problemas da tarefa: quando terminar de criar uma tarefa, esta é automaticamente colocada em fila, agendada e executada nos recursos especificados. Pode ver os detalhes de um trabalho criado ou de qualquer uma das respetivas tarefas para ver o estado atual. Se necessário, pode cancelar uma tarefa para a parar ou impedir a sua execução. Depois de uma tarefa estar em execução ou concluída, também pode monitorizar e analisar a tarefa através de registos. Se uma tarefa falhar, pode resolvê-la usando quaisquer mensagens de erro, eventos de estado ou registos para diagnosticar o problema antes de recriar a tarefa.
- Elimine ou exporte a tarefa: as informações de uma tarefa no processamento em lote permanecem disponíveis até que as elimine. Google Cloud Google Cloud elimina automaticamente uma tarefa 60 dias após a sua conclusão. Antes disso, pode eliminar opcionalmente a tarefa ou, se precisar de reter as informações, pode exportar as informações da tarefa em lote antes de a tarefa ser eliminada. As informações sobre um trabalho armazenadas noutros Google Cloud serviços não são afetadas quando um trabalho é eliminado e têm políticas de retenção separadas. Por exemplo, os registos de uma tarefa são automaticamente retidos e eliminados de acordo com a política de retenção do Cloud Logging.
Depois de criar uma tarefa, esta passa pelos seguintes estados:
- Em fila (
QUEUED
): o pedido de tarefa foi admitido e está a aguardar na fila. A tarefa permanece na fila do seu projeto até poder ser agendada, o que acontece quando os recursos necessários estão disponíveis e as tarefas anteriores foram avaliadas. No entanto, para evitar que as tarefas fiquem desatualizadas, se uma tarefa exceder o tempo máximo de espera na fila, o Batch falha automaticamente a tarefa em vez de a agendar. - Agendado (
SCHEDULED
): a tarefa foi selecionada na fila para começar a ser executada e os recursos estão a ser atribuídos. Em execução (
RUNNING
): os recursos para a tarefa foram criados com êxito e as respetivas tarefas podem começar a ser executadas.Quando uma tarefa está em execução, cada uma das respetivas tarefas progride através dos seguintes estados:
- Pendente (
PENDING
): a tarefa está a aguardar a execução numa VM. - Atribuído (
ASSIGNED
): a tarefa foi atribuída a uma VM para ser executada. - Em execução (
RUNNING
): a tarefa está a ser executada numa VM. Uma tarefa termina num dos seguintes estados:
Com êxito (
SUCCEEDED
): a tarefa foi concluída com êxito porque cada um dos respetivos elementos executáveis cumpriu uma das seguintes condições:- O executável foi bem-sucedido (devolveu um código de saída de zero).
- O executável falhou (devolveu um código de saída diferente de zero), mas era um executável não crítico (ativou o campo
ignoreExitStatus
do executável). - O executável não terminou, mas era um executável em segundo plano (ativou o campo
background
do executável).
Com falhas (
FAILED
): a tarefa falhou e deixou de ser executada porque, pelo menos, um runnable não cumpriu as condições anteriores.
Os recursos da tarefa são eliminados antes de a tarefa terminar.
- Pendente (
Uma tarefa termina num dos seguintes estados:
- Com êxito (
SUCCEEDED
): a tarefa foi concluída com êxito porque todas as respetivas tarefas foram concluídas com êxito. - Falhou (
FAILED
): a tarefa falhou e deixou de ser executada porque, pelo menos, uma das respetivas tarefas falhou. - Cancelado (
CANCELLED
): um utilizador cancelou a tarefa antes de esta ser concluída com êxito ou falhar.
- Com êxito (
Para mais informações, consulte os estados das tarefas e os estados das tarefas na documentação de referência.
Colocação em fila e agendamento de tarefas
Geralmente, é mais provável que os trabalhos sejam executados e terminem mais cedo se forem mais pequenos e exigirem apenas alguns recursos comuns. Para os exemplos de tarefas na documentação do Batch, que são normalmente muito pequenos e usam recursos mínimos, pode vê-los a terminar a execução em apenas alguns minutos.
Especificamente, o tempo que uma tarefa demora a terminar a colocação em fila e o agendamento varia para diferentes tarefas e em diferentes momentos com base nos seguintes fatores:
Pré-requisitos de tarefas especificados pelo utilizador: todos os pré-requisitos que exige que sejam cumpridos antes de a tarefa ser agendada.
Por predefinição, uma tarefa não tem pré-requisitos. Opcionalmente, pode especificar que não é possível agendar uma tarefa até que uma ou mais tarefas existentes tenham sido concluídas com êxito ou sem êxito. Para mais informações, consulte o artigo Agende tarefas dependentes (Pré-visualização).
Prioridade da tarefa: a prioridade de uma tarefa relativamente às prioridades de outras tarefas no seu projeto.
Opcionalmente, pode especificar a prioridade de uma tarefa incluindo a flag
--priority
para a CLI gcloud ou o campo JSONpriority
. Pode definir a prioridade de uma tarefa como um número entre0
(prioridade mais baixa) e99
(prioridade mais alta). Definir uma prioridade mais elevada pode ajudar a executar uma tarefa mais cedo do que as tarefas de prioridade mais baixa no seu projeto.Se não configurar a prioridade de uma tarefa, esta usa a prioridade mais baixa predefinida,
0
. Se dois trabalhos em fila tiverem a mesma prioridade, o trabalho criado primeiro tem a prioridade mais elevada.Disponibilidade de recursos da tarefa: a disponibilidade dos recursos necessários da tarefa nas localizações permitidas.
Em primeiro lugar, uma tarefa não pode ser executada se especificar recursos que não são oferecidos nessa localização. Quando isto acontece, a tarefa falha com um erro de disponibilidade da zona.
Em segundo lugar, é mais provável que uma tarefa seja atrasada ou falhe se algum dos respetivos recursos obrigatórios tiver uma capacidade baixa em relação à procura atual devido a erros de disponibilidade de recursos. Como tal, a tarefa pode ser executada mais cedo quando requer menos recursos, recursos mais comuns e não restringe a execução da tarefa em nenhuma zona de uma região.
Para mais informações sobre os recursos de uma tarefa, consulte a secção Execução de tarefas neste documento. Para mais informações sobre as localizações que pode especificar para uma tarefa em lote e os respetivos recursos, consulte a página Localizações.
Quotas e limites: os limites que o seu projeto tem para recursos e pedidos. Google Cloud
Não é possível executar uma tarefa se exceder um limite ou a quota do seu projeto para qualquer um dos recursos ou pedidos necessários. Quando isto acontece, o Batch pode atrasar uma tarefa e tentar novamente mais tarde ou falhar a tarefa e apresentar um erro relacionado.
Pode ajudar a evitar atrasos e erros na sua tarefa criando tarefas que estejam em conformidade com todos os limites relevantes e garantindo que o seu projeto tem quota relevante suficiente. Para mais informações, consulte o artigo Quotas e limites de lotes.
Execução de tarefas
O tempo que uma tarefa demora a ser executada pode variar com base no agendamento de tarefas e nos recursos da tarefa.
Agendamento de tarefas
Quando uma tarefa é executada, as respetivas tarefas são agendadas de acordo com o
campo scheduling policy (schedulingPolicy
),
que lhe permite especificar uma das seguintes opções:
- Assim que possível (
AS_SOON_AS_POSSIBLE
) (predefinição): as tarefas são executadas assim que os recursos estão disponíveis e podem ser executadas em paralelo. A quantidade de tarefas executadas de cada vez depende das tarefas paralelas por MV permitidas pelos recursos da tarefa e outras opções de configuração, conforme explicado em Recursos da tarefa neste documento. - Em ordem (
IN_ORDER
): as tarefas são executadas uma de cada vez por ordem crescente do índice.
Recursos de emprego
Cada tarefa em lote é executada num grupo de instâncias geridas (GIG) regional, que é um grupo de uma ou mais instâncias de máquinas virtuais (VMs) do Compute Engine correspondentes, cada uma localizada numa das zonas incluídas. Cada VM tem hardware dedicado para núcleos de CPU (especificamente CPUs virtuais [vCPUs]) e memória, que afetam o desempenho da sua tarefa, e um disco de arranque, que armazena uma imagem do sistema operativo (SO) e instruções para executar a sua tarefa.
Durante o tempo de execução de uma tarefa, o Batch cria e elimina automaticamente recursos que cumprem as suas especificações. Quando cria um trabalho, configura os respetivos recursos especificando o seguinte:
Recursos de computação por tarefa: a menos que os valores predefinidos sejam suficientes, tem de especificar os recursos de computação (vCPUs, memória e, se necessário, armazenamento adicional no disco de arranque) necessários para a execução de cada tarefa. Para mais informações, consulte os campos de recursos de computação por tarefa (
computeResource
).Recursos de VM: opcionalmente, também pode especificar as VMs da tarefa, como o tipo de máquina e o SO, e recursos adicionais, como GPUs e volumes de armazenamento, através dos campos da política de recursos de VM (
instances[].policy
) ou do campoinstances[].instanceTemplate
alternativo. Se deixar estes campos indefinidos (o que não é possível quando cria uma tarefa através da consola), o Batch tenta automaticamente selecionar VMs compatíveis e não adiciona recursos adicionais.Google Cloud
O número de VMs e o número de tarefas que podem ser executadas em simultâneo em cada VM variam para diferentes trabalhos com base no agendamento de tarefas e nos requisitos de hardware especificados. Se especificar que as tarefas de uma tarefa devem ser executadas
IN_ORDER
, a tarefa tem uma VM e executa apenas uma tarefa de cada vez. Caso contrário,
se as tarefas de um trabalho forem executadas AS_SOON_AS_POSSIBLE
, pode estimar o
número de VMs e o número de tarefas simultâneas através da seguinte fórmula:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Esta fórmula tem os seguintes valores:
- \({vmsPerJob}\): o número máximo de VMs para uma tarefa. A quantidade real de VMs criadas para uma tarefa pode ser inferior a este valor, por exemplo, se o Batch considerar que é mais rápido executar uma tarefa com menos recursos do que esperar por mais recursos. Este valor também está limitado pelos limites de VMs simultâneas por tarefa.
- \({taskCount}\): o número total de tarefas para o trabalho, que define
usando o campo contagem de tarefas (
taskCount
). \({parallelTasksPerVM}\): o número máximo de tarefas que podem ser executadas numa MV em simultâneo.
Este valor é determinado por todos os seguintes critérios:
O valor mínimo é 1 tarefa.
O valor máximo é o menor de 20 tarefas e, se definido, o valor do campo max parallel tasks per job (
parallelism
).Se o campo máximo de tarefas paralelas por MV (
taskCountPerNode
) estiver definido, esse valor é usado.Caso contrário, se
taskCountPerNode
não estiver definido, o Batch decide um valor dividindo o número total de recursos de computação, especificamente vCPUs, por VM na quantidade necessária para cada tarefa:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
Esta fórmula tem os seguintes valores:
\({vcpusPerVm}\): o número total de vCPUs por VM, que é determinado pelo tipo de máquina das VMs da tarefa.
\({vcpusPerTask}\): o número de vCPUs por tarefa, que é determinado convertendo as unidades do campo vCPUs por tarefa (
cpuMilli
).
Opções de criação de tarefas
O artigo Crie e execute uma tarefa básica explica os fundamentos, incluindo como definir um executável através de um script ou de uma imagem de contentor, e como configurar variáveis de ambiente predefinidas e personalizadas.
Depois de compreender os princípios básicos da criação de tarefas, considere criar uma tarefa que use uma ou mais das seguintes opções de configuração adicionais:
Controlar o acesso a um trabalho:
O artigo Controle o acesso de uma tarefa através de uma conta de serviço personalizada explica como especificar a conta de serviço de uma tarefa, o que influencia os recursos e as aplicações aos quais as VMs de uma tarefa podem aceder. Se não especificar uma conta de serviço personalizada, as tarefas usam por predefinição a conta de serviço predefinida do Compute Engine.
A vista geral da rede oferece uma vista geral de quando e como pode personalizar a configuração de rede para uma tarefa, incluindo a especificação da rede da tarefa, o bloqueio de ligações externas e a proteção de dados e recursos através dos controlos de serviços da VPC.
Proteja dados confidenciais com o Secret Manager explica como definir dados confidenciais de forma segura, como variáveis de ambiente personalizadas e credenciais de início de sessão, usando segredos do Secret Manager para especificar informações encriptadas quando cria uma tarefa.
Configure opções adicionais para uma tarefa:
Configure a comunicação de tarefas através de uma biblioteca MPI explica como configurar uma tarefa com tarefas interdependentes que comunicam entre si em diferentes VMs através de uma biblioteca de interface de passagem de mensagens (MPI). Um exemplo de utilização comum da MPI são as cargas de trabalho de computação de alto desempenho (HPC) fortemente acopladas.
Personalize os recursos nos quais uma tarefa é executada:
O artigo Defina recursos de tarefas com um modelo de instância de VM explica como especificar um modelo de VM do Compute Engine para definir os recursos de uma tarefa quando cria uma tarefa. Esta é uma alternativa à especificação dos recursos de uma tarefa diretamente através do campo
instances[].policy
.O artigo Use GPUs for a job explica como definir uma tarefa que usa uma ou mais unidades de processamento de gráficos (GPUs). Os exemplos de utilização comuns para tarefas que usam GPUs incluem o tratamento de dados intensivo ou cargas de trabalho de aprendizagem automática (AA).
O artigo Use volumes de armazenamento para uma tarefa explica como definir uma tarefa que pode aceder a um ou mais volumes de armazenamento externos. As opções de armazenamento incluem discos persistentes novos ou existentes, SSDs locais novos, contentores do Cloud Storage existentes e um sistema de ficheiros de rede (NFS) existente, como uma partilha de ficheiros do Filestore.
Vista geral do ambiente do SO da VM oferece uma vista geral de quando e como pode personalizar o ambiente do sistema operativo (SO) da VM para uma tarefa, incluindo a imagem do SO da VM e os discos de arranque da tarefa.
Otimizar vários aspetos de um trabalho:
Melhore a monitorização e a análise:
O artigo Escreva registos de tarefas explica como configurar os executáveis de uma tarefa para escrever registos de tarefas. A escrita de registos de tarefas permite-lhe apresentar informações personalizadas no Cloud Logging, o que pode ajudar a analisar e resolver problemas de tarefas mais facilmente.
O artigo Configure eventos de estado personalizado explica como configurar eventos de estado personalizado para os runnables de uma tarefa. Os eventos de estado personalizados permitem-lhe descrever eventos importantes que ocorrem para os executáveis e aparecem quando vê o histórico de eventos de estado de uma tarefa, o que pode ajudar a tornar as tarefas mais fáceis de analisar e resolver problemas.
O artigo Ative as notificações de estado explica como pode configurar uma tarefa para enviar notificações do Pub/Sub acerca do respetivo estado, que pode armazenar e consultar opcionalmente numa tabela do BigQuery. Antes de ler este documento, configure o seu projeto para monitorizar o estado das tarefas através de notificações do Pub/Sub e do BigQuery primeiro.
O artigo Ative as métricas do agente de operações explica como configurar uma tarefa para instalar automaticamente o agente de operações. O agente de operações recolhe métricas adicionais sobre o desempenho e a utilização dos recursos de uma tarefa. Para mais informações sobre como ver e usar as métricas de recursos, consulte Monitorize e otimize os recursos de tarefas através da visualização de métricas.
O artigo Agende tarefas dependentes (Pré-visualização) explica como especificar uma tarefa que não é executada até que uma ou mais tarefas de dependência existentes tenham sido bem-sucedidas ou falhado. Se tiver uma carga de trabalho com requisitos de recursos variáveis, pode reduzir os custos e a utilização de quotas separando os tipos de VMs usadas para operações de baixa procura (como a preparação de dados) e operações de computação intensiva (como o processamento de dados).
O artigo Automatize as novas tentativas de tarefas explica como repetir automaticamente as tarefas de um trabalho após todas as falhas ou as falhas especificadas. As novas tentativas automáticas podem ajudar a reduzir a fricção na resolução de problemas e o tempo de execução geral necessário para tarefas que têm erros temporários. Por exemplo, use novas tentativas automáticas para uma tarefa executada em VMs Spot, que oferecem descontos significativos, mas podem nem sempre estar disponíveis e podem ser antecipadas em qualquer altura.
O artigo Limite os tempos de execução com tempos limite explica como limitar o tempo de execução permitido para uma tarefa ou um executável. Ao evitar tempos de execução excessivos, pode reduzir os custos e os atrasos inesperados.
Garanta a disponibilidade de recursos com reservas de VMs explica como configurar uma tarefa que pode ser executada em VMs reservadas. A utilização de VMs reservadas pode ajudar a minimizar o tempo de agendamento de uma tarefa, evitar erros de disponibilidade de recursos e otimizar os custos.
Reduza a latência:
O artigo Coloque VMs no mesmo local para reduzir a latência explica como reduzir a latência da rede entre as VMs de um trabalho exigindo que as VMs estejam localizadas fisicamente próximas umas das outras. Esta vantagem de desempenho pode ser especialmente útil para trabalhos que tenham comunicações de rede frequentes entre VMs, como tarefas que comunicam através de bibliotecas MPI.
O artigo Use Image streaming explica como melhorar o tempo de início do trabalho através do streaming de imagens de contentores do Artifact Registry.
Use serviços adicionais para criar e executar tarefas:
O artigo Orquestre trabalhos com fluxos de trabalho explica como usar fluxos de trabalho para executar as tarefas de um trabalho numa ordem que define com a sintaxe de fluxos de trabalho.
O artigo Orquestre tarefas com o Nextflow explica como executar uma tarefa do Batch através de um pipeline do Nextflow, que pode usar para orquestrar fluxos de trabalho de bioinformática.
O artigo Orquestre tarefas com o dsub explica como executar uma tarefa do Batch através de um
dsub
pipeline, que pode usar para orquestrar fluxos de trabalho de processamento em lote nos serviços Google Cloud .O artigo Crie e execute tarefas em lote com o Terraform e o Cloud Scheduler explica como incorporar tarefas em lote no Terraform. O Terraform permite-lhe aprovisionar e gerir a infraestrutura especificando o estado preferencial em ficheiros de configuração, que podem ser tratados como código e armazenados em sistemas de controlo de versões, como o GitHub.
O que se segue?
Aprenda os princípios básicos da criação de tarefas: