Améliorer la disponibilité des ressources pour les jobs

Ce document explique comment obtenir des ressources et recommande comment améliorer l'obtention de ressources lorsque vous créez et exécutez des jobs Batch.

Qu'est-ce que l'obtention de ressources ?

L'obtention de ressources correspond à la probabilité que des ressources soient disponibles pour exécuter votre charge de travail. Lorsque les ressources ne sont pas disponibles, votre charge de travail échoue en raison d'erreurs de disponibilité des ressources. L'obtention de ressources est liée à la fiabilité, mais elle en est distincte. La fiabilité correspond à la probabilité que votre charge de travail soit disponible pour ses utilisateurs. (La disponibilité peut signifier l'une ou l'autre de ces deux notions, ou les deux.)

La relation entre l'obtention de ressources et la fiabilité est complexe. Votre charge de travail doit obtenir des ressources pour être fiable. Toutefois, si une flexibilité en termes d'emplacement, de temps et de matériel augmente l'obtention de ressources, la fiabilité n'augmente qu'avec une flexibilité qui répond aux exigences de votre charge de travail. Par exemple, notez les complexités suivantes :

  • Les types de machines hautes performances peuvent être moins disponibles en raison d'une demande plus élevée, mais la fiabilité diminue lorsque votre charge de travail ne dispose pas de performances suffisantes.
  • La flexibilité de l'emplacement augmente l'obtention de ressources, mais les machines à forte allocation améliorent les performances réseau.
  • La flexibilité temporelle augmente l'obtention de ressources, mais une attente excessive peut entraîner des retards inutiles.

Par conséquent, une meilleure obtention de ressources n'est pas toujours préférable. Le niveau optimal d'obtention de ressources varie en fonction de vos priorités et exigences. Par exemple, vous pouvez souhaiter une obtention de ressources plus faible pour réduire les coûts. Même si vous souhaitez privilégier la fiabilité, vous devrez peut-être équilibrer les avantages d'une meilleure obtention de ressources avec les risques de performances plus faibles ou de retards plus importants.

Recommandations pour améliorer l'obtention de ressources pour les jobs

Consultez les sections suivantes pour améliorer l'obtention de ressources pour les jobs Batch :

Recommandations pour toutes les options de consommation

  • Réduisez vos besoins en types de machines volumineux et hautes performances en séparant votre charge de travail. Par exemple, séparez d'abord les opérations nécessitant beaucoup de calcul de celles à faible demande à l'aide de jobs dépendants. Ensuite, réduisez autant que possible les ressources de calcul minimales requises par chaque job en maximisant le traitement parallèle et en minimisant les tâches étroitement couplées.

    En savoir plus sur les jobs dépendants et les ressources de calcul et le parallélisme.

  • Maximisez le nombre d'emplacements autorisés pour les ressources Compute Engine de votre job. Ceci est vrai par défaut. Sauf si vous spécifiez le champ allowedLocations[] pour un job, les ressources Compute Engine du job sont autorisées à s'exécuter dans chaque zone de l'emplacement du job.

    En savoir plus sur les emplacements.

  • Envisagez d'utiliser des stratégies de défaillance rapide avant d'attendre une meilleure obtention de ressources. Pour éviter les retards, envisagez des stratégies de défaillance rapide comme les suivantes :

    • Bien que vous puissiez résoudre les erreurs de disponibilité des ressources en relançant votre requête ultérieurement, il est souvent plus rapide d'essayer d'abord différents emplacements ou matériels.
    • Si vous êtes prêt à utiliser plusieurs options de consommation, il est souvent plus rapide d'essayer d'abord les options de consommation sans délai : réservations à la demande, à la demande et VM Spot.
    • Pour les nouvelles charges de travail que vous prévoyez de répéter, vous pouvez accélérer les tests et le dépannage initiaux en utilisant temporairement des options plus rapides à obtenir.

Recommandations basées sur l'option de consommation

L'option de consommation que vous sélectionnez est un facteur principal pour l'obtention de ressources d'un job. Cette section résume brièvement chaque option de consommation et recommande comment optimiser l'obtention de ressources pour chaque option de consommation.

