Pular para conteúdo

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:

[username@login1 ~]$ ssh c051
[username@c051 ~]$

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:

[username@c051 ~]$ ps -u$USER -o %cpu,rss,args

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.