Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pratiques exemplaires en matière d’images de conteneur
Suivez ces bonnes pratiques lorsque vous créez des images de conteneur pour HealthOmics flux de travail.
Utilisation de Java dans les images de conteneurs Amazon ECR
Si une tâche de flux de travail utilise une application Java telle que GATK, tenez compte des exigences de mémoire suivantes pour le conteneur :
-
Les applications Java utilisent de la mémoire de pile et de la mémoire de tas. Par défaut, la mémoire maximale du tas est un pourcentage de la mémoire totale disponible dans le conteneur. Cette valeur par défaut dépend de la distribution et de la version de la JVM spécifiques. Consultez donc la documentation appropriée pour votre JVM ou définissez explicitement la mémoire maximale du tas à l'aide des options de ligne de commande Java (telles que
-Xmx). -
Ne définissez pas la mémoire de tas maximale à 100 % de l'allocation mémoire du conteneur, car la pile JVM nécessite également de la mémoire. De la mémoire est également requise pour le ramasse-miettes JVM et tous les autres processus du système d'exploitation exécutés dans le conteneur.
-
Certaines applications Java, telles que GATK, peuvent utiliser des appels de méthodes natifs ou d'autres optimisations telles que des fichiers de mappage de mémoire. Ces techniques nécessitent des allocations de mémoire qui sont effectuées « hors tas », ce que le paramètre de tas maximum de la JVM ne contrôle pas.
Si vous savez (ou pensez) que votre application Java alloue de la mémoire hors tas, assurez-vous que l'allocation de mémoire de vos tâches inclut les exigences en matière de mémoire hors tas.
Si ces allocations hors tas entraînent une pénurie de mémoire dans le conteneur, vous ne voyez généralement pas de code Java
OutOfMemoryerreur, car la JVM ne contrôle pas cette mémoire.
Ajouter des entrées de tâches à une image de conteneur Amazon ECR
Ajoutez tous les exécutables, bibliothèques et scripts nécessaires à l'exécution d'une tâche de flux de travail dans l'image Amazon ECR utilisée pour exécuter la tâche.
Il est recommandé d'éviter d'utiliser des scripts, des fichiers binaires et des bibliothèques externes à l'image du conteneur d'une tâche. Ceci est particulièrement important lors de l'utilisation nf-core flux de travail qui utilisent un bin répertoire dans le cadre du package de flux de travail. Bien que ce répertoire soit disponible pour la tâche de flux de travail, il est monté en tant que répertoire en lecture seule. Les ressources requises de ce répertoire doivent être copiées dans l'image de la tâche et mises à disposition lors de l'exécution ou lors de la création de l'image de conteneur utilisée pour la tâche.
Voir HealthOmics quotas de taille fixe pour le flux de travail pour la taille maximale de l'image du conteneur qui HealthOmics supports.
Utilisez un condensé ou une version au lieu d'une balise pour les images non PTC
Pour les images de conteneurs provenant de registres que l'extraction du cache ne prend pas en charge, tels que Seqera, NVIDIA NGC et Google Artifact Registry, faites référence à un résumé ou à une version au lieu d'une balise telle que latest. HealthOmics copie une image la première fois qu'une tâche en a besoin et n'actualise pas la copie. Ainsi, une balise qui change en amont revient toujours à la copie précédente. Pour plus d’informations, consultez Utilisation de registres tiers non pris en charge par le cache d'extraction.
L'exemple suivant fait référence à une image de Seqera Containers par version et par résumé :
community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd@sha256:a55ddea590e567a91df592300a960aa534cfc1bd16e7623e3938ec21f4f3df15