Escolar Documentos
Profissional Documentos
Cultura Documentos
2 de março de 2021
Capı́tulo 1
Introdução
Esse comando fará uso apenas dos oito últimos núcleos do servidor, numerados
de 217 a 224. É bastante instrutivo visualizar esse uso por meio do comando
htop. No caso de não conseguir visualizar todos os núcleos mesmo maximizando
a tela, use o atalho <Ctrl> + - para diminuir o tamanho da fonte.
Para fazer uso dos 216 núcleos restantes, é preciso submeter o processo como
um serviço ao Slurm.
1
1.1.2 Submissão de serviços
Para submeter um processo como um serviço ao Slurm, basta escrever um script
bash que contenha o comando como conteúdo:
$> cat > stress.slurm << EOI
#!/usr/bin/env bash
stress --cpu 8
EOI
A submissão é feita por meio do uso do comando sbatch:
$> sbatch -n8 --mem=100G stress.slurm
A opção -n8 indica que oito núcleos devem ser alocados para o serviço. A opção
--mem=100G indica que devem ser alocados 100 gigabytes para esse serviço.
No exemplo acima vemos uma única partição, nomeada batch. Por ser única,
ela também é a partição padrão e por isso é marcada com um asterisco. A
partição batch é composta por um único nó, chamado vital, o qual está livre.
O comando sinfo também lista o tempo limite (coluna TIMELIMIT) aos
quais os serviços estão sujeitos. Em todo cluster, os serviços são limitados a
um valor máximo de tempo de execução, de modo a permitir rotação entre os
serviços e dar a cada usuário a chance de seus serviços serem iniciados. Geral-
mente, quanto maior o cluster, menor o tempo máximo permitido.
O comando sinfo pode fornecer informações em um modo orientado a nó:
basta usar a opção -N:
$> sinfo -N
NODELIST NODES PARTITION STATE
vital 1 batch* mix
Observe que com a opção -l mais informações sobre cada nó é fornecida:
número de CPUs, soquetes, núcleos por soquete, threads por núcleo, memória,
além do motivo, se for aplicável, de um nó estar caı́do.
$> sinfo -Nl
Mon Aug 17 17:32:15 2020
NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON
vital 1 batch* mixed 224 4:28:2 103151 0 1 (null) none
Para visualizar a lista de serviços que estão atualmente rodando (no estado
RUNNING, indicado como “R”) ou que estão esperando por recursos (indicados
como “PD”, abreviação de PENDING), use o comando squeue:
A saı́da acima mostra que há um serviço rodando, cujo nome é “python” e
cujo identificador é 596. O identificador de serviço é único e é usado por vários
comandos do Slurm quando ações precisam ser tomadas para um serviço em
particular. Por exemplo, para cancelar o serviço “python”, você poderia execu-
tar
A coluna entitulada “TIME” exibe há quanto tempo o serviço está rodando.
“NODE” é o número de nós que foram alocados para o serviço, enquanto que a
coluna “NODELIST” lista os nomes dos nós que foram alocados. Para serviços
pendentes, esta coluna fornece a razão do porquê este serviço estar pendente.
A prioridade de serviços pendentes pode ser obtida através do comando sprio.
O comando sinfo, ao ser usado com algumas opções, pode ter sua saı́da
filtrada por usuário (“--user”), por partição (“--partition”) e por estado
(“--state”).
Para visualizar a fila para um usuário especı́fico (${USER} neste caso), use
a opção -u:
[12:10:19] pires@vital:~ :) $ squeue -u $USER
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
É possı́vel alterar os campos exibidos por padrão pelo comando squeue por
meio da variável SQUEUE_FORMAT:
Criando serviços
srun hostname
srun sleep 60
solicita o uso de uma CPU por 10 minutos em conjunto com 100 MB de memória
RAM na fila padrão. Quando iniciado, o serviço rodará como primeiro passo
o comando srun hostname, o qual executará o comando hostname no nó em
que a CPU requisitada foi alocada. Na sequência, um segundo passo do serviço
executará o comando sleep. Note que o parâmetro --job-name nos permite
7
fornecer um nome significativo ao serviço e o parâmetro --output define o
arquivo para o qual a saı́da do serviço deve ser enviada.
Capı́tulo 3
Submissão de serviços
sbatch submit.sh
sbatch: Submitted batch job 570
O serviço entra então na fila no estado PENDING. Tão logo os recursos se tor-
nam disponı́veis e o serviço possui a mais alta prioridade, uma alocação é criada
para ele e seu estado passa a ser RUNNING. Se o serviço termina corretamente,
seu estado é alterado para COMPLETED; caso contrário, para FAILED.
Após o término do serviço, o arquivo de saı́da indicado no script do serviço
contém o resultado dos comandos executados. No exemplo dado no capı́tulo
anterior, o arquivo chama-se res.txt, o qual pode ser visualizado com os co-
mandos a seguir:
$> cat res.txt
$> less res.txt
Você pode obter informações sobre os seus serviços que estão rodando com
o comando sstat, passando o identificador do serviço como argumento para o
parâmetro -j.
9
Capı́tulo 4
Cancelamento de serviços
11
Capı́tulo 5
Execução paralela de
serviços
13
Capı́tulo 6
Referências
15
Referências Bibliográficas
17