Voltar para Coaraci

Submetendo e Gerenciando Jobs

O cluster Coaraci conta com o sistema de filas instalado para submeter e administrar jobs via scripts.

Para que os recursos computacionais sejam divididos de maneira razoável entre todos os usuários, é necessária uma forma de organizar e priorizar as requisições de uso, comumente chamadas de “jobs”. Para isso, o cluster conta com o sistema de filas SLURM para gerenciar os jobs que serão executados, respeitando as políticas estabelecidas. O SLURM trabalha com o conceito de filas, que são estruturas para classificar e agrupar os jobs e nós computacionais sob critérios como: número de processadores requisitados, quantidade de nós, quantidade de memória RAM, tempo de processamento e assim por diante. Na configuração atual, estão configuradas partições com ordem de prioridade e em que apenas alguns grupos de usuários têm acesso a algumas delas (na seção Filas temos mais detalhes).

É possível exibir as filas do sistema e os seus status com o comando:

[vhpc@coaraci ~]$ sinfo -a

O acesso via SSH aos nós é controlado pelo sistema de filas, ou seja, usuários comuns só serão permitidos acessar os nós se houver(em) job(s) em execução nestes nós.

Diretivas e Variáveis do Job

Dentro dos jobs existem algumas instruções que são dedicadas ao SLURM, entre outras coisas para instruí-lo onde, como e por quanto tempo rodar. Essas instruções são chamadas diretivas, e estão nas linhas que se iniciam com: “#SBATCH”. O SLURM irá considerar todas as diretivas até que encontre uma linha executável, depois deste ponto, será ignorada qualquer outra diretiva.

Diretivas comuns são:

#SBATCH –job-name=<nome> → Nome do job

#SBATCH –ntasks=<número> → Número total de núcleos

#SBATCH –time=<dias-hh:mm:ss> → Tempo de execução (dias-hh:mm:ss)

#SBATCH –partition=<fila> → Fila onde o job será alocado

Além disso, quando o job é submetido, o SLURM coloca à disposição do job algumas variáveis de ambiente que tem o intuito de facilitar algumas operações. Algumas delas, por exemplo são:

$SLURM_JOB_NODELIST → esta variável contém a lista de nós e núcleos que foram alocadas ao job, é útil, por exemplo para ser usada como parâmetro para o “mpirun”:

mpirun -machinefile $SLURM_JOB_NODELIST ./meuprograma

$SLURM_SUBMIT_DIR → esta variável aponta para o diretório de onde o script foi submetido.

$SLURM_JOB_NAME → contém o nome especificado na diretiva “#SBATCH –job-name=”

A lista completa de diretivas, opções e variáveis pode ser encontrada em (em Inglês): https://slurm.schedmd.com/sbatch.html#lbAH.

Filas

As filas são o que permitem um bom desempenho, distribuição e agendamento de uso de recursos. No Coaraci temos apenas as filas configuradas listadas abaixo:

Fila Nós associados Observações
par48-i r1n[01-56] CEPID / CCES
par48-x r1n[01-56] Projetos Externos
par480-i r2n[01-56], r3n[01-32] CEPID / CCES
par480-x r2n[01-56], r3n[01-32] Projetos Externos
paralela  r4n[01-56], r5n[01-56] CEPID / CCES
fat r2fat CEPID / CCES
gpu-i r1gn[01-04],r2gn[01-03],r4gn[01-03],r5gn[01-04] CEPID / CCES
gpu-x r1gn[01-04],r2gn[01-03],r4gn[01-03],r5gn[01-04] Projetos Externos