Configurer les limites de processeur pour les services

Cette page décrit également comment activer ou désactiver l'optimisation du processeur au démarrage, une fonctionnalité qui augmente temporairement l'allocation de processeur virtuel lors du démarrage de l'instance afin de réduire la latence de démarrage.

Définir et mettre à jour les limites de processeur virtuel

Par défaut, chaque instance est limitée à un processeur virtuel. Vous pouvez modifier cette valeur en choisissant l'une des valeurs indiquées dans le tableau suivant.

Tableau des processeurs virtuels et de la mémoire

Voici les exigences de mémoire pour les processeurs virtuels :

Processeurs Mémoire requise
0,08 processeur virtuel Jusqu'à 512 Mio
0,5 processeur virtuel Jusqu'à 1 Gio
1 processeur virtuel Jusqu'à 4 Gio
2 processeurs virtuels Jusqu'à 8 Gio
4 processeurs virtuels 2 à 16 Gio
6 processeurs virtuels 4 à 24 Gio
8 processeurs virtuels 4 à 32 Gio

Les valeurs supérieures à 1 doivent être des entiers.

Quantité maximale de processeurs virtuels

La quantité maximale de processeurs virtuels que vous pouvez configurer est de 8.

Quantité minimale de processeurs virtuels

Le paramètre minimal de processeur virtuel est de 0,08.

Si vous souhaitez utiliser moins d'un processeur virtuel, vous pouvez sélectionner une valeur comprise entre 0,08 et 1, par incréments de 0,001.

Si vous utilisez moins d'un processeur virtuel, les exigences suivantes sont appliquées :

Paramètre Exigence
Mémoire Un minimum de 0,5 processeur virtuel est nécessaire pour définir une limite de mémoire supérieure à 512 Mio.
Un minimum de 1 processeur virtuel est nécessaire pour définir une limite de mémoire supérieure à 1 Gio.
Simultanéité La simultanéité maximale doit être définie sur 1.
Facturation Les paramètres de facturation doivent être définis sur la facturation basée sur les requêtes.
Environnement d'exécution Vous devez utiliser l'environnement d'exécution de première génération.

Considérations liées au coût

Le coût de votre ressource Cloud Run est affecté par sa configuration de processeur et la durée pendant laquelle elle est active, entre autres facteurs. Le surprovisionnement de vos ressources peut augmenter vos coûts. Pour déterminer la configuration de processeur la plus adaptée à votre ressource :

  1. Établissez une configuration de référence initiale pour une limite de processeur qui équilibre l'utilisation et les coûts du processeur.
  2. Surveillez vos métriques d'utilisation du processeur dans Cloud Monitoring tout en testant le système sous charge.
  3. Ajustez la configuration de votre processeur si nécessaire.

Si l'utilisation du processeur est toujours faible en cas de charge maximale, envisagez de réduire l'allocation de processeurs virtuels. Si la latence est élevée, envisagez d'augmenter l'allocation de processeurs virtuels.

Vous pouvez afficher des données de coût récapitulatives, des données d'utilisation et des recommandations d'optimisation des coûts pour les ressources sur la page Optimisation de Cloud Hub. Pour en savoir plus, consultez les tarifs de Cloud Run ou estimez les coûts à l'aide du simulateur de coût.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Si vous déployez un service ou une fonction à partir du code source, vous devez également disposer de rôles supplémentaires sur votre projet et votre compte de service Cloud Build.

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec Google Cloud des API, telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Configurer les limites de processeur

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez définir des limites de processeur à l'aide de la Google Cloud console, de la ligne de commande gcloud ou d'un fichier YAML lorsque vous créez un service ou déployez une nouvelle révision :

