Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Kurzlebiger Speicher für Workflow-Aufgaben HealthOmics
HealthOmics stellt mithilfe des Verzeichnisses kurzlebigen Speicher für Workflow-Aufgaben bereit. /tmp Dieser Speicher ist temporär und für jede Aufgabe in einem Workflow einzigartig. HealthOmics weist jeder Task-Instanz standardmäßig 16 GiB kurzlebigen Speicher zu. Sie können die Menge an temporärem Speicher, der einzelnen Aufgaben in Ihrer Workflow-Definition zugewiesen ist, auf bis zu 3.072 GiB pro Aufgabe erhöhen. Alle Daten, die in gespeichert sind, sind im Ruhezustand /tmp verschlüsselt.
Themen
Wichtigste Vorteile
-
Schnellere Ausführung von Aufgaben: Kurzlebiger Speicher kann die Rechenleistung verbessern, indem das gemeinsam genutzte Dateisystem reduziert wird. I/O
-
Vorhersehbare Leistung: Aufgaben konkurrieren nicht mit anderen gleichzeitig ausgeführten Aufgaben um I/O Bandbreite, wodurch die Variabilität und Drosselung, die mit einem gemeinsam genutzten Netzwerkdateisystem einhergehen, reduziert werden.
-
Niedrigere Kosten: Eine schnellere Ausführung von Aufgaben reduziert direkt die Rechenzeit und die Kosten für I/O gebundene Aufgaben, die von
/tmpBei Läufen, die Static Run Storage verwenden, kann dies die Menge an bereitgestelltem Run-Speicher reduzieren, den Sie benötigen. Dynamische Läufe erfordern keine Änderungen.
So funktioniert kurzlebiger Speicher
Wenn Sie kurzlebigen Speicher aktivieren, wird /tmp für jede HealthOmics Workflow-Aufgabeninstanz ein dediziertes lokales Speichervolume bereitgestellt. Kurzlebiger Speicher ist für temporäre Dateien vorgesehen, die bei der Ausführung von Aufgaben generiert werden. Kurzlebige Speichervolumes werden immer gelöscht, wenn die Aufgabe beendet wird. Daten, auf die geschrieben /tmp wird, werden nicht dauerhaft gespeichert, exportiert oder sind nicht für andere Aufgaben oder nachfolgende Ausführungen zugänglich.
Wo Workflows temporäre Dateien schreiben
Workflows profitieren von flüchtigem Speicher, wenn Aufgabenprozesse direkt auf Scratch I/O zugreifen. /tmp Workflow-Sprachen der Bioinformatik verwenden das /tmp Verzeichnis (und die $TMPDIR Umgebungsvariablen) für temporäre$TMP, kurzlebige Zwischendateien während der Aufgabenausführung. Stellen Sie sicher, dass Ihre Aufgabenbefehle keinem anderen Speicherort $TMPDIR zugeordnet sind.
Workflow-Aufgabenprozesse, bei denen /tmp automatisch kurzlebigen Speicher verwendet wird, wenn sie aktiviert sind, sodass keine Workflow-Änderungen erforderlich sind. Workflows, die Scratch-Prozesse nicht explizit dazu anweisen, /tmp schreiben Scratch-Daten in das Arbeitsverzeichnis auf dem gemeinsam genutzten Dateisystem, das für die Run-Speicherung verwendet wird, obwohl die verwendeten Tools möglicherweise die Vorteile von /tmp flüchtigem Speicher nutzen.
Verschlüsselung im Ruhezustand
Der gesamte kurzlebige Speicher wird im Ruhezustand mithilfe eines vom Service verwalteten Schlüssels verschlüsselt. AWS KMS Accelerated Computing-Instances sind hardwareverschlüsselt und verfügen über einen eindeutigen Schlüssel pro Volume, der gelöscht wird, wenn die Instance beendet wird.
Berechtigungen
HealthOmics verwaltet die Zuordnung und den Lebenszyklus von kurzlebigen Speichervolumes in Ihrem Namen. Für Ihre Aufgabenausführungsrolle sind keine zusätzlichen IAM-Berechtigungen erforderlich.
Ephemeren Speicher aktivieren
Sie können Scratch in I/O den lokalen Speicher umleiten, indem Sie dies scratchStorageMode in der StartRun API festlegen. Die scratchStorageMode Einstellung gilt nur für CPU-Instanzen und gilt für alle Aufgaben in diesem Lauf.
scratchStorageModebestimmt, wohin Ihr Workflow Scratch-Daten schreibt. Mögliche Werte:
-
LOCAL— Kurzlebiger Speicher befindet sich auf einer lokalen Festplatte. Scratch I/O verfügt über dedizierte IOPS und Durchsatz. -
SHARED— Das gemeinsam genutzte Dateisystem wird verwendet (Standard). Scratch I/O kämpft mit dem Arbeitsverzeichnis.
Weitere Informationen finden Sie unter Starte einen Lauf in HealthOmics.
Anmerkung
GPU-Aufgaben verwenden immer lokalen kurzlebigen NVMe-Speicher für Scratch-Daten und scratchStorageMode immer LOCAL für GPU-Aufgaben.
Entscheiden Sie sich für kurzlebigen Speicher
Um kurzlebigen Speicher für einen Lauf zu aktivieren, stellen Sie ihn auf ein, LOCAL wenn Sie scratchStorageMode den Lauf starten.
aws omics start-run \ --workflow-idworkflow-id\ --role-arnarn:aws:iam::123456789012:role/OmicsServiceRole\ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --parameters file:///path/to/parameters.json\ --scratch-storage-mode LOCAL
Geben Sie bei Batchausführungen den Wert ein. scratchStorageMode defaultRunSetting Die Einstellung gilt für jeden Lauf im Stapel.
aws omics start-run-batch \ --batch-name "my-batch" \ --default-run-setting '{ "workflowId": "workflow-id", "roleArn": "arn:aws:iam::123456789012:role/OmicsServiceRole", "outputUri": "s3://amzn-s3-demo-bucket/output-folder/", "storageType": "DYNAMIC", "parameters": {"referenceUri": "s3://amzn-s3-demo-bucket/reference.fasta"}, "scratchStorageMode": "LOCAL" }' \ --batch-run-settings '{ "inlineSettings": [ { "runSettingId": "sample-A", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleA.fastq"} }, { "runSettingId": "sample-B", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleB.fastq"} } ] }'
Deaktivieren Sie den kurzlebigen Speicher
Um kurzlebigen Speicher für einen bestimmten Lauf zu deaktivieren (z. B. um einen Fehler zu isolieren), setzen Sie auf. scratchStorageMode SHARED
aws omics start-run \ --workflow-idworkflow-id\ --role-arnarn:aws:iam::123456789012:role/OmicsServiceRole\ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --scratch-storage-mode SHARED
Wenn dies der SHARED Fall scratchStorageMode ist, werden alle disk und gleichwertige Anweisungen in der Workflow-Definition ignoriert und /tmp vom gemeinsam genutzten Dateisystem unterstützt. Diese Einstellung gilt nur für CPU-Instanzen. GPU-Aufgaben verwenden immer lokalen kurzlebigen NVMe-Speicher und können nicht deaktiviert werden.
Überprüfen Sie den effektiven Modus
Der kurzlebige Speicher ist standardmäßig ausgeschaltet. Wenn in einer StartRun Anfrage weggelassen scratchStorageMode wird, scratchStorageMode ist es auf SHARED (Standard) gesetzt.
scratchStorageModewird in der GetRun Antwort nur zurückgegeben, wenn es in der StartRun Anfrage explizit übergeben wurde. SHAREDist der Standardwert, wenn er weggelassen wird. Rufen Sie GetRun auf, um den effektiven Speichermodus für einen Lauf zu bestätigen.
aws omics get-run --idrun-id
Standard-Speicherzuweisung
Die standardmäßige Zuweisung von temporärem Speicher beträgt 16 GiB pro Aufgabe für alle Standard-, Compute- und Memory-optimized Instance-Typen. Sie müssen keine disk Direktive angeben, um diese Standardeinstellung zu erhalten. Verwenden Sie die disk Direktive, um zusätzlichen Speicher zu konfigurieren. Sie können die Menge an temporärem Speicher, der einzelnen Aufgaben in Ihrer Workflow-Definition zugewiesen ist, auf bis zu 3.072 GiB pro Aufgabe erhöhen. Ihnen wird Speicherplatz über den standardmäßigen 16 GiB in Rechnung gestellt.
Kurzlebiger Speicher kann in Schritten von 16 GiB konfiguriert werden. Weitere Informationen finden Sie unter Unterstützte Größen.
Kurzlebiger Speicher für beschleunigte Recheninstanzen
Die Speicherkapazität für GPU-Instances ist pro Instance-Typ festgelegt und wird ohne zusätzliche Kosten bereitgestellt.
GPU-Aufgaben verwenden immer lokalen kurzlebigen NVMe-Speicher. Die scratchStorageMode Einstellung on gilt StartRun nicht für GPU-Aufgaben und die Einstellung dieses Werts auf hat keine Auswirkungen auf GPU-Instanzen. SHARED Die Kapazität ist pro Instanztyp festgelegt und kann nicht mithilfe der disk Direktive angepasst werden. Die NVMe-Kapazität wird durch den Instanztyp, der für die Aufgabe ausgewählt wurde cpumemory, und acceleratorType durch die Anforderungen vorgegeben.
| Größe | GPUs | vCPU | Arbeitsspeicher (GiB) | G4dn NVMe (T4) | G5 NVMe (A10G) | G6 NVMe (L4) | G6e NVMe (L40S) |
|---|---|---|---|---|---|---|---|
| xlarge | 1 | 4 | 16 | 125 GiB | 250 GiB | 250 GiB | 250 GiB |
| 2xlarge | 1 | 8 | 32 | 225 GiB | 450 GiB | 450 GiB | 450 GiB |
| 4xlarge | 1 | 16 | 64 | 225 GiB | 600 GiB | 600 GiB | 600 GiB |
| 8xlarge | 1 | 32 | 128 | 900 GiB | 900 GiB | 900 GiB | 900 GiB |
| 12xlarge | 4 | 48 | 192 | 900 GiB | 3.800 GiB | 3.760 GiB | 3.800 GiB |
| 16xlarge | 1 | 64 | 256 | 900 GiB | 1.900 GiB | 1.880 GiB | 1.900 GiB |
| 24xlarge | 4 | 96 | 384 | — | 3.800 GiB | 3.760 GiB | 3.800 GiB |
Konfiguration der kurzlebigen Speichergröße
Wenn auf gesetzt scratchStorageMode istLOCAL, können Sie mithilfe der disk Direktive (oder einer gleichwertigen Anweisung) in Ihrer Workflow-Definition eine Erhöhung des temporären Speichers pro Aufgabe anfordern. HealthOmics behandelt die disk Direktive als Hinweis und stellt ein Volumen bereit, das auf die nächsten 16 GiB gerundet ist. Die Verwendung der disk Direktive hat keinen Einfluss auf die Auswahl des Instanztyps. Der Instanztyp wird ausschließlich auf der Grundlage von cpumemory, und ausgewähltacceleratorType. Weitere Informationen finden Sie unter Aufgabenressourcen in einer HealthOmics Workflow-Definition.
Wenn keine disk Direktive vorhanden ist, erhält die Aufgabe die Standardeinstellung von 16 GiB. Aufgaben können nicht weniger als den standardmäßigen kurzlebigen Speicher haben.
Sie müssen die Größe Ihres temporären Speichers nicht für gepullte Container-Images festlegen, da diese separat berücksichtigt werden. Weitere Informationen finden Sie unter Container-Images für private Workflows.
Wann sollte die Festplatten-Direktive verwendet werden
Verwenden Sie die disk Direktive in Ihrer Aufgabendefinition, wenn der standardmäßige kurzlebige Speicher für den von Ihnen ausgewählten Instance-Typ für Ihre Aufgabenanforderungen nicht ausreicht. Zum Beispiel, wenn eine Aufgabe große Datenmengen schreibt. /tmp
Häufige Anwendungsfälle für flüchtiger Speicher
-
RNA-Seq Fusionserkennung: RNA-seq Workflows generieren große Zwischen-BAMs, und bei Aufgabenprozessen müssen häufig sowohl die rohen FASTQs als auch die ausgerichteten Ausgaben gleichzeitig vorhanden sein, was große Scratch-Disks erfordert (z. B. 512 GiB pro Aufgabe).
-
De Novo Genome Long-read Assembly: Assembly-Workflows benötigen große Scratch-Volumes, um Rohlesevorgänge und temporäre Assembly-Artefakte zu verarbeiten, die vor der Ausgabe wiederholt umgeschrieben und neu organisiert werden. Diese Aufgaben sind speicher- und festplattenintensiv und erfordern manchmal mehrere TiB flüchtigen Speichers.
-
Variantenaufruf//BAM-Verarbeitung: Workflows für Variantenaufrufe benötigen viel Speicherplatz für Ausrichtungs- und Sortierschritte, bei denen große BAM- oder CRAM-Dateien wiederholt gelesen und neu geschrieben werden. Der Bedarf an kurzlebigem Speicher liegt in der Regel bei Hunderten von GiB.
Syntax der Direktiven nach Engine
Die folgende Tabelle zeigt die entsprechende Anweisung für jede Workflow-Sprache.
| Engine | Richtlinie | Beispiel |
|---|---|---|
| WDL 1.1 | disks |
disks: "/tmp 700 GiB" |
| Nächster Ablauf | disk |
disk '700 GB' |
| CWL | tmpdirMin |
tmpdirMin: 716800(Wert in MiB) |
Die folgenden Beispiele zeigen, wie eine Aufgabe konfiguriert wird, die 700 GiB kurzlebigen Speicher anfordert. HealthOmics rundet dies auf die 704-GiB-Stufe auf.
Weitere Informationen zur unterstützten Direktivensyntax finden Sie unter Besonderheiten der WDL-Workflow-Definition undEinzelheiten der Nextflow-Workflow-Definition.
Gängige Bioinformatik-Tools und kurzlebiger Speicher
Viele Bioinformatik-Tools schreiben während der Ausführung große temporäre Dateien. Wenn auf gesetzt scratchStorageMode istLOCAL, werden diese Tools /tmp so umgeleitet, dass Scratch auf I/O das schnelle lokale Volume und nicht auf das Shared Run-Dateisystem übertragen wird. Die folgenden Beispiele zeigen die relevanten Flags für häufig verwendete Tools.
Unterstützte Größen
Angeforderte Größen werden auf das nächste 16-GiB-Inkrement aufgerundet, beginnend mit der Standardeinstellung von 16 GiB (16, 32, 48, 64,... bis zu 3.072 GiB). Die maximal unterstützte Größe beträgt 3.072 GiB pro Aufgabe.
Wenn eine angeforderte Größe 3.072 GiB überschreitet, werden HealthOmics 3.072 GiB bereitgestellt und eine Warnung in das Ausführungsprotokoll geschrieben. Die Aufgabe schlägt nicht automatisch fehl.
Anmerkung
Bei auf Ausdrücken basierenden disk Direktiven — wie Nextflow-Closures oder WDL-Ausdrücken wie disks: ceil(size(input_bam, "GiB") * 2.5) — wird der Wert zur Laufzeit ausgewertet, nicht bei. CreateWorkflow Wenn die berechnete Größe 3.072 GiB überschreitet, schlägt die Aufgabe zur Laufzeit fehl und alle bis zu diesem Zeitpunkt angefallenen Rechenkosten werden in Rechnung gestellt.
Unterstützte WDL-Festplatten
Eine vollständige Liste der akzeptierten disks WDL-Formulare finden Sie unter. Unterstützte WDL-Festplatten
Verwenden der Nextflow-Scratch-Direktive
Für Nextflow-Workflows können Sie die scratch Direktive verwenden, um zu kontrollieren, wo Prozesse temporäre Arbeitsdateien schreiben. Hinweise zu unterstützten Werten und zur empfohlenen Verwendung mit flüchtigem Speicher finden Sie unter. Effiziente Nutzung von Scratch-Speicher in Nextflow
Überwachung kurzlebigen Speichers
HealthOmics schreibt Metriken für ephemeren Speicher pro Aufgabe in Manifestprotokolle. CloudWatch Zu den Metriken gehören kurzlebige Speicherdaten pro Aufgabe zur Größe (enscratchStorageReservedGiB) und Nutzung (en) des bereitgestellten Volumes für jede Aufgabe. scratchStorageUtilizedGiB Prüfen Sie ohne direkte Abfrage anhand des Manifestprotokolls, ob Aufgaben zu viel oder zu wenig bereitgestellt wurden. CloudWatch Einzelheiten zu Manifestprotokollen finden Sie unter. Überwachung HealthOmics mit CloudWatch Protokollen
Wie wird kurzlebiger Speicher abgerechnet
Ihnen wird nur der kurzlebige Speicher in Rechnung gestellt, der über der Standardzuweisung bereitgestellt wurde. Anfragen, die über dem in Ihrer disk Anweisung angegebenen Standard liegen, werden auf die nächstgelegene unterstützte Stufe aufgerundet.
Bei GPU-Instances ist kurzlebiger Speicher bereits in der Instance-Preisgestaltung berücksichtigt. Für kurzlebigen Speicher bei GPU-Aufgaben fallen keine zusätzlichen Gebühren an.
Überlegungen und Einschränkungen
| Überlegungen | Detail |
|---|---|
| Kurzlebiger Speicher ist nicht persistent | Kurzlebige Speichervolumes werden immer gelöscht, wenn die Aufgabe beendet wird. Die /tmp darin enthaltenen Daten werden nicht gespeichert, exportiert und stehen auch nicht für nachfolgende Aufgaben oder Ausführungen zur Verfügung. Daten /tmp im flüchtigen Speicher können keine Aufgaben- oder Workflow-Ausgabe sein. Dies führt zur Laufzeit zu einem Ausfall. |
| Kurzlebiger Speicher wird nicht von mehreren Aufgaben gemeinsam genutzt | Jede Aufgabe erhält ihr eigenes isoliertes flüchtiges Speichervolumen. Aufgaben können nicht gegenseitig auf die Verzeichnisse zugreifen. /tmp Daten, die von Aufgaben gemeinsam genutzt werden müssen, müssen in das Shared Run-Dateisystem geschrieben werden. |
| Die Größe des Speichers kann nicht während der Aufgabe geändert werden | Die Speichergröße ist beim Start der Aufgabe festgelegt. Sie können den zugewiesenen Speicherplatz nicht erhöhen oder verringern, während eine Aufgabe ausgeführt wird. |
| Working-directory Scratch wird nicht automatisch umgeleitet | Workflows, die Scratch in das Arbeitsverzeichnis schreiben — zum Beispielinput/,./, oder out/ — profitieren nicht automatisch davon. Aktualisieren Sie Ihren Workflow so, dass er Scratch I/O zu /tmp oder umleitet$TMPDIR. |
In Scratch-Daten wird nicht /tmp wie erwartet geschrieben |
Stellen Sie sicher, dass Ihre Task-Prozesse explizit an einen anderen Ort schreiben /tmp und dass Ihre Task-Befehle keinem anderen Speicherort $TMPDIR zugeordnet sind. |
| GPU-Instanzen verwenden immer kurzlebigen Speicher | GPU-Aufgaben werden immer /tmp im lokalen NVMe-Instanzspeicher bereitgestellt. Bei der Einstellung scratchStorageMode auf SHARED wird der kurzlebige Speicher für GPU-Aufgaben nicht deaktiviert. |
| GPU-Instanzen: Die NVMe-Kapazität ist festgelegt | Die benutzerdefinierte Festplattengröße wird auf GPU-Instanzen nicht unterstützt. HealthOmics ignoriert disk Direktiven und stellt die Standard-NVMe-Kapazität für den Instanztyp bereit. |
| Maximal 3.072 GiB pro Task (CPU) | Anfragen, die 3.072 GiB überschreiten, werden mit 3.072 GiB mit einer Run-Log-Warnung bereitgestellt. Aufgaben sind nicht fehlgeschlagen. |
| Nur unterstützte Stufen (CPU) | Die angeforderten Größen werden auf das nächste 16-GiB-Inkrement aufgerundet (16, 32, 48, 64,... bis zu 3.072 GiB). |
| Expression-based Direktiven, die zur Laufzeit ausgewertet werden | diskAus Ausdrücken berechnete Werte werden beim Start der Aufgabe validiert, nicht beiCreateWorkflow. Bis zu diesem Zeitpunkt berechnete Kosten werden berechnet, wenn die Aufgabe zur Laufzeit fehlschlägt. |
SHAREDDer Modus ignoriert alle Festplattendirektiven (nur CPU) |
Wenn scratchStorageMode isSHARED, disktmpdirMin, und entsprechende Direktiven für CPU-Aufgaben ignoriert werden. Es wird kein lokales Speichervolume bereitgestellt. GPU-Aufgaben sind davon nicht betroffen, sie verwenden immer lokales NVMe. |
Fehlerbehebung bei kurzlebigem Speicher
Die Aufgabe schlägt fehl, wenn der kurzlebige Speicher erschöpft ist
Eine Aufgabe schlägt fehl, wenn der kurzlebige Speicher seine Kapazität erreicht. Überprüfen Sie Ihre CloudWatch Manifestprotokolle, um festzustellen, wie viel Speicherplatz Ihre Aufgabe tatsächlich belegt hat, und fügen Sie dann die disk Anweisung hinzu oder erhöhen Sie sie, um eine größere Stufe anzufordern.
# Before: 4-vCPU task using the 16 GiB default runtime { cpu: 4 } # After: explicitly request 400 GiB runtime { cpu: 4, disks: "400 GiB" }
Kurzlebiger Speicher scheint nicht genutzt zu werden
Rufen Sie an GetRun und überprüfen Sie das FeldscratchStorageMode. Wenn der Wert lautetSHARED, ist kurzlebiger Speicher für diesen Lauf nicht aktiviert. Bei --scratch-storage-mode LOCAL Ihrem nächsten start-run Anruf festlegen.
aws omics get-run --idrun-id