Les options de consommation suivantes sont classées de la plus haute à la plus basse obtention de ressources :

  • Pour les charges de travail avec des exigences élevées en matière d'obtention de ressources, utilisez des réservations. Les réservations offrent un niveau d'assurance plus élevé pour l'obtention de capacité que toutes les autres options de consommation. Pour utiliser la capacité réservée, créez d'abord des réservations existantes que vous pouvez utiliser ou identifiez-les. Ensuite, configurez les instances pour qu'elles utilisent cette capacité réservée. Contrairement aux autres options de consommation, les instances réservées entraînent des coûts même lorsqu'elles ne sont pas utilisées tant que vous ne les supprimez pas, en raison de leur assurance de capacité. Lorsque vous envisagez l'obtention de ressources, choisissez entre les types de réservations suivants :

    • Pour exiger une capacité réservée, utilisez une réservation spécifiquement ciblée. Ces réservations permettent de vérifier plus facilement que la capacité réservée est disponible et utilisable par votre charge de travail. Chaque fois que la capacité réservée n'est pas disponible et compatible, votre charge de travail échoue et renvoie une erreur. Une réservation spécifiquement ciblée inclut toutes les réservations pour le modèle de provisionnement RESERVATION_BOUND et certaines réservations pour le modèle de provisionnement STANDARD.

      Découvrez comment créer un job qui utilise des réservations.

    • Pour une capacité réservée facultative, utilisez une réservation consommée automatiquement et utilisez la flexibilité des instances (preview). Ces options de réservation offrent des niveaux élevés d'assurance pour l'obtention de capacité, mais uniquement lorsque la capacité réservée que votre charge de travail peut consommer est disponible. Pour les réservations consommées automatiquement, vous devez spécifier le modèle de provisionnement STANDARD et vérifier manuellement que la capacité réservée est disponible et correspond à la configuration d'instance de votre charge de travail. Chaque fois que la capacité réservée n'est pas disponible ou ne correspond pas, votre charge de travail tente d'utiliser la capacité à la demande. Toutefois, contrairement aux réservations spécifiquement ciblées, vous pouvez utiliser la flexibilité des instances avec des réservations consommées automatiquement pour permettre à votre charge de travail de tenter d'utiliser plusieurs réservations consommées automatiquement.

      Découvrez comment créer un job qui utilise des réservations et la flexibilité des instances (preview).

  • Pour les charges de travail avec des exigences moyennes en matière d'obtention de ressources, utilisez la capacité à la demande avec la flexibilité des instances (preview) ou les VM à démarrage flexible. Choisissez entre ces options comme suit :

    • Sauf si votre type de machine appartient à la série de machines A3 ou n'est pas compatible, envisagez d'utiliser la capacité à la demande avec la flexibilité des instances (preview). L'option de consommation à la demande nécessite le modèle de provisionnement STANDARD (par défaut). Sauf si vous bloquez explicitement la consommation de réservations, votre charge de travail tente également de consommer des réservations consommées automatiquement par défaut. Nous ne recommandons pas l'option à la demande pour la série de machines A3.

      Découvrez comment créer un job qui utilise le modèle de provisionnement standard et la flexibilité des instances (preview).

    • Sinon, ou si la capacité à la demande n'est pas disponible de manière répétée, envisagez d'utiliser des VM à démarrage flexible. Pour utiliser l'option de consommation des VM à démarrage flexible, spécifiez le modèle de provisionnement FLEX_START. Les VM à démarrage flexible nécessitent que votre charge de travail puisse supporter un temps d'attente et une durée d'exécution limitée, mais offrent également des remises grâce à la tarification du programmeur de charge de travail dynamique.

      Découvrez comment créer un job qui utilise des VM à démarrage flexible.

  • Pour les charges de travail avec des exigences faibles en matière d'obtention de ressources, utilisez des VM Spot avec plusieurs fonctionnalités d'obtention de ressources. Pour utiliser l'option de consommation des VM Spot, spécifiez le modèle de provisionnement SPOT. Les VM Spot ne sont pas toujours disponibles et peuvent être préemptées à tout moment. Elles ne sont donc recommandées que pour les charges de travail tolérantes aux pannes, mais peuvent offrir les remises les plus importantes grâce à la tarification des VM Spot.

    Nous vous recommandons généralement de consulter la disponibilité des VM Spot avant de les créer et de vérifier que votre charge de travail peut gérer la préemption. Ensuite, pour améliorer l'obtention de ressources des VM Spot dans les jobs Batch, nous vous recommandons d'utiliser la flexibilité des instances avec plusieurs types de machines du même niveau (preview) et d'utiliser les nouvelles tentatives automatiques pour tenter de recréer les VM Spot après la préemption.

    Découvrez comment afficher la disponibilité des VM Spot et gérer la préemption des VM Spot dans la documentation Compute Engine. Découvrez ensuite comment créer un job qui utilise le modèle de provisionnement des VM Spot, la flexibilité des instances (preview) et les nouvelles tentatives automatiques pour la préemption.

Étape suivante

  • En savoir plus sur les options de création de jobs