Console

  1. Dans la Google Cloud console, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneurs.

  5. Sélectionnez la limite de processeur dans la liste déroulante, en utilisant Personnalisé si vous souhaitez utiliser moins d'un processeur. Sélectionnez une valeur de 1, 2, 4, 6 ou 8 pour le nombre de processeurs, ou, pour un nombre de processeurs inférieur à 1, spécifiez une valeur comprise entre 0,08 et 1,00, par incréments de 0,01. (Consultez le tableau de la section Définir et mettre à jour des limites de processeur pour connaître les paramètres requis.)

  6. Cliquez sur Créer ou Déployer.

gcloud

Vous pouvez mettre à jour les limites de processeur d'un service donné à l'aide de la commande suivante :

gcloud run services update SERVICE --cpu CPU

Remplacez les éléments suivants :

  • SERVICE : nom de votre service.
  • CPU : limite de processeur souhaitée. Spécifiez une valeur de 1, 2, 4, 6 ou 8 pour le nombre de processeurs, ou, pour un nombre de processeurs inférieur à 1, spécifiez une valeur comprise entre 0,08 et 1,00, par incréments de 0,01. (Consultez le tableau de la section Définir et mettre à jour des limites de processeur pour connaître les paramètres requis.)

Vous pouvez également définir l'allocation de processeurs lors du déploiement en utilisant la commande suivante :

gcloud run deploy --image IMAGE_URL --cpu CPU

Remplacez les éléments suivants :

  • IMAGE_URL: référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • CPU : valeur 1, 2, 4, 6 ou 8 pour le nombre de processeurs, ou, pour un nombre de processeurs inférieur à 1, spécifiez une valeur comprise entre 0,08 et 1,00, par incréments de 0,01. (Consultez le tableau de la section Définir et mettre à jour des limites de processeur pour connaître les paramètres requis.)

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut cpu :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                cpu: CPU

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service Cloud Run.
    • IMAGE_URL: référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • CPU : valeur de limite de processeur souhaitée. Spécifiez une valeur de 1, 2, 4, 6 ou 8 pour le nombre de processeurs, ou, pour un nombre de processeurs inférieur à 1, spécifiez une valeur comprise entre 0,08 et 1,00, par incréments de 0,01. (Consultez le tableau de la section Définir et mettre à jour des limites de processeur pour connaître les paramètres requis.)
    • REVISION : nouveau nom de révision ou supprimez-le (s'il est présent). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
      • Commencer par SERVICE-
      • Ne contenir que des lettres minuscules, des chiffres et -
      • Ne pas se terminer par -
      • Ne pas dépasser 63 caractères
  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    Par défaut, la commande gcloud run services replace utilise le fichier service.yaml s'il est présent.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource dans votre configuration 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"
        }
      }
    }
  }
}

La ressource google_cloud_run_v2_service précédente spécifie une limite de processeur sous template.containers.resources.limits.

Remplacez 1 par le nombre de processeurs souhaité. Astuce : 1 correspond à un processeur virtuel.

Configurer l'optimisation du processeur au démarrage

La fonctionnalité d'optimisation du processeur au démarrage pour les révisions fournit davantage de ressources processeur pendant le temps de démarrage de l'instance et pendant les 10 secondes suivant le démarrage de l'instance.

L'optimisation réelle du processeur varie en fonction des paramètres de limite de votre processeur :

Limite de processeur Processeur optimisé
0-1 2
2 4
4 8
6 8
8 8

La quantité de processeur supplémentaire allouée vous est facturée pendant la durée de démarrage du conteneur. Par exemple, si le temps de démarrage du conteneur est de 15 secondes et que vous allouez deux processeurs, avec l'optimisation du processeur au démarrage, quatre processeurs vous seront facturés pour le temps de démarrage de l'instance (éventuellement plus court), y compris pour les 10 secondes après le démarrage de votre conteneur et pour deux processeurs pendant le reste du cycle de vie du conteneur.

Si votre déploiement Cloud Run utilise des side-cars et que vous activez l'optimisation du processeur au démarrage, tous les conteneurs bénéficient de l'optimisation du processeur. Cloud Run détermine la quantité de processeur optimisée pour chaque conteneur en fonction de la limite de processeur.

