Uso de máquinas virtuales de acceso puntual en Azure CycleCloud
Azure CycleCloud admite la implementación de máquinas virtuales de Spot en nodearrays para reducir considerablemente el costo operativo de los clústeres.
Precaución
Las máquinas virtuales de acceso puntual no son adecuadas para todas las cargas de trabajo y los tipos de clúster. No ofrecen ningún Acuerdo de Nivel de Servicio para disponibilidad o capacidad. Son instancias "preemptibles" o "de prioridad baja" y pueden ser expulsadas por el tejido de Azure para administrar la capacidad y a medida que cambia el precio de spot.
Configuración de una matriz de Nodearray para Spot
Para habilitar Spot para un elemento nodearray, basta con establecer Interruptible
en true en la [[nodearray]]
sección.
CycleCloud permite a los clústeres especificar un MaxPrice
para las instancias de Spot. Dado que el precio de spot puede ajustarse periódicamente y puede variar significativamente entre regiones y SKU, permite MaxPrice
a los usuarios controlar el precio máximo (en $/hora) que están dispuestos a pagar por una máquina virtual. De forma predeterminada, CycleCloud establece MaxPrice=-1
cuando no se especifica lo contrario, lo que significa "no expulsar en función del precio puntual". Con esta configuración, las instancias solo se expulsarán debido a cambios en las demandas de capacidad u otras decisiones de nivel de plataforma.
Consulte Precios de Spot para obtener más información sobre los precios variables de las instancias de Spot.
Para la mayoría de las aplicaciones de HPC, MaxPrice=-1
es una buena opción predeterminada. Sin embargo, si una matriz de nodos admite el escalado automático de selección múltiple en un intervalo de SKU de máquina virtual, MaxPrice
también se puede personalizar para crear una preferencia para las SKU de menor precio en la lista de selección múltiple.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Para más información, consulte Spot Virtual Machines en la guía de plantillas de clúster.
Expulsión de máquina virtual de acceso puntual
CycleCloud supervisa las expulsiones puntuales a través de la característica Eventos programados . Cuando se detecta un evento de adelantamiento puntual, la máquina virtual notifica a CycleCloud y la instancia se mueve a un estado de "espera de expulsión".
Preguntas más frecuentes
El uso de Spot con CycleCloud tiene algunas consideraciones específicas para las cargas de trabajo de HPC y el escalado automático de CycleCloud.
¿Cuándo debo considerar el uso de Spot?
- ¿Son sus trabajos individuales relativamente cortos?
- Una buena regla general es que los trabajos que se ejecutan en menos de una hora pueden ser una buena opción para las instancias de Spot, ya que se perderá relativamente poco progreso adelante si se expulsa la instancia.
- ¿El programador reintenta o vuelve a poner en cola automáticamente los trabajos en los hosts que producen errores?
- ¿Los trabajos son seguros para volver a ejecutarse si el host se expulsa durante la ejecución?
- En general, las instancias de spot son las más adecuadas para cargas de trabajo sin estado.
- ¿Es más importante minimizar el costo de la ejecución que el tiempo de finalización?
- Spot suele ser perfecto para las cargas de trabajo que se pueden programar en colas de prioridad baja o de relleno de retroceso locales.
- Se trata de uno de los casos en los que Spot puede ser adecuado incluso para trabajos MPI cortos.
¿Cuándo debo evitar el uso de Spot?
- Si los trabajos están estrechamente acoplados a trabajos de HPC (por ejemplo, trabajos de MPI), es probable que no sean buenos candidatos para Spot.
- Si el trabajo es crítico o tiene una fecha límite para la finalización, las instancias de prioridad normal pueden ser una mejor opción, ya que las expulsiones y reintentos pueden extender el tiempo de finalización.
- Sin embargo, esta puede ser una excelente oportunidad de configurar el clúster para que use una combinación de instancias de prioridad normal y spot para asegurarse de que se cumple la fecha límite al intentar reducir el tiempo de ejecución y el costo mediante la adición de instancias de Spot.
- Si los trabajos no son seguros para volver a ejecutarse, se debe evitar Spot.
- Por ejemplo, si el trabajo modifica una base de datos durante la ejecución, la ejecución automática del trabajo puede provocar errores o resultados no válidos.
- Si los tiempos de ejecución de trabajos son muy largos, es posible que Spot no sea una buena opción.
- En el caso de procesos largos, tanto la posibilidad de expulsión de spot como el dólar y los costos de tiempo de los reintentos aumentan.
- Sin embargo, este es un caso que puede requerir la medición en un caso por caso.
Expulsión y adelantamiento
Consulte Directiva de expulsión de acceso puntual para más información sobre la expulsión de acceso puntual en Azure.
Q. ¿Puede CycleCloud realizar un seguimiento de las expulsiones o adelantamientos de instancias de Spot?
A. Sí. Un evento de expulsión de spot generará una notificación del registro de eventos en la página De la interfaz de usuario de clústeres.
Q. ¿Cómo se notifica a los usuarios la expulsión?
A. Después de expulsar un nodo cycleCloud, los usuarios verán un mensaje de registro en el registro de eventos de la interfaz de usuario de CycleCloud para el clúster. Los usuarios también pueden registrarse para recibir un evento de CycleCloud a través de Azure EventGrid después de expulsar una instancia de spot.
- Los usuarios pueden comprobar si hay una notificación de expulsión en la máquina 30 segundos antes de la expulsión. Consulte Scheduled Events (Eventos programados ) para obtener más información sobre cómo registrarse para el evento.
- En general, la expulsión debe considerarse similar a extraer el enchufe en una máquina local y debe controlarse de la misma manera.
- IMPORTANTE Los controladores de eventos no deben confirmar el evento de expulsión de spot, ya que es posible que el controlador de eventos Cyclecloud no reciba el evento si se confirma.
Q. ¿Con qué frecuencia se produce la expulsión?
A. La tasa de expulsión es muy variable y depende en gran medida de los cambios en la demanda en toda la región.
Q. ¿Por qué se expulsan las instancias?
A. Las máquinas virtuales de acceso puntual no garantizan la disponibilidad y pueden expulsarse en cualquier momento. Consulte la documentación de la máquina virtual de Spot para obtener más información. Si un elemento nodearray ha establecido una MaxPrice
excepción , se expulsarán las instancias si el precio de spot aumenta por encima de MaxPrice
. Esto tiende a ser poco frecuente , ya que el precio de spot se mueve muy lentamente. Estos son algunos escenarios que podrían desencadenar una expulsión:
- Las reducciones en la capacidad puntual a medida que aumenta la demanda de máquinas virtuales de prioridad regular.
- Eventos de nivel de plataforma, como el mantenimiento de hardware planeado.
¿Cómo se ve afectado mi flujo de trabajo por expulsión?
Q. ¿Qué ocurre con mis trabajos cuando se expulsa una instancia de Spot?
A. A menos que los trabajos se codifiquen para controlar la notificación de expulsión de 30 segundos y lo controlen correctamente, el nodo simplemente finaliza y se produce un error en el trabajo (y esperamos que se vuelva a intentar).
Q. ¿Se eliminan los nodos del clúster?
A. Sí, los nodos se limpiarán en la interfaz de usuario de CycleCloud. En los programadores admitidos, los nodos también se limpiarán en el programador.
Q. ¿Es necesario volver a ejecutar los trabajos?
A. En general, es el trabajo del programador para volver a intentar o volver a ejecutar los trabajos que se expulsan. Sin embargo, muchas clases de trabajo no son tolerantes a los reintentos (por ejemplo, si escriben datos parciales en el almacenamiento persistente mientras se ejecutan). Es posible que estos trabajos no sean buenos candidatos para su ejecución en instancias de Spot.
Q. ¿Puedo usar una combinación de máquinas virtuales de spot y de prioridad regular o a petición?
A. Sí. Puede usar spot independiente (Interruptible
) y nodearrays que no son de spot para crear una combinación de spot y prioridad regular. El uso de una combinación de tipos de instancia normalmente requiere tomar algunas decisiones de configuración en función de los requisitos y del programador que el usuario haya elegido. Estas son un par de configuraciones comunes:
- Separe las máquinas virtuales de spot y Regular-Priority en colas independientes del programador.
- Esta configuración permite que el remitente se dirija fácilmente a los trabajos en el tipo de máquina virtual adecuado.
- Cree un único grupo de recursos grande con instancias de Spot y Regular-Priority.
- Esta configuración puede ser útil para cargas de trabajo altamente escalables que usan un pequeño porcentaje de instancias de prioridad normal para garantizar el progreso hacia delante y un gran porcentaje de Spot para reducir el costo y el tiempo de ejecución.
Q. ¿Puedo cambiar la directiva de expulsión de spot para nodearrays de CycleCloud?
A. Sí. Puede establecer el EvictionPolicy
atributo directamente en nodearray para cambiar la directiva a Delete
o Deallocate
(valor predeterminado: Delete
).
Sin embargo, actualmente esto solo es útil para los escaladores automáticos personalizados que controlan las desasignaciones adecuadamente. Los escaladores automáticos actuales de Azure CycleCloud esperan que se eliminen las instancias de Spot tras la expulsión.
Compatibilidad con Scheduler para la expulsión de spot en CycleCloud
Consulte la guía específica del programador para obtener información detallada sobre la implementación de CycleCloud para el programador.
Q. ¿Cómo controla el escalador automático para mi expulsión de spot del programador?
A. Todos los escaladores automáticos para los programadores integrados o compatibles (HTCondor, GridEngine, PBS Professional, Slurm, LSF) intentan controlar las expulsiones de spot correctamente. En general, la instancia expulsada se quitará del Programador y, si la demanda de capacidad es mayor que la nueva capacidad disponible después de la expulsión, el escalador automático reemplazará la instancia.
Los escaladores automáticos personalizados deben crearse para esperar expulsiones de spot o errores generales de la máquina y controlarlos correctamente.
Q. ¿Qué debo esperar para que se produzcan los trabajos que se estaban ejecutando en la instancia expulsada?
A. Esto es en gran medida hasta el usuario que se va a configurar al enviar el trabajo. Algunos programadores, como GridEngine, permiten configurar también la acción predeterminada por cola. De forma predeterminada, todas las implementaciones integradas del programador de CycleCloud, a excepción de HTCondor, están configuradas para marcar los trabajos como erróneos cuando el nodo en el que se ejecutan se expulsa o finaliza inesperadamente. Este comportamiento es por diseño, ya que solo el usuario puede saber si sus trabajos se pueden reintentar de forma segura.