Configurer les limites de mémoire

Découvrez comment définir des limites de mémoire pour vos instances de conteneur dans Knative serving.

Comprendre l'utilisation de la mémoire

Les instances de conteneur Knative serving qui dépassent la limite de mémoire autorisée sont arrêtées.

Les opérations suivantes sont comptabilisées dans la mémoire disponible de votre instance de conteneur :

  • Exécution de l'exécutable de l'application (car l'exécutable doit être chargé en mémoire)
  • Allocation de mémoire dans votre processus d'application
  • Écriture des fichiers dans le système de fichiers

La taille de l'image de conteneur déployée n'est pas comptabilisée dans la mémoire disponible.

Quantité maximale de mémoire

La quantité maximale de mémoire que vous pouvez configurer est limitée par la configuration de votre cluster GKE.

Optimiser la mémoire

Vous pouvez déterminer la quantité de mémoire maximale requise pour un service à l'aide des éléments suivants : (mémoire permanente) + (mémoire par requête) * (simultanéité des services).

En conséquence :

  • Si vous augmentez la simultanéité de votre service, vous devez également augmenter la limite de mémoire afin de prendre en compte les pics d'utilisation.

  • Si vous réduisez la simultanéité de votre service, envisagez de réduire la limite de mémoire pour économiser sur les coûts d'utilisation de la mémoire.

Pour plus de conseils sur la réduction de l'utilisation de la mémoire par requête, lisez les Conseils de développement sur les variables globales.

Définir et mettre à jour des limites de mémoire

Toute modification 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 mémoire à l'aide de la console Google Cloud, de Google Cloud CLI ou d'un fichier YAML lorsque vous déployez un nouveau service ou lorsque vous mettez à jour un service existant et déployez une révision :

Console

  1. Accédez à Knative serving dans la console Google Cloud :

    Accéder à Knative serving

  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. Sous Paramètres avancés, cliquez sur Conteneur.

  4. Sélectionnez la taille de mémoire souhaitée dans la liste déroulante Mémoire allouée.

  5. Cliquez sur Next (Suivant) pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur Knative serving et attendez la fin du déploiement.

Ligne de commande

  • Pour les services existants, mettez à jour la limite de mémoire en exécutant la commande gcloud run services update avec le paramètre --memory :

    gcloud run services update SERVICE --memory SIZE

    Remplacez :

    • SERVICE par le nom de votre service ;
    • SIZE par la taille de mémoire souhaitée. Le format de la taille est un nombre fixe ou à virgule flottante suivi d'une unité : G, M ou K correspondant respectivement au gigaoctet, au mégaoctet ou au kilo-octet, ou qui utilise des équivalents en puissance de deux : Gi, Mi, Ki correspondant respectivement au gibioctet, au mébioctet ou au kibioctet.
  • Pour les nouveaux services, définissez la limite de mémoire en exécutant la commande gcloud run deploy avec le paramètre --memory :

    gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE

    Remplacez :

    • SERVICE par le nom de votre service ;
    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello ;
    • SIZE par la taille de mémoire souhaitée. Le format de la taille est un nombre fixe ou à virgule flottante suivi d'une unité : G, M ou K correspondant respectivement au gigaoctet, au mégaoctet ou au kilo-octet, ou qui utilise des équivalents en puissance de deux : Gi, Mi, Ki correspondant respectivement au gibioctet, au mébioctet ou au kibioctet.

YAML

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service Knative serving.

  2. Dans votre fichier local, mettez à jour l'attribut memory :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
    image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    Remplacez SIZE par la taille de mémoire souhaitée. Le format est un nombre fixe ou à virgule flottante suivi d'une unité : G, M ou K correspondant respectivement au gigaoctet, au mégaoctet ou au kilo-octet, ou qui utilise des équivalents en puissance de deux : Gi, Mi, Ki correspondant respectivement au gibioctet, au mébioctet ou au kibioctet.

  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml