As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Failover rápido de capacidade insuficiente do cluster Slurm
A partir da AWS ParallelCluster versão 3.2.0, os clusters são executados com o modo de failover rápido de capacidade insuficiente ativado por padrão. Isso minimiza o tempo gasto tentando novamente colocar um trabalho na fila quando erros de capacidade insuficiente do Amazon EC2 são detectados. Isso é particularmente eficaz quando você configura seu cluster com vários tipos de instâncias.
O Amazon EC2 detectou falhas de capacidade insuficientes:
-
InsufficientInstanceCapacity
-
InsufficientHostCapacity
-
InsufficientReservedInstanceCapacity
-
MaxSpotInstanceCountExceeded
-
SpotMaxPriceTooLow
: ativado se o seu preço de solicitação spot é inferior ao preço mínimo de atendimento de solicitação spot exigido. -
Unsupported
: ativado com o uso de um tipo de instância que não é compatível com uma instância específica Região da AWS.
No modo rápido de failure-over de capacidade insuficiente, se um erro de capacidade insuficiente for detectado quando uma tarefa for atribuída a SlurmQueues/compute resource, AWS ParallelCluster faça o seguinte:
-
Ele define o recurso de computação para um estado desativado (
DOWN
) por um período de tempo predefinido. -
Ele usa
POWER_DOWN_FORCE
para cancelar as tarefas do nó com falha do recurso de computação e para suspender o nó com falha. Ele define o nó com falha para o estadoIDLE
ePOWER_DOWN (!)
e, em seguida, paraPOWERING_DOWN (%)
. -
Ele enfileira o trabalho em outro recurso de computação.
Os nós estáticos e ativados do recurso de computação desativado não são afetados. Os trabalhos podem ser concluídos nesses nós.
Esse ciclo se repete até que o trabalho seja atribuído com êxito a um ou mais nós de recursos de computação. Para mais informações sobre os estados dos nós, consulte Slurm guia para o modo de fila múltipla.
Se nenhum recurso de computação for encontrado para executar o trabalho, o trabalho será definido no estado PENDING
até que o período de tempo predefinido termine. Nesse caso, você pode modificar o período de tempo predefinido conforme descrito na seção a seguir.
Parâmetro de tempo limite de capacidade insuficiente
insufficient_capacity_timeout
insufficient_capacity_timeout
especifica o período de tempo (em segundos) em que o recurso de computação é mantido no estado desativado (down
) quando um erro de capacidade insuficiente é detectado.
Por padrão, insufficient_capacity_timeout
é habilitado.
O insufficient_capacity_timeout
padrão é 600 segundos (10 minutos).
Se o valor insufficient_capacity_timeout
for menor ou igual a zero, o modo de failover rápido de capacidade insuficiente será desativado.
Você pode alterar o valor de insufficient_capacity_timeout
adicionando o parâmetro no arquivo de configuração clustermgtd
localizado em /etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf
no HeadNode
.
O parâmetro pode ser atualizado a qualquer momento, sem interromper a frota de computação.
Por exemplo: .
-
insufficient_capacity_timeout=600
:Se um erro de capacidade insuficiente for detectado, o recurso de computação será definido como desativado (
DOWN
). Após 10 minutos, seu nó com falha é definido para o estadoidle~
(POWER_SAVING
). -
insufficient_capacity_timeout=60
:Se um erro de capacidade insuficiente for detectado, o recurso de computação será definido como desativado (
DOWN
). Após 1 minuto, seu nó com falha é definido para o estadoidle~
. -
insufficient_capacity_timeout=0
:O modo de failover rápido de capacidade insuficiente é desativado. O recurso de computação não é desativado.
nota
Pode haver um atraso de até um minuto entre o momento em que os nós falham com erros de capacidade insuficientes e o momento em que o daemon de gerenciamento de cluster detecta as falhas do nó. Isso ocorre porque o daemon de gerenciamento de cluster verifica falhas de capacidade insuficiente do nó e define os recursos de computação para o estado down
em intervalos de um minuto.
Status do modo de failover rápido de capacidade insuficiente
Quando um cluster está no modo de failover rápido e de capacidade insuficiente, você pode verificar seu status e os estados dos nós.
Estados do nó
Quando uma tarefa é enviada a um nó dinâmico de recursos de computação e um erro de capacidade insuficiente é detectado, o nó é colocado nesse estado down#
com razão.
(Code:InsufficientInstanceCapacity)Failure when resuming nodes.
Depois os nós desligados (nós no estado idle~
) são configurados para down~
com razão.
(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity.
O trabalho é enfileirado para outros recursos de computação na fila.
Os nós estáticos do recurso de computação e os nós que são UP
não são afetados pelo modo de failover rápido de capacidade insuficiente.
Considere os estados dos nós mostrados no exemplo a seguir.
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
Enviamos um trabalho para a queue1, que requer um nó.
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 1 down# queue1-dy-c-1-1 queue1* up infinite 15 idle~ queue1-dy-c-2-[1-15] queue1* up infinite 14 down~ queue1-dy-c-1-[2-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
O nó queue1-dy-c-1-1
é iniciado para executar o trabalho. No entanto, a instância falhou ao ser iniciada devido a um erro de capacidade insuficiente. O nó queue1-dy-c-1-1
está definido como down
. O nó dinâmico desligado dentro do recurso de computação (queue2-dy-c-1
) está definido como down
.
Você pode verificar a razão do nó com scontrol show nodes
.
$
scontrol show nodes queue1-dy-c-1-1
NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Failure when resuming nodes [root@2022-03-10T22:17:50]
$
scontrol show nodes queue1-dy-c-1-2
NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity [root@2022-03-10T22:17:50]
O trabalho é enfileirado em outro tipo de instância dentro dos recursos de computação da fila.
Depois de decorrido o insufficient_capacity_timeout
, os nós no recurso de computação são redefinidos para o estado idle~
.
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
Depois de decorrido o insufficient_capacity_timeout
e os nós no recurso de computação são redefinidos para o estado idle~
, o programador Slurm atribui prioridade menor aos nós. O programador continua selecionando nós de outros recursos de computação da fila com pesos maiores, a menos que ocorra uma das seguintes situações:
-
Os requisitos de envio de um trabalho correspondem ao recurso de computação recuperado.
-
Nenhum outro recurso de computação está disponível porque eles estão lotados.
-
slurmctld
é reiniciado. -
A frota de AWS ParallelCluster computação é interrompida e começa a desligar e ligar todos os nós.
Logs relacionados
Os logs relacionados a erros de capacidade insuficiente e ao modo rápido de failover de capacidade insuficiente podem ser encontrados no log resume
do Slurm e no log clustermgtd
no nó principal.
- Slurm
resume
(/var/log/parallelcluster/slurm_resume.log
) -
Mensagens de erro quando um nó falha na inicialização devido à capacidade insuficiente.
[slurm_plugin.instance_manager:_launch_ec2_instances] - ERROR - Failed RunInstances request: dcd0c252-90d4-44a7-9c79-ef740f7ecd87 [slurm_plugin.instance_manager:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['queue1-dy-c-1-1']: An error occurred (InsufficientInstanceCapacity) when calling the RunInstances operation (reached max retries: 1): We currently do not have sufficient p4d.24xlarge capacity in the Availability Zone you requested (us-west-2b). Our system will be working on provisioning additional capacity. You can currently get p4d.24xlarge capacity by not specifying an Availability Zone in your request or choosing us-west-2a, us-west-2c.
- Slurm
clustermgtd
(/var/log/parallelcluster/clustermgtd
) -
O recurso de computação c-1 em queue1 está desativado devido à capacidade insuficiente.
[slurm_plugin.clustermgtd:_reset_timeout_expired_compute_resources] - INFO - The following compute resources are in down state due to insufficient capacity: {'queue1': {'c-1': ComputeResourceFailureEvent(timestamp=datetime.datetime(2022, 4, 14, 23, 0, 4, 769380, tzinfo=datetime.timezone.utc), error_code='InsufficientInstanceCapacity')}}, compute resources are reset after insufficient capacity timeout (600 seconds) expired
Depois que o tempo limite de capacidade insuficiente expirar, o recurso de computação é redefinido e os nós dentro dos recursos de computação são definidos como
idle~
.[root:_reset_insufficient_capacity_timeout_expired_nodes] - INFO - Reset the following compute resources because insufficient capacity timeout expired: {'queue1': ['c-1']}