Configure limites de CPU para serviços

Esta página descreve como especificar o número de CPUs a usar para cada instância do Cloud Run. Por predefinição, as instâncias de contentores do Cloud Run estão limitadas a 1 CPU. Pode aumentar ou diminuir este valor, conforme descrito nesta página.

Esta página também descreve como ativar ou desativar o aumento da CPU no arranque, uma funcionalidade que aumenta temporariamente a atribuição da CPU durante o arranque da instância para reduzir a latência de arranque.

Defina e atualize os limites de CPU

Por predefinição, cada instância está limitada a 1 CPU. Pode alterar esta opção para qualquer um dos valores apresentados na tabela seguinte.

Tabela de CPU e memória

Seguem-se os requisitos mínimos de memória para CPUs:

CPUs Memória mínima
1 128 MiB
2 128 MiB
4 2 GiB
6 4 GiB
8 4 GiB

Em alternativa, se quiser usar menos de 1 CPU, pode selecionar qualquer valor entre 0,08 e 1, em incrementos de 0,001. Os valores superiores a 1 têm de ser valores inteiros. Se usar menos de 1 CPU, os seguintes requisitos são aplicados:

Definição Requisito
Memória É necessário um mínimo de 0,5 CPU para definir um limite de memória superior a 512 MiB.
É necessário um mínimo de 1 CPU para definir um limite de memória superior a 1 GiB.
Simultaneidade O número máximo de pedidos simultâneos tem de ser definido como 1.
Faturação As definições de faturação têm de estar definidas para faturação baseada em pedidos.
Ambiente de execução Tem de usar o ambiente de execução de primeira geração.

Funções necessárias

Para receber as autorizações de que precisa para configurar e implementar serviços do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

Se estiver a implementar um serviço ou uma função a partir do código fonte, também tem de ter funções adicionais concedidas no seu projeto e na conta de serviço do Cloud Build.

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Configure os limites de CPU

Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.

Pode definir limites de CPU através da Google Cloud consola, da linha de comandos gcloud ou de um ficheiro YAML quando cria um novo serviço ou implementa uma nova revisão:

Consola

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.

  4. Clique no separador Contentor.

    imagem

    • Selecione o limite de CPU pretendido na lista pendente. Se quiser usar menos de 1 CPU, selecione Personalizado. Selecione um valor de 1, 2, 4, 6 ou 8 CPUs ou, para menos de 1 CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. (Consulte a tabela em Definir e atualizar limites de CPU para ver as definições necessárias.)
  5. Clique em Criar ou Implementar.

gcloud

Pode atualizar os limites da CPU para um determinado serviço através do seguinte comando:

gcloud run services update SERVICE --cpu CPU

Substitua o seguinte:

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

Também pode definir a CPU durante a implementação através do comando:

gcloud run deploy --image IMAGE_URL --cpu CPU

Substitua o seguinte:

  • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar 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 CPUs, ou para menos de 1 CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. (Consulte a tabela em Definir e atualizar limites de CPU para ver as definições necessárias.)

YAML

  1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

    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 o seguinte:

    • SERVICE: o nome do seu serviço do Cloud Run.
    • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • CPU: o valor do limite da CPU pretendido. Especifique o valor 1, 2, 4, 6 ou 8 CPUs ou, para menos de 1 CPU, especifique um valor de 0,08 a menos de 1,00, em incrementos de 0,01. (Consulte a tabela em Definir e atualizar limites de CPU para ver as definições necessárias.)
    • REVISION com um novo nome de revisão ou elimine-o (se existir). Se fornecer um novo nome de revisão, este tem de cumprir os seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não exceder 63 carateres
  3. Crie ou atualize o serviço com o seguinte comando:

    gcloud run services replace service.yaml

Terraform

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

Adicione o seguinte a um recurso google_cloud_run_v2_service na sua 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 quantidade de CPUs pretendida. Sugestão: 1 corresponde a 1 vCPU.