Vous pouvez activer ou désactiver l'optimisation du processeur au démarrage à l'aide de la console Google Cloud , Google Cloud CLI, d'un fichier YAML ou d'un fichier Terraform.

Console

  1. Dans la Google Cloud console, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneurs.

  5. Pour activer l'optimisation du processeur au démarrage, cochez la case Optimisation du processeur au démarrage. Pour désactiver cette fonctionnalité, décochez la case.

  6. Cliquez sur Créer ou Déployer.

gcloud

  1. Vous pouvez activer l'optimisation du processeur au démarrage pour un service donné à l'aide de la commande suivante :

    gcloud run services update SERVICE --cpu-boost

    Remplacez SERVICE par le nom du service.

    Vous pouvez activer l'optimisation du processeur au démarrage lors du déploiement à l'aide de la commande suivante :

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

    Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

  2. Vous pouvez désactiver l'optimisation du processeur au démarrage pour un service donné à l'aide de la commande suivante :

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

    Remplacez SERVICE par le nom du service.

    Vous pouvez désactiver l'optimisation du processeur au démarrage lors du déploiement à l'aide de la commande suivante :

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

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut run.googleapis.com/startup-cpu-boost en spécifiant 'true' pour activer l'optimisation du processeur au démarrage ou 'false' pour la désactiver :

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

    Remplacez SERVICE par le nom de votre service Cloud Run.

  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    Par défaut, la commande gcloud run services replace utilise le fichier service.yaml s'il est présent.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource dans votre configuration 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
      }
    }
  }
}

Remplacez les éléments suivants :

  • SERVICE : nom de votre service Cloud Run.
  • REGION : Google Cloud région, par exemple europe-west1.
  • CPU_BOOST : true pour activer l'optimisation du processeur au démarrage ou false pour la désactiver.

Nouveau message

Pour spécifier des limites de processeur dans votre fichier compose.yaml, ajoutez l'attribut cpus à la définition de votre service.

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

Remplacez les éléments suivants :

  • IMAGE : URL de votre image de conteneur.
  • CPU_VALUE : limite de processeur requise, par exemple 2.

Déployer les services

  1. Pour déployer les services, exécutez la commande gcloud run compose up :

    gcloud run compose up compose.yaml
  2. Répondez y à toutes les invites pour installer les composants requis ou activer les API.

  3. Facultatif : Rendez votre service public si vous souhaitez autoriser un accès non authentifié à celui-ci.

Une fois le déploiement terminé, l'URL du service Cloud Run s'affiche. Copiez cette URL et collez-la dans votre navigateur pour afficher le conteneur en cours d'exécution. Vous pouvez désactiver l'authentification par défaut à partir de la Google Cloud console.

Afficher les paramètres du processeur

Pour afficher les paramètres actuels du processeur de votre service Cloud Run, procédez comme suit :

Console

  1. Dans la Google Cloud console, accédez à la page Services de Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.

  3. Cliquez sur l'onglet Historique des révisions.

  4. Dans le panneau de détails sur la droite, le paramètre de processeur est répertorié sous l'onglet Conteneurs.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre de processeur dans la configuration renvoyée.

Threading d'application et utilisation du processeur

Lorsque vous sélectionnez une limite de processeur supérieure à 1, tenez compte du modèle de threading de votre application. Lors de l'autoscaling, Cloud Run utilise l'utilisation moyenne du processeur sur tous les processeurs alloués. Si votre application est monothread, elle ne peut utiliser qu'un seul cœur, ce qui entraîne une faible utilisation moyenne du processeur, même sous charge. Cela peut empêcher l'autoscaling basé sur le processeur de se produire comme prévu.

Pour éviter ce comportement pour une application monothread, si vos exigences de mémoire le permettent, nous vous recommandons de commencer par un processeur virtuel. Cela permet un meilleur autoscaling basé sur le processeur. Si des besoins de mémoire plus importants imposent une sélection multicœur pour une application monothread, envisagez d'ajuster votre paramètre de simultanéité.