Configurar limites de CPU para serviços

Nesta página, descrevemos como especificar o número de vCPUs a serem usadas para cada instância do Cloud Run. Por padrão, as instâncias de contêiner do Cloud Run estão limitadas a 1 vCPU. É possível aumentar ou diminuir esse valor conforme descrito nesta página.

Esta página também descreve como ativar ou desativar a otimização de CPU de inicialização, um recurso que aumenta temporariamente a alocação de vCPU durante a inicialização da instância para reduzir a latência de inicialização.

Definir e atualizar os limites de vCPU

Por padrão, cada instância é limitada a uma vCPU. É possível mudar para qualquer um dos valores mostrados na tabela a seguir.

Tabela de vCPU e memória

Confira a seguir os requisitos de memória para vCPUs:

CPUs Memória necessária
.08 vCPU Até 512 MiB
.5 vCPU Até 1 GiB
1 vCPU Até 4 GiB
2 vCPU Até 8 GiB
4 vCPUs 2 a 16 GiB
6 vCPU 4 a 24 GiB
8 vCPUs 4 a 32 GiB

Valores maiores que 1 precisam ser números inteiros.

Quantidade máxima de vCPU

A quantidade máxima de vCPU que você pode configurar é 8 vCPU.

Quantidade mínima de vCPUs

A configuração mínima de vCPU é 0,08 vCPU.

Se você quiser usar menos de uma vCPU, selecione qualquer valor entre 0,08 e 1, em incrementos de 0,001.

Se você usar menos de uma vCPU, os seguintes requisitos serão aplicados:

Configuração Requisito
Memória É necessário um mínimo de 0,5 vCPU para definir um limite de memória maior que 512 MiB.
É necessário um mínimo de 1 vCPU para definir um limite de memória maior que 1 GiB.
Simultaneidade A simultaneidade máxima precisa ser definida como 1.
Faturamento As configurações de faturamento precisam ser definidas como faturamento com base em solicitações.
Ambiente de execução Use o ambiente de execução de primeira geração.

Considerações sobre o custo

O custo do seu recurso do Cloud Run é afetado pela configuração de CPU e pelo tempo de atividade do recurso, entre outros fatores. O superprovisionamento dos recursos pode aumentar seus custos. Para determinar qual configuração de CPU é a melhor para seu recurso:

  1. Estabeleça uma configuração inicial de referência para um limite de CPU que equilibre a utilização e os custos da CPU.
  2. Monitore as métricas de utilização da CPU no Cloud Monitoring enquanto testa o sistema sob carga.
  3. Ajuste a configuração da CPU conforme necessário.

Se o uso da CPU for consistentemente baixo sob carga máxima, considere reduzir a alocação de vCPUs. Se a latência for alta, considere aumentar a alocação de vCPUs.

É possível conferir dados resumidos de custos e utilização, além de recomendações de otimização de custos para serviços na página de otimização do Cloud Hub. Consulte os preços do Cloud Run ou calcule os custos com a calculadora de preços para mais informaçõ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:

Se você estiver implantando um serviço ou uma função do código-fonte, também precisará ter outros papéis concedidos a você no projeto e na conta de serviço do Cloud Build.

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 APIs doGoogle 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.

Configurar limites 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.

É possível definir limites de CPU usando o console 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 Google Cloud console, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione Serviços no menu de navegação do Cloud Run e clique em Implantar contêiner 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 e clique em Contêineres, redes e segurança para expandir essa página.

  4. Clique na guia Contêiner.

    imagem

    • Selecione o limite de CPU que você quer na lista suspensa usando Personalizado se quiser usar menos de uma CPU. Selecione um valor de 1, 2, 4, 6 ou 8 CPUs. Para menos de uma CPU, especifique um valor de 0,08 a menos de 1,00 em incrementos de 0, 01. Consulte a tabela em Como configurar e atualizar limites de CPU para as configurações necessárias.
  5. Clique em Criar ou Implantar.

gcloud

É possível atualizar os limites de CPU de um determinado serviço usando o seguinte comando:

gcloud run services update SERVICE --cpu CPU

Substitua:

  • SERVICE: o nome do serviço.
  • CPU: o limite de CPU desejado. Especifique o valor de 1, 2, 4, 6 ou 8 CPUs. Para menos de uma CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. Consulte a tabela em Como configurar e atualizar limites de CPU para as configurações necessárias.

Também é possível definir o limite de CPU durante a implantação usando este comando:

gcloud run deploy --image IMAGE_URL --cpu CPU

Substitua:

  • IMAGE_URL: 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 segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • CPU: o valor 1, 2, 4, 6 ou 8. Para menos de uma CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. Consulte a tabela em Como configurar e atualizar limites de CPU para as configurações necessárias.

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:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                cpu: CPU

    Substitua:

    • SERVICE: o nome do seu serviço do Cloud Run.
    • IMAGE_URL: 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 segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • CPU: o valor do limite de CPU desejado. Especifique o valor de 1, 2, 4, 6 ou 8 CPUs. Para menos de uma CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. Consulte a tabela em Como configurar e atualizar limites de CPU para as configurações necessárias.
    • 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 na configuração do Terraform:

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

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          # CPU usage limit
          cpu = "1"
        }
      }
    }
  }
}

