Alocação de CPU (serviços)

Por padrão, as CPUs são alocadas para instâncias de contêiner do Cloud Run somente durante o processamento da solicitação e na inicialização ou no encerramento do contêiner. (Consulte Ciclo de vida da instância). É possível alterar esse comportamento para que a CPU seja sempre alocada e disponível mesmo quando não houver solicitações de entrada. Configurar a CPU para ser sempre alocada pode ser útil para executar tarefas curtas em segundo plano e outras tarefas de processamento assíncrono.

Ilustração de modos de alocação de CPU

Mesmo que a CPU esteja sempre alocada, o escalonamento automático do Cloud Run ainda está em vigor e poderá encerrar as instâncias se não forem necessárias para lidar com o tráfego de entrada ou a utilização atual da CPU fora das solicitações. Uma instância nunca permanecerá inativa por mais de 15 minutos após o processamento de uma solicitação, a menos que seja mantida ativa usando instâncias mínimas.

Combinar a CPU sempre alocada com várias instâncias mínimas resulta em várias instâncias funcionando com acesso total aos recursos da CPU, permitindo casos de uso de processamento em segundo plano. Ao usar esse padrão, o Cloud Run aplica o escalonamento automático de instâncias mesmo que um serviço esteja usando a CPU fora de qualquer solicitação

Se você usar sondagens de verificação de integridade, a CPU será alocada para cada sondagem. Consulte sondagens de verificação de integridade do contêiner para ver detalhes de faturamento.

Impacto no preço

Se você escolher a CPU a ser alocada apenas durante o processamento da solicitação, será cobrado por solicitação e somente quando a instância do contêiner processar uma solicitação. Se você escolher a configuração CPU sempre alocada, você será cobrado por todo o ciclo de vida da instância do contêiner. Consulte as tabelas de preços do Cloud Run para mais detalhes.

O recomendador do Google analisa automaticamente o tráfego recebido pelo serviço do Cloud Run no último mês e recomenda a mudança de CPU alocada durante as solicitações para CPU sempre alocada, se for mais barata.

Como escolher a alocação de CPU apropriada

A escolha da alocação de CPU apropriada para seu caso de uso depende de vários fatores, como padrões de tráfego, execução em segundo plano e custo, cada um deles descrito nas seções a seguir.

Considerações sobre padrões de tráfego

  • A CPU alocada somente durante o processamento da solicitação é recomendada quando o tráfego de entrada é esporádico, em burst ou com picos.
  • A CPU sempre alocada é recomendada quando o tráfego de entrada está estável, variando lentamente.

Considerações sobre execução em segundo plano

Selecionar CPU sempre alocada permite que você execute tarefas curtas em segundo plano e outros trabalhos de processamento assíncronos depois de retornar respostas. Por exemplo:

  • utilização de agentes de monitoramento, como o OpenTelemetry, que podem presumir a possibilidade de execução em segundo plano;
  • Usar as Goroutines do Go, Node.js assíncrono, linhas de execução do Java e corrotinas do Kotlin
  • Usar frameworks de aplicativos que dependem de recursos integrados de programação/segundo plano.

As instâncias inativas, incluindo as que foram mantidas aquecidas com as instâncias mínimas, podem ser encerradas a qualquer momento. Se for necessário concluir tarefas pendentes antes de o contêiner ser encerrado, interrompa o SIGTERM para conceder à instância 10 segundos de carência antes de ser interrompida.

Recomendamos o uso do Cloud Tasks para executar tarefas assíncronas. O Cloud Tasks repete automaticamente as tarefas com falha e é compatível com tempos de execução de até 30 minutos.

Considerações sobre o custo

Se você estiver usando a CPU alocada somente durante o processamento de solicitações, a CPU sempre alocada será mais econômica se:

Use a calculadora de preços para estimar as diferenças de custo.

Considerações sobre o escalonamento automático

O Cloud Run faz escalonamento automático do número de instâncias de contêiner.

Para um serviço definido como CPU alocada somente durante o processamento da solicitação, o Cloud Run escalona automaticamente o número de instâncias com base na utilização da CPU durante o processamento da solicitação.

Para um serviço definido como CPU sempre alocada, o Cloud Run escalona automaticamente o número de instâncias com base no uso da CPU para todo o ciclo de vida da instância do contêiner, exceto ao escalonar de e para zero, em que é usado apenas solicitações.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

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 serviço do Cloud Run interage com as APIs do Google Cloud, como as 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 e atualizar a alocação de CPU

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Se você escolher a opção de CPU sempre alocada, especifique pelo menos 512 MiB de memória.

Por padrão, a CPU é alocada apenas durante o processamento de solicitações para cada instância de contêiner. É possível alterar esse padrão usando o console do Google Cloud, a linha de comando gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Clique em Implantar contêiner e selecione Serviço para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Ao configurar um novo serviço, preencha a página inicial de configurações de serviço conforme preferir e clique em Contêineres, volumes, redes e segurança para expandir essa página.

  4. Clique na guia Contêiner.

    imagem

    • Selecione a alocação de CPU que você quer em Alocação de CPU e preços. Selecione A CPU só é alocada durante o processamento da solicitação para que as instâncias recebam a CPU somente quando estiverem recebendo solicitações. Selecione A CPU é sempre alocada para alocar CPU para todo o ciclo de vida das instâncias.
  5. Clique em Criar ou Implantar.

gcloud

É possível atualizar a alocação de CPU. Para definir as CPUs a serem sempre alocadas para um determinado serviço:

gcloud run services update SERVICE --no-cpu-throttling 

SERVICE pelo nome do serviço;

Para definir a alocação de CPU somente durante o processamento da solicitação:

gcloud run services update SERVICE --cpu-throttling 

Também é possível definir a alocação de CPU durante a implantação. Para que as CPUs sejam sempre alocadas, faça o seguinte:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

Para definir a alocação de CPU somente durante o processamento da solicitação:

gcloud run deploy --image IMAGE_URL --cpu-throttling

IMAGE_URL por uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest; Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

YAML

  1. 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 services describe SERVICE --format export > service.yaml
  2. Atualize o atributo cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • BOOLEAN com true para definir a alocação de CPU somente durante o processamento da solicitação ou false para definir a CPU para sempre alocada.
    • REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service em template.containers.resources na configuração do Terraform.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Ver configurações de alocação de CPU

Para ver as configurações atuais de alocação de CPU do serviço do Cloud Run:

Console

  1. No console do Google Cloud, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração da alocação da CPU está listada na guia Contêiner.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração de alocação da CPU na configuração retornada.