Ejecute tipos de almacenamiento en HealthOmics flujos de trabajo - AWS HealthOmics

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecute tipos de almacenamiento en HealthOmics flujos de trabajo

Al iniciar una ejecución, HealthOmics asigna almacenamiento de ejecución temporal para que el motor de flujo de trabajo lo utilice durante la ejecución. HealthOmicsproporciona el almacenamiento de ejecución temporal como un sistema de archivos.

Para un flujo de trabajo o una ejecución de flujo de trabajo determinados, puede elegir un almacenamiento de ejecución dinámico o estático. De forma predeterminada, HealthOmics proporciona almacenamiento de ejecución estático.

nota

El uso del almacenamiento de ejecución genera cargos en tu cuenta. Para obtener información sobre los precios del almacenamiento de ejecución estático y dinámico, consulta HealthOmicslos precios.

En las siguientes secciones se proporciona información que se debe tener en cuenta a la hora de decidir qué tipo de almacenamiento de ejecución utilizar.

Almacenamiento de ejecución dinámico

Recomendamos utilizar el almacenamiento de ejecución dinámico para la mayoría de las ejecuciones, incluidas las que requieren tiempos de inicio más rápidos, las ejecuciones en las que no se conocen de antemano las necesidades de almacenamiento y para los ciclos de pruebas de desarrollo iterativos.

No es necesario estimar el almacenamiento o el rendimiento necesarios para la ejecución. HealthOmics escala dinámicamente el tamaño del almacenamiento hacia arriba o hacia abajo, en función del uso del sistema de archivos durante la ejecución. HealthOmics también escala el rendimiento de forma dinámica en función de las necesidades del flujo de trabajo. Una ejecución nunca falla debido a un error de almacenamiento insuficiente en el sistema de archivos.

El almacenamiento de ejecución dinámico proporciona un provisioning/deprovisioning tiempo de ejecución más rápido que el almacenamiento de ejecución estático. Una configuración más rápida es una ventaja para la mayoría de los flujos de trabajo y también es una ventaja durante development/test los ciclos.

Una vez completada la ejecución (ruta de éxito o ruta de error), la operación de la API GetRun devuelve el almacenamiento máximo utilizado por la ejecución en el campo StorageCapacity. También puedes encontrar esta información en los registros del manifiesto de ejecución ubicados en el grupo de registros. omics En el caso de una ejecución de almacenamiento dinámico que se complete en 2 horas, es posible que el valor máximo de almacenamiento no esté disponible.

En el caso del almacenamiento de ejecución dinámica, la ejecución aprovisiona un sistema de archivos que utiliza el protocolo NFS. NFS considera que las operaciones CREATE, DELETE y RENAME de archivos no son idempotentes, lo que, en ocasiones, puede generar condiciones de carrera para estas operaciones que el código debe gestionar correctamente. Por ejemplo, el código no debería fallar si intenta eliminar un archivo que no existe. Antes de adoptar el almacenamiento de ejecución dinámica, recomendamos ajustar el código del flujo de trabajo para que sea resistente a las operaciones de archivos no idempotentes. Consulte Ejemplos de código para el manejo seguro de operaciones no idempotentes.

Ejemplos de código para el manejo seguro de operaciones no idempotentes

El siguiente ejemplo de Python muestra cómo eliminar un archivo sin errores si el archivo no existe.

import os import errno def remove_file(file_path): try: os.remove(file_path) except OSError as e: # If the error is "No such file or directory", ignore it (or log it) if e.errno != errno.ENOENT: # Otherwise, raise the error raise # Example usage remove_file("myfile")

Los siguientes ejemplos utilizan el shell Bash. Para eliminar un archivo de forma segura, incluso si no existe, usa:

rm -f my_file

Para mover (cambiar el nombre) de un archivo de forma segura, ejecute el comando move solo si el archivo old_name existe en el directorio actual.

[ -f old_name ] && mv old_name new_name

Para crear un directorio, utilice el siguiente comando:

mkdir -p mydir/subdir/

Almacenamiento de ejecución estático

Para el almacenamiento de ejecuciones estáticas, la ejecución aprovisiona un sistema de archivos que usa el protocolo Lustre. De forma predeterminada, este protocolo es resistente a las operaciones de archivos no idempotentes. No es necesario ajustar el código de flujo de trabajo para gestionar operaciones de archivos no idempotentes.

HealthOmics asigna una cantidad fija de almacenamiento de ejecución. Este valor se especifica al iniciar la ejecución. El almacenamiento de ejecución predeterminado es de 1200 GiB si no especificas un valor. Cuando especificas un valor para el tamaño de almacenamiento en la solicitud de StartRun API, el sistema redondea el valor al múltiplo más cercano de 1200 GiB. Si ese tamaño de almacenamiento no está disponible, se redondea al múltiplo más cercano de 2400 GiB.

Para el almacenamiento en ejecución estática, HealthOmics aprovisiona los siguientes valores de rendimiento:

  • Rendimiento de referencia de 200 MB/s por TiB de capacidad de almacenamiento aprovisionada.

  • Rendimiento en ráfaga de hasta 1300 MB/s por TiB de capacidad de almacenamiento aprovisionada.

Si el tamaño de almacenamiento especificado es demasiado bajo, se produce un error en la ejecución y se produce un error de almacenamiento insuficiente para el sistema de archivos. El almacenamiento estático en ejecución es ideal para flujos de trabajo predecibles con requisitos de almacenamiento conocidos.

El almacenamiento de ejecución estática es adecuado para cargas de trabajo grandes y en ráfagas con una alta concurrencia de tareas (por ejemplo, un gran volumen de RNASeq muestras procesadas en paralelo). Proporciona un mayor rendimiento del sistema de archivos por GiB y un menor costo por GiB que el almacenamiento de ejecución dinámica.

Calcular el almacenamiento de ejecución estático necesario

Un flujo de trabajo requiere capacidad adicional cuando utiliza el almacenamiento de ejecución estático (en comparación con el almacenamiento de ejecución dinámica), ya que la instalación del sistema de archivos base utiliza el 7% de la capacidad del sistema de archivos estático.

Si ejecuta un flujo de trabajo de almacenamiento de ejecución dinámico para medir el almacenamiento máximo utilizado por la ejecución, utilice el siguiente cálculo para determinar la cantidad mínima de almacenamiento estático necesaria:

static storage required = maximum storage in GiB used by the dynamic run storage + (total static file system size in GiB * 0.07)

Por ejemplo:

Maximum storage measured from a dynamic run storage workflow run: 500GiB File system size: 1200GiB 7% of the file system size: 84GiB 500 + 84 = 584GiB of static run storage required for this run.

Por lo tanto, 1200 GiB (la capacidad mínima de almacenamiento de ejecución estática) son suficientes para esta ejecución.