Monitorando CPU e Memória nos clusters¶
Otimizar o uso de CPU e memória em seus jobs permite que você e outros usuários dos clusters utilizem os recursos de maneira mais eficiente, resultando melhor desempenho e menor tempo de espera. Este guia demonstra como monitorar o uso de CPU e memória em várias situações, incluindo jobs futuros, em execução e completados.
Nota Geral¶
Garantir uma alocação ideal de recursos é importante para a eficiência do cluster. Consulte a página de hardware do cluster (especialmente a seção sobre partições e hardware) antes de iniciar qualquer atividade. Isso fornecerá informações sobre os recursos disponíveis e as filas no cluster.
Monitoramento de Jobs Futuros¶
Utilizando /usr/bin/time, você pode coletar estatísticas sobre os recursos utilizados por uma aplicação. Por exemplo:
[username@c051 ~]$ /usr/bin/time -v stress-ng --cpu 8 --timeout 10s
stress-ng: info: [62127] dispatching hogs: 8 cpu
stress-ng: info: [62127] successful run completed in 10.06s
Command being timed: "stress-ng --cpu 8 --timeout 10s"
User time (seconds): 79.92
System time (seconds): 0.04
Percent of CPU this job got: 792%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:10.08
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 4780
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 32
Minor (reclaiming a frame) page faults: 11061
Voluntary context switches: 76
Involuntary context switches: 4212
Swaps: 0
File system inputs: 5400
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Para determinar a quantidade de memória utilizada pelo seu job (e futuros jobs), verifique o "Maximum resident set size" na saída.
Monitorando Jobs em Execução¶
Você pode monitorar o uso de recursos de um job em execução. Primeiro, use squeue para identificar o nó de processamento onde seu job está sendo executado:
[username@login1 ~]$ squeue --me
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
785510 standard job_clus username R 8-15:45:40 5 c[040-044]
Em seguida, conecte-se ao nó apropriado via SSH:
Uma vez conectado ao nó de computação, utilize os comandos ps ou top para monitorar o uso de recursos do seu job.
Usando ps¶
O comando ps fornece informações instantâneas de uso sempre que é executado. Por exemplo:
Usando top¶
O comando top exibe informações estatísticas em tempo real e interativamente. Para filtrar os resultados para o seu job e usuário, pressione U e digite seu nome de usuário e pressione Enter. Procure a coluna RES para ver o uso de memória. Para sair do top, pressione Q.
Monitoramento de Jobs Multi-nó com ClusterShell¶
Para jobs multi-nó, utilize o clush do ClusterShell. Consulte nosso guia de configuração do ClusterShell para instruções de configuração e uso.
Monitoramento de Jobs Finalizados¶
O Slurm registra estatísticas para cada job, incluindo uso de memória e CPU.
Usando sacct¶
O sacct oferece mais flexibilidade e detalhes sobre os jobs finalizados. Recomendamos definir a variável de ambiente SACCT_FORMAT para personalizar quais campos deseja exibir. Por exemplo:
[username@login1 ~]$ export SACCT_FORMAT="JobID%20,JobName,User,Partition,NodeList,Elapsed,State,ExitCode,MaxRSS,AllocTRES%32"
[username@login1 ~]$ sacct -j <job_id>
Examine o valor "MaxRSS" para ver o uso de memória do seu job.
Ao monitorar a utilização de recursos de seus jobs, você pode planejar melhor futuras execuções e otimizar o uso de CPU e memória, garantindo maior eficiência na execução de tarefas computacionais.