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.
Slurm Workload Manager (slurm
)
Capacidad, tamaño y actualización del clúster
La capacidad del clúster se define por la cantidad de nodos de procesamiento que el clúster puede escalar. Los nodos de cómputo están respaldados por instancias de EC2 definidas dentro de los recursos de cómputo de la AWS ParallelCluster configuración (Scheduling/SlurmQueues/ComputeResources)
y están organizados en colas (Scheduling/SlurmQueues)
que se asignan a Slurm las particiones 1:1.
Dentro de un recurso de cómputo, es posible configurar el número mínimo de nodos de cómputo (instancias) que deben mantenerse siempre en ejecución en el clúster (MinCount
) y el número máximo de instancias al que el recurso de cómputo puede escalar (MaxCount
3).
En el momento de la creación del clúster, o tras una actualización del clúster, AWS ParallelCluster lanza tantas instancias de EC2 como estén configuradas MinCount
para cada recurso informático (Scheduling/SlurmQueues/ ComputeResources
) definido en el clúster. Las instancias lanzadas para cubrir la cantidad mínima de nodos de un recurso informático del clúster se denominan nodos estáticos. Una vez iniciados, los nodos estáticos deben permanecer en el clúster y el sistema no los termina, a menos que se produzca un evento o una condición en particular. Estos eventos incluyen, por ejemplo, el fallo de las comprobaciones de estado de EC2 y el cambio del estado del nodo Slurm a DRAIN Slurm o DOWN.
Las instancias de EC2, 1
que ‘MaxCount -
MinCount’
se lanzan bajo demanda para hacer frente al aumento de carga del clúster, se denominan nodos dinámicos. MaxCount
MinCount)
Su naturaleza es efímera: se lanzan para atender tareas pendientes y se cancelan una vez que permanecen inactivas durante un período de tiempo definido Scheduling/SlurmSettings/ScaledownIdletime
en la configuración del clúster (predeterminado: 10 minutos).
Los nodos estáticos y los nodos dinámicos cumplen con el siguiente esquema de nomenclatura:
-
Nodos estáticos
<Queue/Name>-st-<ComputeResource/Name>-<num>
donde<num> = 1..ComputeResource/MinCount
-
<Queue/Name>-dy-<ComputeResource/Name>-<num>
¿Dónde están los nodos dinámicos?<num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)
Por ejemplo, dada la siguiente AWS ParallelCluster configuración:
Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 150
Los siguientes nodos se definirán en Slurm
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Cuando un recurso de cómputo lo tengaMinCount == MaxCount
, todos los nodos de cómputo correspondientes serán estáticos y todas las instancias se lanzarán en el momento de la creación o actualización del clúster y se mantendrán en funcionamiento. Por ejemplo:
Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 100
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Actualización de la capacidad del clúster
La actualización de la capacidad del clúster incluye añadir o eliminar colas, recursos informáticos o cambiar la capacidad MinCount/MaxCount
de un recurso informático. A partir de la AWS ParallelCluster versión 3.9.0, para reducir el tamaño de una cola es necesario detener la flota informática o QueueUpdateStrategyconfigurarla en TERMINATE antes de que se lleve a cabo la actualización del clúster. No es necesario detener la flota de cómputo ni configurarla en TERMINATE QueueUpdateStrategycuando:
-
Añadir nuevas colas a Scheduling/
SlurmQueues
-
Añadir nuevos recursos de cómputo a una cola
Scheduling/SlurmQueues/ComputeResources
-
Aumentar la cantidad
MaxCount
de un recurso de cómputo -
Incremento MinCount de un recurso informático y aumento MaxCount del mismo recurso informático en al menos la misma cantidad
Consideraciones y limitaciones
El objetivo de esta sección es describir los factores, restricciones o limitaciones importantes que se deben tener en cuenta al redimensionar la capacidad del clúster.
-
Al eliminar una cola de
Scheduling/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
todos los nodos de procesamiento con un nombre<Queue/Name>-*
, tanto estático como dinámico, se eliminarán de la Slurm configuración y se eliminarán las instancias de EC2 correspondientes. -
Al eliminar un recurso informático
Scheduling/SlurmQueues/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueues-ComputeResourcesComputeResources
de una cola, todos los nodos informáticos con nombre<Queue/Name>-*-<ComputeResource/Name>-*
, tanto estáticos como dinámicos, se eliminarán de la Slurm configuración y se eliminarán las instancias de EC2 correspondientes.
Al cambiar el MinCount
parámetro de un recurso informático, podemos distinguir dos escenarios diferentes: si MaxCount
se mantiene igual MinCount
(solo capacidad estática) y si MaxCount
es mayor que MinCount
(capacidad estática y dinámica mixta).
La capacidad cambia solo con los nodos estáticos
-
Si
MinCount == MaxCount
, al aumentarMinCount
(yMaxCount
), el clúster se configurará ampliando el número de nodos estáticos hasta el nuevo valor deMinCount
<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>
y el sistema seguirá intentando lanzar instancias EC2 para cumplir con la nueva capacidad estática requerida. -
Si
MinCount == MaxCount
, al disminuirMinCount
(yMaxCount
) la cantidad N, el clúster se configurará eliminando los últimos N nodos estáticos<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]
y el sistema finalizará las instancias de EC2 correspondientes.-
Estado inicial
MinCount = MaxCount = 100
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualización
-30
enMinCount
yMaxCount: MinCount = MaxCount = 70
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
-
La capacidad cambia con nodos mixtos
SiMinCount < MaxCount
, al aumentar MinCount
en una cantidad N (suponiendo que MaxCount
se mantenga sin cambios), el clúster se configurará ampliando el número de nodos estáticos hasta el nuevo valor de MinCount
(old_MinCount + N
): <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N>
y el sistema seguirá intentando lanzar instancias EC2 para cumplir con la nueva capacidad estática requerida. Además, para respetar la MaxCount
capacidad del recurso informático, la configuración del clúster se actualiza eliminando los últimos N nodos dinámicos, <Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount -
old_MinCount - N>...<MaxCount - old_MinCount>]
y el sistema finalizará las instancias de EC2 correspondientes.
-
Estado inicial:
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualiza +30 a
MinCount : MinCount = 130 (MaxCount = 150)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SiMinCount < MaxCount
, al aumentar N MinCount
y en MaxCount
la misma cantidad, el clúster se configurará ampliando el número de nodos estáticos hasta el nuevo valor de MinCount
(old_MinCount + N
): <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N>
y el sistema seguirá intentando lanzar instancias EC2 para cumplir con la nueva capacidad estática requerida. Además, no se realizará ningún cambio en el número de nodos dinámicos para adaptarlo a los nuevos
Valor MaxCount
.
-
Estado inicial:
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualiza +30 a
MinCount : MinCount = 130 (MaxCount = 180)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SiMinCount < MaxCount
, al reducir la MinCount
cantidad N (suponiendo que MaxCount
se mantenga sin cambios), el clúster se configurará eliminando los últimos N nodos estáticos <Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount -
N>...<old_MinCount>
y el sistema cerrará las instancias de EC2 correspondientes. Además, para respetar la MaxCount
capacidad del recurso informático, la configuración del clúster se actualiza ampliando el número de nodos dinámicos para cubrir el vacío. MaxCount - new_MinCount:
<Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount -
new_MinCount>]
En este caso, dado que se trata de nodos dinámicos, no se lanzará ninguna nueva instancia de EC2 a menos que el planificador tenga tareas pendientes en los nuevos nodos.
-
Estado inicial:
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualización -30 el
MinCount : MinCount = 70 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-80] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SiMinCount < MaxCount
, al disminuir MinCount
y con MaxCount
la misma cantidad N, el clúster se configurará eliminando los últimos N nodos estáticos <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount -
N>...<oldMinCount>]
y el sistema finalizará las instancias de EC2 correspondientes.
Además, no se realizará ningún cambio en el número de nodos dinámicos para respetar el nuevo MaxCount
valor.
-
Estado inicial:
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualización -30 el
MinCount : MinCount = 70 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SiMinCount < MaxCount
, al disminuir la MaxCount
cantidad N (suponiendo que MinCount
se mantenga sin cambios), el clúster se configurará eliminando los últimos N nodos dinámicos <Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount -
N...<oldMaxCount>]
y el sistema cerrará las instancias de EC2 correspondientes en caso de que estuvieran en ejecución. No se espera ningún impacto en los nodos estáticos.
-
Estado inicial:
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Actualización -30 el
MaxCount : MinCount = 100 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Impactos en los puestos de trabajo
En todos los casos en los que se eliminen los nodos y se cierren las instancias de EC2, se volverá a poner en cola un trabajo por lotes que se ejecute en los nodos eliminados, a menos que no haya otros nodos que cumplan con los requisitos del trabajo. En este último caso, el trabajo fallará con el estado NODE_FAIL y desaparecerá de la cola; si es el caso, será necesario volver a enviarlo manualmente.
Si planea realizar una actualización de tamaño del clúster, puede impedir que los trabajos se ejecuten en los nodos que se van a eliminar durante la actualización planificada. Esto es posible configurando los nodos que se eliminarán durante el mantenimiento. Tenga en cuenta que poner un nodo en fase de mantenimiento no afectaría a los trabajos que eventualmente ya se estén ejecutando en el nodo.
Supongamos que con la actualización planificada para cambiar el tamaño del clúster [se va a eliminar el nodoqeueu-st-computeresource-[9-10
]. Puede crear una Slurm reserva con el siguiente comando
sudo -i scontrol create reservation ReservationName=maint_for_update user=root starttime=now duration=infinite flags=maint,ignore_jobs nodes=qeueu-st-computeresource-[9-10]
Esto creará una Slurm reserva con un nombre maint_for_update
en los nodosqeueu-st-computeresource-[9-10]
. Desde el momento en que se crea la reserva, no se pueden ejecutar más trabajos en los nodosqeueu-st-computeresource-[9-10]
. Tenga en cuenta que la reserva no impedirá que los trabajos se asignen eventualmente a los nodosqeueu-st-computeresource-[9-10]
.
Tras la actualización del tamaño del clúster, si la Slurm reserva se estableció solo en los nodos que se eliminaron durante la actualización del cambio de tamaño, la reserva de mantenimiento se eliminará automáticamente. Si, por el contrario, ha creado una Slurm reserva en los nodos que siguen presentes tras la actualización del cambio de tamaño del clúster, es posible que deseemos eliminar la reserva de mantenimiento de los nodos una vez realizada la actualización de tamaño mediante el siguiente comando
sudo -i scontrol delete ReservationName=maint_for_update
Para obtener más información sobre la Slurm reserva, consulta el documento oficial de SchedMD aquí.
Proceso de actualización del clúster sobre los cambios de capacidad
Tras un cambio en la configuración del programador, se ejecutan los siguientes pasos durante el proceso de actualización del clúster:
-
Detenga AWS ParallelCluster
clustermgtd (supervisorctl stop clustermgtd)
-
Genere la configuración de Slurm particiones actualizada a partir de AWS ParallelCluster la configuración
-
Reiniciar
slurmctld
(realizado mediante la receta del servicio Chef) -
Compruebe el
slurmctld
estado(systemctl is-active --quiet slurmctld.service)
-
Recargar la configuración Slurm
(scontrol reconfigure)
-
Iniciar
clustermgtd (supervisorctl start clustermgtd)
Para obtener información acerca de Slurm, consulte https://slurm.schedmd.com
AWS ParallelCluster versión (s) | Versión de Slurm compatible |
---|---|
3.9.0 |
23.11.4 |
3.8.0 |
23.02.7 |
3.7.2 |
23.02.6 |
3.7.1 |
23,02.5 |
3.7.0 |
23,02.4 |
3.6.0, 3.6.1 |
23,02.2 |
3.5.0, 3.5.1 |
22.05.8 |
3.4.0, 3.4.1 |
22.05.7 |
3.3.0, 3.3.1 |
22,05.5 |
3.1.4, 3.1.5, 3.2.0, 3.2.1 |
21,08,8-2 |
3.1.2, 3.1.3 |
21,08.6 |
3.1.1 |
21.08.5 |
3.0.0 |
20,11,8 |
Temas
- Configuración de varias colas
- Guía de Slurm para el modo de cola múltiple
- Modo protegido de clúster Slurm
- Conmutación por error rápida de capacidad insuficiente en el clúster de Slurm
- Slurm programación basada en memoria
- Asignación de varios tipos de instancias con Slurm
- Escalado de clústeres para nodos dinámicos
- Slurmcontabilidad con AWS ParallelCluster
- Personalización de la configuración de Slurm
- Slurm prolog y epilog
- Tamaño y actualización de la capacidad del clúster