View a markdown version of this page

Best practice per le immagini dei container - AWS HealthOmics

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Best practice per le immagini dei container

Segui queste best practice quando crei immagini di contenitori per HealthOmics flussi di lavoro.

Utilizzo di Java nelle immagini dei contenitori Amazon ECR

Se un'attività del flusso di lavoro utilizza un'applicazione Java come GATK, considera i seguenti requisiti di memoria per il contenitore:

  • Le applicazioni Java utilizzano la memoria stack e la memoria heap. Per impostazione predefinita, la memoria heap massima è una percentuale della memoria totale disponibile nel contenitore. Questa impostazione predefinita dipende dalla distribuzione JVM specifica e dalla versione JVM, quindi consultate la documentazione pertinente per la vostra JVM o impostate esplicitamente la memoria massima dell'heap utilizzando le opzioni della riga di comando Java (come -Xmx).

  • Non impostate la memoria heap massima al 100% dell'allocazione di memoria del contenitore, poiché anche lo stack JVM richiede memoria. La memoria è richiesta anche per il garbage collector JVM e per qualsiasi altro processo del sistema operativo in esecuzione nel contenitore.

  • Alcune applicazioni Java, come GATK, possono utilizzare invocazioni di metodi nativi o altre ottimizzazioni come i file di mappatura della memoria. Queste tecniche richiedono allocazioni di memoria eseguite «off-heap», che il parametro heap massimo di JVM non controlla.

    Se sai (o sospetti) che la tua applicazione Java alloca memoria off-heap, assicurati che l'allocazione della memoria dell'attività includa i requisiti di memoria off-heap.

    Se queste allocazioni off-heap causano l'esaurimento della memoria del contenitore, in genere non viene visualizzato un codice Java OutOfMemory errore, perché la JVM non controlla questa memoria.

Aggiungi gli input delle attività a un'immagine del contenitore Amazon ECR

Aggiungi tutti gli eseguibili, le librerie e gli script necessari per eseguire un'attività del flusso di lavoro nell'immagine Amazon ECR utilizzata per eseguire l'attività.

È consigliabile evitare di utilizzare script, file binari e librerie esterni all'immagine del contenitore di un'attività. Ciò è particolarmente importante quando si utilizza nf-core flussi di lavoro che utilizzano un bin directory come parte del pacchetto di workflow. Sebbene questa directory sia disponibile per l'attività del flusso di lavoro, è montata come directory di sola lettura. Le risorse necessarie in questa directory devono essere copiate nell'immagine dell'attività e rese disponibili in fase di esecuzione o durante la creazione dell'immagine del contenitore utilizzata per l'attività.

Vedi HealthOmics quote a dimensione fissa del flusso di lavoro per la dimensione massima dell'immagine del contenitore che HealthOmics supporta.

Utilizzate un digest o una versione anziché un tag per immagini non PTC

Per le immagini contenitore provenienti da registri che l'estrazione dalla cache non è supportata, come Seqera, NVIDIA NGC e Google Artifact Registry, fate riferimento a un digest o a una versione anziché a un tag come latest. HealthOmics copia un'immagine la prima volta che un'operazione ne ha bisogno e non aggiorna la copia, quindi un tag che cambia a monte continua a tornare alla copia precedente. Per ulteriori informazioni, consulta Utilizzo di registri di terze parti non supportati dalla cache pull through.

L'esempio seguente fa riferimento a un'immagine Seqera Containers per versione e digest:

community.wave.seqera.io/library/htslib_samtools:1.24--d697cfb9dce007cd@sha256:a55ddea590e567a91df592300a960aa534cfc1bd16e7623e3938ec21f4f3df15