Slurm, limita o número de jobs por partição

1

Estou configurando um agendador de Slurm e preciso limitar o número máximo de trabalhos em execução simultaneamente em uma partição (fila).

Estou lendo muitas informações sobre contabilidade e recursos, mas tudo está relacionado a limites de usuários, também li sobre criar associações, mas não tenho certeza se isso é necessário.

Eu preciso limitar o número de trabalhos por partição (fila), já que tenho nós de computação que pertencem à mesma partição.

Ou seja. Eu tenho 2 partições, curtas e longas, com os mesmos nós de computação, mas com diferentes limites de tempo e prioridade. Se todo o usuário iniciar tarefas longas usando a partição longa, elas poderão bloquear o cluster. Então, quero limitar o número máximo de trabalhos em execução para a partição longa.

Obrigado antecipadamente.

    
por José Manuel 11.07.2014 / 12:13

3 respostas

1

Agora, vi sua edição, que deve ser realizada por meio de prioridade e compartilhamento de nós, não limitando o trabalho.
Veja a prioridade multifatorial e a preempção se você não implementar a contabilidade.

A preempção é mais simples de configurar por uma grande margem, com PreemptType = preempt / partition_prio e com maior prioridade para a fila de trabalhos curtos.
você terá que definir PreemptMode = SUSPEND, GANG em slurm.conf e Shared = FORCE na fila padrão / cada fila configurada para prioridade.

funciona muito bem, mas pode resultar em inanição dos trabalhos de longa duração.

O Multifactor é mais justo, mas você terá que experimentar para ver o que funciona para você. Você provavelmente desejará configurar o PriorityWeightPartition, pois não há um fator direto relacionado ao tempo da parede do trabalho.

Caso contrário, instale a contabilidade e simplesmente cobra mais por trabalhos de longa duração.

    
por 17.07.2014 / 17:53
0

Como não posso comentar ainda estou postando como resposta.
Você pode compartilhar seu raciocínio? slurm funciona muito bem como um gerenciador de recursos - ele não permite mais recursos a serem usados do que os disponíveis, a menos que você permita a assinatura em excesso. por que você quer impor um limite artificial além disso?

De qualquer forma, se você estiver usando o preenchimento, poderá usar um simples bf_max_job_part = # ou o mais geral partition_job_depth = #

Leia sobre essas opções no man slurm.conf

    
por 11.07.2014 / 12:29
0

A melhor maneira de conseguir isso é usando QoS. Para cada QoS você pode configurar diferentes limites para a quantidade de CPUs ou o máximo de tempo de exibição para essa QoS, etc. A QoS é mais flexível que a partição em termos de limites.

Então, minha recomendação é que você use apenas uma partição com 2 QoS e defina os limites no nível de QoS.

    
por 11.08.2015 / 11:21

Tags