Allocation du processeur (services)

Par défaut, l'allocation de processeur aux instances Cloud Run ne se fait que lors du traitement des requêtes et du démarrage et de l'arrêt des conteneurs (reportez-vous à la section Cycle de vie de l'instance). Vous pouvez modifier ce comportement de sorte que le processeur soit toujours alloué et disponible même en l'absence de requêtes entrantes. Il peut être utile de définir l'allocation systématique du processeur pour exécuter des tâches de courte durée en arrière-plan et d'autres tâches de traitement asynchrones.

Illustration des modes d'allocation de processeurs

Même si le processeur est toujours alloué, l'autoscaling Cloud Run est toujours appliqué et peut mettre fin aux instances si elles ne sont pas nécessaires pour gérer le trafic entrant ou l'utilisation actuelle de processeur sans lien avec les requêtes. Une instance ne reste jamais inactive plus de 15 minutes après le traitement d'une requête, sauf si elle reste active en utilisant un nombre minimal d'instances.

Combiner le processeur toujours alloué avec un certain nombre minimal d'instances résulte en l'exécution d'un certain nombre d'instances avec un accès complet aux ressources de processeur, ce qui permet des cas d'utilisation du traitement en arrière-plan. Lorsque vous utilisez ce modèle, Cloud Run applique l'autoscaling des instances même si un service utilise un processeur sans lien avec les requêtes.

Si vous utilisez des vérifications d'état, le processeur est alloué à chaque vérification. Reportez-vous aux vérifications de l'état des conteneurs pour plus d'informations sur la facturation.

Impact sur les tarifs

Si vous choisissez de n'allouer le processeur que lors du traitement des requêtes, vous êtes facturé par requête et seulement lorsque l'instance traite une requête. Si vous choisissez le paramètre CPU toujours alloué, le cycle de vie complet de l'instance vous est facturé. Pour en savoir plus, consultez les grilles tarifaires de Cloud Run.

L'outil de recommandation de Google examine automatiquement le trafic reçu par votre service Cloud Run au cours du mois passé et recommande de passer du processeur alloué lors du traitement des requêtes au processeur toujours alloué, si cela est moins cher.

Choisir la bonne allocation de processeurs

Le choix de l'allocation de processeurs adaptée à votre cas d'utilisation dépend de plusieurs facteurs, tels que les modèles de trafic, l'exécution en arrière-plan et les coûts, chacun d'entre eux étant décrit dans les sections suivantes.

Remarques concernant les modèles de trafic

  • L'utilisation d'un processeur uniquement lors du traitement des requêtes est recommandée lorsque le trafic entrant est sporadique, intensif ou irrégulier.
  • L'utilisation d'un processeur toujours alloué est recommandée lorsque le trafic entrant est constant et varie lentement.

Considérations sur l'exécution en arrière-plan

La sélection de Processeur toujours alloué vous permet d'exécuter des tâches de courte durée en arrière-plan et d'effectuer d'autres tâches de traitement asynchrone après avoir renvoyé des réponses. Exemple :

  • Exploiter des agents de surveillance tels qu'OpenTelemetry, qui peuvent supposer qu'ils peuvent s'exécuter en arrière-plan
  • Utiliser les goroutines Go, asynchrones Node.js, les threads Java et les coroutines Kotlin
  • Utilisation de frameworks d'application qui reposent sur des fonctionnalités de planification et d'arrière-plan intégrées

Les instances inactives, y compris celles qui sont gardées en attente en utilisant un nombre minimal d'instances, peuvent être arrêtées à tout moment. Si vous devez terminer des tâches en cours avant l'arrêt du conteneur, vous pouvez intercepter le signal SIGTERM pour accorder un délai de grâce de 10 secondes à une instance avant son arrêt.

Envisagez d'utiliser Cloud Tasks pour exécuter des tâches asynchrones. Cloud Tasks relance automatiquement les tâches ayant échoué et accepte des temps d'exécution allant jusqu'à 30 minutes.

Considérations liées au coût

Si vous utilisez actuellement le processeur uniquement alloué pendant le traitement des requêtes, le processeur toujours alloué est probablement plus économique dans les cas suivants :

  • Votre service Cloud Run traite un grand nombre de requêtes en cours à un rythme relativement régulier.
  • Vous ne voyez pas beaucoup d'instances "inactives" lorsque vous consultez la métrique de comptage d'instances.

Vous pouvez utiliser le simulateur de coût pour estimer les différences de coût.

Scaling à partir de zéro du processeur toujours alloué

Le scaling à partir de zéro ne peut être déclenché que par une requête. Par conséquent, un service qui ne traite pas de requêtes ne peut pas effectuer de scaling à partir de zéro. Pour ces charges de travail, vous pouvez définir un nombre minimal d'instances supérieur à 0 ou inclure une "requête de démarrage" dans votre conception pour redémarrer le traitement après un scaling à zéro instance.

Scaling à zéro instance du processeur toujours alloué

Étant donné qu'aucune instance n'utilise 0 % du processeur, examiner toute l'utilisation du processeur entraînerait un scaling à zéro instance. Cela signifie que la décision de passer de un à zéro ne peut être prise qu'en vérifiant si l'instance traite une requête.

Définir et mettre à jour l'allocation du 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.

Si vous choisissez l'option de processeur toujours alloué, vous devez spécifier au moins 512 Mio de mémoire.

Par défaut, le processeur n'est alloué que pendant le traitement des requêtes pour chaque instance de conteneur. Vous pouvez modifier cette valeur par défaut à l'aide de la console Google Cloud, 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 console Google Cloud, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    image

    • Sélectionnez l'allocation de processeur souhaitée sous CPU allocation and pricing (Allocation du processeur et tarification). Sélectionnez CPU is only allocated during request processing (Le processeur n'est alloué que lors du traitement des requêtes) pour que vos instances ne se voient allouées le processeur que lorsqu'elles reçoivent des requêtes. Sélectionnez CPU is always allocated (Le processeur est toujours alloué) pour allouer le processeur pendant toute la durée de vie des instances.
  5. Cliquez sur Créer ou Déployer.

Command line

Vous pouvez mettre à jour l'allocation du processeur. Pour configurer les processeurs sur une allocation systématique pour un service donné :

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

Remplacez SERVICE par le nom du service.

Pour définir l'allocation de processeurs uniquement pendant le traitement des requêtes, procédez comme suit :

gcloud run services update SERVICE --cpu-throttling 

Vous pouvez également définir l'allocation du processeur pendant le déploiement. Pour configurer les processeurs sur une allocation systématique :

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

Pour définir l'allocation de processeurs uniquement pendant le traitement des requêtes, procédez comme suit :

gcloud run deploy --image IMAGE_URL --cpu-throttling

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 se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration :

    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:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Remplacez

    • SERVICE par le nom de votre service Cloud Run
    • BOOLEAN par true pour définir l'allocation du processeur uniquement lors du traitement des requêtes ou par false pour définir le processeur à toujours alloué.
    • REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). 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. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

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

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_service dans votre configuration Terraform, sous template.containers.resources.

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

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Afficher les paramètres d'allocation de processeur

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

Console

  1. Dans la console Google Cloud, accédez à 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 Révisions.

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

Command line

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre d'allocation de processeurs dans la configuration renvoyée.