Por padrão, cada tarefa é executada por no máximo 10 minutos: é possível alterar esse tempo para um tempo mais curto ou um tempo mais longo de até 168 horas (7 dias). Para tarefas que usam GPUs, o tempo limite máximo disponível é de 12 horas (pré-lançamento).
Defina o tempo limite da tarefa conforme descrito nesta página. Não há tempo limite explícito na execução de um job: a execução do job é concluída quando todas as tarefas forem concluídas.
As unidades especificam uma duração. Você pode especificar a duração do tempo limite como um valor inteiro em segundos, minutos ou horas. Por exemplo, para definir o tempo limite como 10 minutos e 5 segundos, especifique o valor como 605 segundos.
Se o job tiver novas tentativas ativadas, a configuração de tempo limite será aplicada a cada tentativa de uma tarefa. Se a tentativa da tarefa não for concluída nesse período, ela será interrompida. Quanto mais tempo um job leva para ser executado, maior é a probabilidade de ele encontrar problemas que causem falhas, como falhas de dependência downstream, erros de memória insuficiente ou problemas de infraestrutura. Recomendamos ativar as novas tentativas para todos os jobs, mas especialmente para aqueles com tarefas de longa duração.
Eventos de manutenção
As tarefas que não usam GPUs são migradas em tempo real durante eventos de manutenção. As tarefas que usam GPUs não podem ser migradas em tempo real e são encerradas. Saiba mais.
O processo de migração preserva o estado da tarefa, com uma exceção notável: as conexões de rede VPC de saída são interrompidas durante eventos de manutenção. Recomendamos que você use bibliotecas de cliente capazes de processar redefinições de conexão ocasionais.
O Cloud Run imprime uma mensagem de registro sempre que uma tarefa é iniciada e termina a migração.
Além disso, se você quiser monitorar ou manipular eventos de manutenção de maneira específica,
poderá capturar o sinal SIGTSTP, que é enviado 10 segundos antes de uma tarefa ser
migrada. Após a migração, a tarefa recebe um sinal SIGCONT imediatamente
após a reinicialização.
A amostra em Go a seguir é uma função que captura esses sinais e imprime uma entrada de registro:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
Jobs de GPU de longa duração
Em alguns casos, como jobs de GPU de longa duração, os eventos de manutenção podem resultar em preempção ou encerramento de instâncias sem migração em tempo real.
Para lidar com esses
eventos de maneira adequada, uma opção é capturar o sinal SIGTERM, que o Cloud Run
envia 10 segundos antes do encerramento da tarefa, para salvar o progresso gravando
pontos de verificação finais e salvando o estado no armazenamento permanente. Consulte
Projetar jobs de GPU resilientes de longa duração para mais
detalhes.
No entanto, você tem aproximadamente 10 segundos após SIGTERM antes que a tarefa seja encerrada.
Esse tempo não é suficiente para gravar um checkpoint de modelo grande. Trate o gerenciador SIGTERM
como uma limpeza de melhor esforço apenas de estado pequeno e use o checkpoint
periódico como sua proteção principal. Escolha o intervalo de checkpoint
com base na quantidade de trabalho que você pode perder.
Como as tarefas de GPU não são migradas em tempo real, uma tarefa configurada com um tempo limite de várias horas pode ser interrompida pelo menos uma vez antes de ser concluída. O tempo limite da tarefa é um limite máximo, não uma garantia de execução ininterrupta.
Funções exigidas
Para receber as permissões necessárias para configurar os jobs do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Desenvolvedor do Cloud Run (
roles/run.developer) no job do Cloud Run - Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o job do Cloud Run interagir com APIs doGoogle Cloud , como bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Definir tempo limite da tarefa
Para especificar o tempo limite da tarefa para um job do Cloud Run:
Console
No console do Google Cloud , acesse a página do Cloud Run:
Selecione Jobs no menu de navegação do Cloud Run:
Se você estiver criando um novo job, clique em Implantar contêiner para preencher a página inicial de configurações do job.
Se você estiver configurando um job, clique nele e em Ver e editar a configuração do job.
Clique em Contêineres, conexões, segurança para expandir a página de propriedades do job.
No campo Tempo limite da tarefa, especifique a duração máxima das tarefas do job em job atual e selecione uma Unidade de tempo. Só é possível especificar a duração do tempo limite como um valor inteiro em segundo, minuto ou hora. Por exemplo, para definir uma duração de 10 minutos e 5 segundos, no campo Tempo limite da tarefa, especifique
605e selecione a Unidade de tempo como segundo.Clique em Criar ou Atualizar.
gcloud
Para um job que você está criando:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Substituir
- JOB_NAME pelo nome do job.
IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT com a duração máxima das tarefas do job, especificando
a quantidade de tempo e as unidades. Por exemplo,
10m5sé de 10 minutos e 5 segundos.
Para um job que você está atualizando, faça o seguinte:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run jobs describe JOB --format export > job.yaml
Atualize o atributo
timeoutSeconds::apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Substitua:
- JOB_NAME pelo nome do job.
IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT pela duração máxima das tarefas do job;
especificando a quantidade de tempo e as unidades. Só é possível especificar o horário
como um valor inteiro em segundos, minutos ou horas. Por exemplo, para definir
com duração de 10 minutos e 5 segundos, especifique
605.
Também é possível definir outros detalhes de configurações, como variáveis de ambiente ou limites de memória.
Atualize a configuração do job que já existe:
gcloud run jobs replace job.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_job
na configuração do Terraform:Ver configurações de tempo limite da tarefa
Para ver as configurações atuais de tempo limite da tarefa do job do Cloud Run, use o console do Google Cloud ou a Google Cloud CLI:
Console
No console do Google Cloud , acesse a página de jobs do Cloud Run:
Clique no job para abrir a página Detalhes do job.
Clique em Exibir e editar a configuração do job.
Localize a definição do tempo limite da tarefa nos detalhes de configuração.
gcloud
Execute este comando:
gcloud run jobs describe JOB
Localize a configuração de tempo limite da tarefa na configuração retornada.