Defina o aumento da CPU no arranque

A funcionalidade aumento da CPU de arranque para revisões fornece CPU adicional durante o tempo de arranque da instância e durante 10 segundos após o início da instância.

O aumento real da CPU varia consoante as definições do limite da CPU:

Limite da CPU CPU com aumento de desempenho
0-1 2
2 4
4 8
6 8
8 8

É-lhe cobrado o tempo de arranque do contentor com base na CPU aumentada atribuída. Por exemplo, se o tempo de arranque do contentor for de 15 segundos e atribuir 2 CPUs, com o aumento de CPU de arranque, são-lhe cobrados 4 CPUs durante o tempo de arranque da instância (possivelmente mais curto), incluindo os 10 segundos após o contentor terminar o arranque, e 2 CPUs durante o resto do ciclo de vida do contentor.

Se a implementação do Cloud Run usar sidecars e ativar o aumento da CPU no arranque, todos os contentores recebem o aumento da CPU. O Cloud Run determina a quantidade de CPU aumentada para cada contentor pelo limite de CPU.

Pode ativar ou desativar o aumento da velocidade do CPU no arranque através da Google Cloud consola, da Google Cloud CLI, de um ficheiro YAML ou de um ficheiro Terraform.

Consola

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.

  4. Clique no separador Contentor.

    imagem

    • Para ativar o aumento da CPU no arranque, selecione a caixa de verificação Aumento da CPU no arranque. Para desativar esta funcionalidade, desmarque a caixa de verificação.
  5. Clique em Criar ou Implementar.

gcloud

  1. Pode ativar o aumento da velocidade do CPU no arranque para um determinado serviço através do seguinte comando:

    gcloud run services update SERVICE --cpu-boost

    Substitua SERVICE pelo nome do seu serviço.

    Pode ativar o aumento da velocidade do CPU no arranque durante a implementação através do comando:

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

    Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

  2. Pode desativar o aumento da CPU no arranque para um determinado serviço através do seguinte comando:

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

    Substitua SERVICE pelo nome do seu serviço.

    Pode desativar o aumento da velocidade do CPU no arranque durante a implementação com o comando:

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

YAML

  1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo run.googleapis.com/startup-cpu-boost especificando 'true' para ativar o aumento da velocidade do CPU no arranque 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 seu serviço do Cloud Run.

  3. Crie ou atualize o serviço com o seguinte comando:

    gcloud run services replace service.yaml

Terraform

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

Adicione o seguinte a um recurso google_cloud_run_v2_service na sua 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 o seguinte:

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

Veja as definições da CPU

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

Consola

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. Clique no serviço que lhe interessa para abrir a página Detalhes do serviço.

  3. Clique no separador Revisões.

  4. No painel de detalhes à direita, a definição de CPU é apresentada no separador Contentor.

gcloud

  1. Use o seguinte comando:

    gcloud run services describe SERVICE
  2. Localize a definição da CPU na configuração devolvida.

Processamento de várias tarefas da aplicação e utilização da CPU

Quando selecionar um limite de CPU superior a 1 vCPU, considere o modelo de processamento paralelo da sua aplicação. Quando dimensiona automaticamente, o Cloud Run usa a utilização média da CPU em todas as CPUs atribuídas. Se a sua aplicação for de thread único, só pode usar totalmente um núcleo, o que leva a uma utilização média da CPU baixa, mesmo sob carga. Isto pode impedir que o ajuste de escala automático baseado na CPU ocorra como esperado.

Para evitar este comportamento numa aplicação de thread único, se os seus requisitos de memória o permitirem, recomendamos que comece com 1 vCPU. Isto resulta numa escalabilidade automática baseada na CPU melhorada. Se as necessidades de memória mais elevadas exigirem uma seleção de vários CPUs para uma aplicação de thread único, considere ajustar a definição de simultaneidade.