O recurso google_cloud_run_v2_service anterior especifica um limite de CPU em template.containers.resources.limits.

Substitua 1 pela contagem de CPU que você quer. Dica: 1 corresponde a 1 vCPU.

Definir otimização de CPU de inicialização

O recurso de otimização da CPU de inicialização para revisões fornece mais CPU durante o tempo de inicialização da instância e por 10 segundos após o início da instância.

O aumento real da CPU varia de acordo com as configurações de limite da CPU:

Limite de CPU CPU otimizada
0-1 2
2 4
4 8
6 8
8 8

A CPU otimizada alocada é cobrada durante o tempo de inicialização do contêiner. Por exemplo, se o tempo de inicialização do contêiner for de 15 segundos e você alocar 2 CPUs com a otimização da CPU de inicialização, você será cobrado por 4 CPUs durante o tempo de inicialização da instância (possivelmente mais curto), incluindo os 10 segundos após o término da inicialização do contêiner e duas CPUs durante o restante do ciclo de vida.

Se a implantação do Cloud Run usar sidecars e você ativar o reforço de CPU de inicialização, todos os contêineres vão receber o reforço de CPU. O Cloud Run determina a quantidade de CPU aumentada para cada contêiner pelo limite de CPU.

É possível ativar ou desativar a otimização da CPU de inicialização usando o console Google Cloud , a Google Cloud CLI, um arquivo YAML ou um arquivo Terraform.

Console

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

    Acessar o Cloud Run

  2. Selecione Serviços no menu de navegação do Cloud Run e clique em Implantar contêiner 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 e clique em Contêineres, redes e segurança para expandir essa página.

  4. Clique na guia Contêiner.

    imagem

    • Para ativar a otimização da CPU de inicialização, marque a caixa de seleção Otimização da CPU de inicialização. Para desativar esse atributo, desmarque a opção.
  5. Clique em Criar ou Implantar.

gcloud

  1. É possível ativar a otimização da CPU de inicialização para um determinado serviço usando o seguinte comando:

    gcloud run services update SERVICE --cpu-boost

    SERVICE pelo nome do serviço;

    É possível ativar a otimização da CPU de inicialização durante a implantação usando o comando:

    gcloud run deploy --image IMAGE_URL --cpu-boost

    Substitua IMAGE_URL por uma referência à imagem do 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 segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

  2. É possível desativar a otimização da CPU de inicialização de um determinado serviço usando o seguinte comando:

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

    SERVICE pelo nome do serviço;

    É possível desativar a otimização da CPU de inicialização durante a implantação usando o comando:

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

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 run.googleapis.com/startup-cpu-boost especificando 'true' para ativar a otimização da CPU de inicialização, ou 'false' para desativar:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/startup-cpu-boost: 'true'

    Substitua SERVICE pelo nome do serviço do Cloud Run.

  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 na configuração do Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        startup_cpu_boost = CPU_BOOST
      }
    }
  }
}

Substitua:

  • SERVICE: o nome do seu serviço do Cloud Run.
  • REGION: a região Google Cloud , por exemplo, europe-west1.
  • CPU_BOOST: true para ativar a otimização da CPU de inicialização ou false para desativar.

Escrever

Para especificar limites de CPU no arquivo compose.yaml, adicione o atributo cpus à definição do serviço.

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

Substitua:

  • IMAGE: o URL da imagem do contêiner.
  • CPU_VALUE: o limite de CPU necessário, por exemplo, 2.

Implante os serviços

  1. Para implantar os serviços, execute o comando gcloud run compose up:

    gcloud run compose up compose.yaml
  2. Responda y a todas as solicitações para instalar os componentes necessários ou ativar APIs.

  3. Opcional: torne seu serviço público se você quiser permitir o acesso não autenticado ao serviço.

Depois da implantação, o URL do serviço do Cloud Run é exibido. Copie esse URL e cole no navegador para ver o contêiner em execução. É possível desativar a autenticação padrão no console Google Cloud .

Ver configurações da CPU

Para ver as configurações atuais da CPU do serviço do Cloud Run:

Console

  1. No console do Google Cloud , acesse a página Serviços do 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 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 CPU na configuração retornada.

Execução de linhas de execução de aplicativos e uso da CPU

Ao selecionar um limite de CPU maior que 1 vCPU, considere o modelo de threading do seu aplicativo. Ao fazer o escalonamento automático, o Cloud Run usa a utilização média da CPU em todas as CPUs alocadas. Se o aplicativo for de linha única, ele poderá usar totalmente apenas um núcleo, o que leva a uma utilização média baixa da CPU, mesmo sob carga. Isso pode impedir que o escalonamento automático baseado na CPU ocorra como esperado.

Para evitar esse comportamento em um aplicativo de linha única, se os requisitos de memória permitirem, recomendamos começar com 1 vCPU. Isso resulta em um escalonamento automático melhor com base na CPU. Se necessidades de memória mais altas exigirem uma seleção de várias CPUs para um aplicativo de linha única, ajuste a configuração de simultaneidade.