Configurar limites de CPU para serviços

Esta página também descreve como ativar ou desativar a otimização de CPU de inicialização, um atributo 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 isso 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
0,08 vCPU Até 512 MiB
0,5 vCPU Até 1 GiB
1 vCPU Até 4 GiB
2 vCPU Até 8 GiB
4 vCPUs 2 a 16 GiB
6 vCPUs 4 a 24 GiB
8 vCPUs 4 a 32 GiB

Os valores maiores que 1 precisam ser números inteiros.

Quantidade máxima de vCPU

A quantidade máxima de vCPU que é possível configurar é de 8 vCPUs.

Quantidade mínima de vCPU

A configuração mínima de vCPU é de 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 recurso do Cloud Run é afetado pela configuração da CPU e pelo tempo de atividade do recurso, entre outros fatores. O provisionamento excessivo de recursos pode aumentar os custos. Para determinar qual configuração de CPU é melhor para seu recurso:

  1. Estabeleça uma configuração de linha de base inicial 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 ao testar o sistema sob carga.
  3. Ajuste a configuração da CPU conforme necessário.

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

É possível conferir dados de custo resumidos, dados de utilização e recomendações de otimização de custos para recursos na página Otimização do Cloud Hub. Consulte os preços do Cloud Run ou estime 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 função do código-fonte, você também precisará ter outros papéis concedidos 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 Google Cloud APIs, 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 Google Cloud console, 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:

    Acesse 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.

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

  4. Clique na guia Contêineres.

  5. Selecione o limite de CPU 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.

  6. 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 de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • CPU: 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.)

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 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 de 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: um novo nome de revisão ou exclua-o (se presente). 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

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

Terraform

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

Adicione o seguinte a um google_cloud_run_v2_service recurso 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 desejada. Dica: 1 corresponde a uma 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 a otimização da CPU de inicialização, todos os contêineres vão receber a otimização da CPU. O Cloud Run determina a quantidade de CPU otimizada para cada contêiner pelo limite de CPU.

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

Console

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

    Acesse 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.

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

  4. Clique na guia Contêineres.

  5. 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.

  6. 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

    Substitua 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

    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 segue o formato de 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

    Substitua 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

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

Terraform

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

Adicione o seguinte a um google_cloud_run_v2_service recurso 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 serviço do Cloud Run.
  • REGION: a Google Cloud região, 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 de 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.

Implantar 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 as APIs.

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

Após a implantação, o URL do serviço do Cloud Run será exibido. Copie esse URL e cole-o no navegador para conferir o contêiner em execução. É possível desativar a autenticação padrão no Google Cloud console.

Ver configurações da CPU

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

Console

  1. No Google Cloud console, acesse a página Serviços do Cloud Run:

    Acesse o Cloud Run

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

  3. Clique na guia Histórico de revisões,

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

gcloud

  1. Use o comando a seguir:

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

Linhas de execução do aplicativo e utilização da CPU

Ao selecionar um limite de CPU maior que 1 vCPU, considere o modelo de linhas de execução do 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 de execução única, ele poderá usar 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 conforme o esperado.

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