Configurar límites de CPU para servicios

En esta página se describe cómo especificar el número de CPUs que se van a usar en cada instancia de Cloud Run. De forma predeterminada, las instancias de contenedor de Cloud Run están limitadas a 1 CPU. Puede aumentar o reducir este valor tal como se describe en esta página.

En esta página también se describe cómo habilitar o inhabilitar el aumento de CPU al inicio, una función que aumenta temporalmente la asignación de CPU durante el inicio de la instancia para reducir la latencia de inicio.

Definir y actualizar límites de CPU

De forma predeterminada, cada instancia está limitada a 1 CPU. Puede cambiarlo por cualquiera de los valores que se muestran en la siguiente tabla.

Tabla de CPU y memoria

Estos son los requisitos mínimos de memoria para las CPUs:

CPUs Memoria mínima
1 128 MiB
2 128 MiB
4 2 GiB
6 4 GiB
8 4 GiB

Si quieres usar menos de 1 CPU, puedes seleccionar cualquier valor entre 0,08 y 1, en incrementos de 0,001. Los valores superiores a 1 deben ser números enteros. Si usas menos de 1 CPU, se aplican los siguientes requisitos:

Ajuste Requisito
Memoria Se necesita un mínimo de 0,5 CPU para definir un límite de memoria superior a 512 MiB.
Se necesita un mínimo de 1 CPU para definir un límite de memoria superior a 1 GiB.
Simultaneidad El valor de Concurrencia máxima debe ser 1.
Facturación La configuración de facturación debe ser de facturación basada en solicitudes.
Entorno de ejecución Debes usar el entorno de ejecución de primera generación.

Roles obligatorios

Para obtener los permisos que necesitas para configurar e implementar servicios de Cloud Run, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Si vas a desplegar un servicio o una función a partir de código fuente, también debes tener otros roles concedidos en tu proyecto y en la cuenta de servicio de Cloud Build.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Configurar límites de CPU

Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.

Puedes definir límites de CPU mediante la Google Cloud consola, la línea de comandos de gcloud o un archivo YAML cuando creas un servicio o despliegas una revisión:

Consola

  1. En la Google Cloud consola, ve a Cloud Run:

    Ir a Cloud Run

  2. Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.

  3. Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • En la lista desplegable, selecciona el límite de CPU que quieras. Si quieres usar menos de 1 CPU, elige Personalizado. Selecciona un valor de 1, 2, 4, 6 o 8 CPUs. Si quieres especificar menos de 1 CPU, indica un valor entre 0,08 y menos de 1,00, en incrementos de 0,01. (Consulta la tabla de la sección Definir y actualizar los límites de CPU para ver los ajustes obligatorios).
  5. Haz clic en Crear o en Implementar.

gcloud

Para actualizar los límites de CPU de un servicio, puedes usar el siguiente comando:

gcloud run services update SERVICE --cpu CPU

Haz los cambios siguientes:

  • SERVICE: el nombre de tu servicio.
  • CPU: el límite de CPU deseado. Especifica el valor 1, 2, 4, 6 o 8 CPUs. Si quieres especificar menos de 1 CPU, indica un valor entre 0,08 y menos de 1,00, en incrementos de 0,01. Consulta la tabla de la sección Configurar y actualizar los límites de CPU para ver los ajustes obligatorios.

También puedes definir la CPU durante la implementación con el siguiente comando:

gcloud run deploy --image IMAGE_URL --cpu CPU

Haz los cambios siguientes:

  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • CPU: el valor 1, 2, 4, 6 o 8 CPUs. Si quieres especificar menos de 1 CPU, indica un valor entre 0,08 y menos de 1,00, en incrementos de 0,01. (Consulta la tabla de la sección Definir y actualizar los límites de CPU para ver los ajustes obligatorios).

YAML

  1. Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualice el 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

    Haz los cambios siguientes:

    • SERVICE: el nombre de tu servicio de Cloud Run.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • CPU: el valor del límite de CPU que quieras. Especifica el valor 1, 2, 4, 6 o 8 CPUs. Si quieres especificar menos de 1 CPU, indica un valor entre 0,08 y menos de 1,00, en incrementos de 0,01. (Consulta la tabla de la sección Definir y actualizar los límites de CPU para ver los ajustes obligatorios).
    • REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
      • Empieza por SERVICE-
      • Contiene solo letras minúsculas, números y -
      • No termina con -
      • No supera los 63 caracteres
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de 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"
        }
      }
    }
  }
}

