Os trabalhos de slurm estão pendentes, mas os recursos estão disponíveis

5

Eu uso o SLURM como um agendador de tarefas e fila para um pequeno cluster (único nó com 64 núcleos). Para enviar um trabalho em lote, uso:

> sbatch run.sh

Onde o run.sh se parece com:

#! /bin/bash

#SBATCH --ntasks=4

export OMP_THREAD_LIMIT=4
/home/Benchmarks/Graph500/omp-csr/omp-csr -s 23

No entanto, quando envio dois trabalhos em lote, um após o outro, recebo:

> squeue
     JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
        29     debug   run.sh anonymou PD       0:00      1 (Resources)
        28     debug   run.sh anonymou  R       1:13      1 localhost

Cada trabalho precisa de apenas 4 núcleos, portanto, ambos os trabalhos devem ser executados. Talvez eu tenha configurado mal o controlador de slurm, as linhas relevantes do /etc/slurm.conf são:

# COMPUTE NODES
NodeName=localhost CPUs=64 Sockets=4 CoresPerSocket=8 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP

Eu ficaria grato por qualquer ajuda / dica.

    
por Simple.guy 16.12.2014 / 23:51

1 resposta

6

O SLURM, por padrão, não permite o compartilhamento de recursos, portanto, quando um trabalho é executado em 1 nó, o restante dos trabalhos espera que ele seja concluído antes de executar qualquer tarefa adicional no mesmo nó.

O SLURM precisa ser configurado para compartilhamento de recursos, isso deve ser bastante simples e bem documentado.

Um exemplo do que adicionar ao seu arquivo slurm.conf (normalmente localizado em / etc / slurm) seria:

SelectType=select/cons_res
SelectTypeParameters=
DefMemPerCPU=

Isso permitiria o compartilhamento dos recursos de um nó usando o con_res plugin.

O plug-in select/con_res permite uma ampla variedade de parâmetros (SelectTypeParameters). Os mais proeminentes estão listados abaixo (para uma lista completa de parâmetros, consulte a página de manual do slurm.conf):

CR_CPU : as CPUs são o recurso consumível.
CR_CPU_Memory : adiciona memória como consumível a CR_CPU.
CR_Core Cores : Núcleos são o recurso consumível.
CR_Core_Memory : adiciona memória como consumível a CR_CPU_Memory.

Depois que isso for feito e você tiver selecionado o tipo de recurso que deseja usar como consumível no SLURM, tudo o que você precisa fazer é adicionar a opção shared=yes à sua fila padrão e emitir o comando scontrol reconfigure no nó que está sendo usado como controlador.

    
por 05.03.2015 / 14:25