El recurso google_cloud_run_v2_service anterior especifica un límite de CPU en template.containers.resources.limits.

Sustituye 1 por el número de CPUs que quieras. Nota: 1 corresponde a 1 vCPU.

Definir el aumento de la CPU al inicio

La función Aumento de CPU al inicio de las revisiones proporciona CPU adicional durante el tiempo de inicio de la instancia y durante 10 segundos después de que se haya iniciado la instancia.

El aumento real de la CPU varía en función de los ajustes de límite de la CPU:

Límite de CPU CPU potenciada
0-1 2
2 4
4 8
6 8
8 8

Se te cobra por la CPU reforzada asignada durante el tiempo de inicio del contenedor. Por ejemplo, si el tiempo de inicio del contenedor es de 15 segundos y asignas 2 CPUs con el aumento de CPU de inicio, se te cobrarán 4 CPUs durante el tiempo de inicio de la instancia (que puede ser más corto), incluidos los 10 segundos posteriores a que el contenedor haya terminado de iniciarse, y 2 CPUs durante el resto del ciclo de vida del contenedor.

Si tu implementación de Cloud Run usa sidecars y habilitas el aumento de CPU al inicio, todos los contenedores recibirán el aumento de CPU. Cloud Run determina la cantidad de CPU aumentada de cada contenedor en función del límite de CPU.

Puedes habilitar o inhabilitar el aumento de CPU al inicio mediante la Google Cloud consola, la CLI de Google Cloud, un archivo YAML o un archivo Terraform.

Consola

  1. En la Google Cloud consola, ve a Cloud Run:

    Ir a Cloud Run

  2. Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.

  3. Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • Para habilitar el aumento de la CPU al inicio, selecciona la casilla Aumento de la CPU al inicio. Para inhabilitar esta función, desmarca la casilla.
  5. Haz clic en Crear o en Implementar.

gcloud

  1. Puedes habilitar el aumento de la CPU al inicio de un servicio determinado con el siguiente comando:

    gcloud run services update SERVICE --cpu-boost

    Sustituye SERVICE por el nombre de tu servicio.

    Puedes habilitar el aumento de la CPU al inicio durante la implementación con el siguiente comando:

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

    Sustituye IMAGE_URL por una referencia a la imagen de contenedor. Por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

  2. Puedes inhabilitar el aumento de CPU al inicio de un servicio concreto con el siguiente comando:

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

    Sustituye SERVICE por el nombre de tu servicio.

    Puedes inhabilitar el aumento de la CPU al inicio durante la implementación con el siguiente comando:

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

YAML

  1. Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza el atributo run.googleapis.com/startup-cpu-boost especificando 'true' para habilitar el aumento de la CPU al inicio o 'false' para inhabilitarlo:

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

    Sustituye SERVICE por el nombre de tu servicio de Cloud Run.

  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de 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
      }
    }
  }
}

Haz los cambios siguientes:

  • SERVICE: el nombre de tu servicio de Cloud Run.
  • REGION: la región Google Cloud , por ejemplo, europe-west1.
  • CPU_BOOST: true para habilitar el aumento de la CPU al inicio o false para inhabilitarlo.

Ver la configuración de la CPU

Para ver la configuración actual de la CPU de tu servicio de Cloud Run, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interese para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles de la derecha, el ajuste de CPU se muestra en la pestaña Contenedor.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca el ajuste de CPU en la configuración devuelta.

Uso de subprocesos y CPU de la aplicación

Cuando selecciones un límite de CPU superior a 1 vCPU, ten en cuenta el modelo de subprocesos de tu aplicación. Cuando se usa el autoescalado, Cloud Run utiliza el uso medio de la CPU en todas las CPUs asignadas. Si tu aplicación es de un solo hilo, puede que solo utilice un núcleo por completo, lo que provoca que la utilización media de la CPU sea baja, incluso cuando está sometida a carga. Esto puede impedir que el autoescalado basado en la CPU se produzca como se espera.

Para evitar este comportamiento en una aplicación de un solo subproceso, te recomendamos que empieces con 1 vCPU si tus requisitos de memoria lo permiten. De esta forma, se consigue un mejor autoescalado basado en la CPU. Si las necesidades de memoria superiores obligan a seleccionar varios procesadores para una aplicación de un solo subproceso, considera la posibilidad de ajustar la configuración de simultaneidad.