Difference between revisions of "Como rodar seu experimento"

From VeRLab Wiki
Jump to: navigation, search
(Pasta home)
(O que você precisa para executar seu experimento no VeRLab/JLab)
 
(20 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
<br><br><br>
 
<br><br><br>
  
== Pasta '''home''', armazenamento em rede ==
+
== Pasta '''home''' - armazenamento em rede ==
 
Cada usuário da rede tem uma pasta pessoal montada automaticamente em todas as máquinas no path: <code>/home/<nome_usuario> </code>.
 
Cada usuário da rede tem uma pasta pessoal montada automaticamente em todas as máquinas no path: <code>/home/<nome_usuario> </code>.
  
Line 19: Line 19:
 
<br><br><br>
 
<br><br><br>
  
== Pastas '''draft-xxx''' de "rascunho" - armazenamento local ==
+
== Pastas '''draft-xxx''' de "rascunho" - armazenamento em disco local ==
 
Para armazenar, '''de forma local na máquina''', arquivos maiores como datasets, containers e resultados de experimentos, fica disponível uma "<u>pasta de rascunho</u>" no caminho '''/draft-xxx''' (antigamente era chamada '''/homeLocal''').  
 
Para armazenar, '''de forma local na máquina''', arquivos maiores como datasets, containers e resultados de experimentos, fica disponível uma "<u>pasta de rascunho</u>" no caminho '''/draft-xxx''' (antigamente era chamada '''/homeLocal''').  
 
<br><br>
 
<br><br>
Line 33: Line 33:
 
! caminho !! tipo de armazenamento !! Taxa de I/O máxima típica* !! Obs
 
! caminho !! tipo de armazenamento !! Taxa de I/O máxima típica* !! Obs
 
|-
 
|-
| <code>'''/draft-hdd'''</code> || disco magnético (HDD SATA) || Read ~180MB/s  Write ~140MB/s || Usualmente temos discos maiores ~2TB - 4TB
+
| <code>'''/draft-hdd'''</code> || HDD SATA (disco magnético) || Read ~180MB/s  Write ~140MB/s || Usualmente temos discos maiores ~2TB - 4TB
 
|-
 
|-
 
| <code>'''/draft-ssd'''</code> || SSD SATA || Read ~500MB/s  Write ~400MB/s || Em geral, espaço menor, ~ 480GB - 1TB
 
| <code>'''/draft-ssd'''</code> || SSD SATA || Read ~500MB/s  Write ~400MB/s || Em geral, espaço menor, ~ 480GB - 1TB
Line 43: Line 43:
 
Mas podemos deduzir que os discos HDD serão um pouco mais lentos, mas terão maior espaço disponível. Por outro lado, os SSD e NVMe serão mais rápidos e com menor espaço.
 
Mas podemos deduzir que os discos HDD serão um pouco mais lentos, mas terão maior espaço disponível. Por outro lado, os SSD e NVMe serão mais rápidos e com menor espaço.
 
<br><br>
 
<br><br>
Esse espaço de armazenamento '''não tem uma quota específica por usuário''', então deve ser '''bom senso de todos limpar os dados''' dessas pastas quando parar de utilizar. Tem sido recorrente os usuários "esquecerem" dados antigos nessas pastas, então lembre-se de liberar seus dados para permitir que outro usuários tenham espaço em disco disponível quando necessitarem.
+
Esse espaço de armazenamento '''não tem uma quota específica por usuário''', então deve ser '''bom senso de todos limpar os dados''' dessas pastas quando parar de utilizar. Tem sido recorrente os usuários "esquecerem" dados antigos nessas pastas, então lembre-se de liberar seus dados para permitir que outros usuários encontrem espaço disponível quando necessitarem.
 
<br><br>
 
<br><br>
 
O usuário que desejar baixar datasets, criar container singularity e fazer um experimento nas pastas '''/draft-xxx''', deve solicitar à equipe de infraestrutura para criar uma subpasta para seu usuário, por exemplo, <code>/draft-hdd/<usuario></code>
 
O usuário que desejar baixar datasets, criar container singularity e fazer um experimento nas pastas '''/draft-xxx''', deve solicitar à equipe de infraestrutura para criar uma subpasta para seu usuário, por exemplo, <code>/draft-hdd/<usuario></code>
 
<br><br><br>
 
<br><br><br>
  
== Pastas '''/srv/storage/forge''' - armazenamento em rede (Serviço de '''storage''' ==
+
== Pastas '''/srv/storage''' - armazenamento em rede distribuído (Serviço de '''storage''') ==
Também temos o serviço de storage, popularmente chamado apenas de '''storage''', que visa armazenar arquivos maiores como datasets e resultados de experimentos, mas remotamente e disponível em rede.
+
Também temos o serviço de storage, popularmente chamado apenas de '''storage''', que visa armazenar arquivos maiores como datasets e resultados de experimentos em rede, de modo que fica disponível em todas as máquinas da rede VeRLab/JLab.
 
<br><br>
 
<br><br>
A grande vantagem é que todas as máquinas vão er acesso aos dados, porém a taxa de I/O cria tráfego na rede e pode sofrer lentidão se muitos experimentos estão sendo executados, ou se o serviço de storage está sobre carregado. Em geral, a taxa de I/0 pode ser mais baixa que as pastas '''draft''' mas é o custo benefício para executar experimentos compartilhando dados em mais de uma máquina simultaneamente.
+
O caminho de montagem do serviço de storage se encontra em <code> '''/srv/storage/'''</code>
 +
<br><br>
 +
A grande vantagem é que todas as máquinas vão ter acesso aos dados, porém a taxa de I/O cria tráfego na rede e pode sofrer lentidão se tem muitos experimentos sendo executados simultaneamente, ou se o serviço de storage está sobrecarregado. Em geral, a taxa de I/0 pode ser mais baixa que as pastas '''/draft-xxx''' mas é o custo benefício para executar experimentos simultâneos compartilhando dados em várias máquinas.
 +
<br><br>
 +
'''Existe um esforço da equipe de infraestrutura de manter o serviço de storage estável e online, mas algumas queda de energia e defeitos em disco podem ocorrer, mesmo que com uma baixa frequência'''.
 +
<br><br>
 +
O usuário que desejar baixar datasets, criar container singularity e fazer um experimento nas pastas '''/srv/storage/forge''', deve solicitar à equipe de infraestrutura para criar uma subpasta para seu usuário, por exemplo, <code>/srv/storage/forge/<nome_usuario></code>
 +
<br><br><br>
  
Existe um esforço da equipe de infraestrutura de manter o serviço de storage estável e online, mas algumas queda de energia e defeitos em disco podem ocorrer, mesmo que com uma baixa frequência.
+
= O que você precisa para executar seu experimento no VeRLab/JLab =
<br><br><br>
+
# Possuir um login de usuário habilitado na rede do laboratório
 +
# Ter uma pasta para seu usuário usar como rascunho ('''/draft-xxx/<nome_usuario>''' ou '''/srv/storage/forge/<nome_usuario>''')
 +
# Ter seu container com o ambiente de execução usando o [[Singularity4]] ou [https://www.verlab.dcc.ufmg.br/mediawiki/index.php/Docker Docker-Rootless-Mode]
 +
# Procurar na planilha de "'''[VeRLab] Utilização, Experimentos GPUs e CPUs'''", aba "Perfil das Máquinas" uma máquina que atenda seus requisitos de hardware
 +
# Preencher seu whatsapp/telegram na aba "Contatos"
 +
# Verificar disponibilidade da máquina na aba "Status de Execução" e agendar seu uso na aba "Log e Intenção de Utilização".
  
= O que você precisa =
+
'''OBS:'''
# Possuir um login no laboratório
+
* O link para a planilha "'''[VeRLab] Utilização, Experimentos GPUs e CPUs'''" encontra-se na <u>[https://www.verlab.dcc.ufmg.br/restrict-area/ na área restrita do site (acesso com seu usuário e senha do laboratório)]</u>
# Criar seu ambiente de execução usando o [[Singularity]]
 
# Procurar na planilha de "'''Dados Gerais das Máquinas'''" um servidor de processamentos que atenda a seus requisitos de hardware na [https://www.verlab.dcc.ufmg.br/restrict-area/ na área restrita do site (mesma credencial das máquinas)]
 
# Preencher a intenção de uso da máquina na planilha de "'''Utilização e Experimentos com GPUs e CPUs'''" [https://www.verlab.dcc.ufmg.br/restrict-area/ na área restrita do site (mesma credencial das máquinas)]
 
 
<br><br><br>
 
<br><br><br>
  
 
= Antes de rodar seu experimento =
 
= Antes de rodar seu experimento =
{|
+
# Verifique na planilha "'''[VeRLab] Utilização, Experimentos GPUs e CPUs'''" se a máquina está disponível e se você '''já preencheu uma reserva para seu usuário'''. Caso a máquina esteja ocupada, verifique a próxima data disponível e preencha a reserva.
|[[File:Grafana-exemplo.jpg|440px|left]]
 
|[[File:Tmux-exemplo.jpg|180px|right]]
 
|}
 
 
 
# Verifique na "planilha de utilização das máquinas" se a máquina está disponível e '''preencha uma reserva para seu usuário'''. Caso a máquina esteja ocupada, verifique a próxima data disponível e preencha a reserva.
 
 
# Quando estiver logado na máquina, verifique se os recursos computacionais estão livres:
 
# Quando estiver logado na máquina, verifique se os recursos computacionais estão livres:
#* <del> Pode-se ter uma ideia geral na página da Grafana que tem link e instruções de login na [https://www.verlab.dcc.ufmg.br/restrict-area/ área restrita do site do Verlab]</del> <div style="color: red">Infelizmente a Grafana está desativada no momento, precisamos de ajuda para colocar ela online novamente!</div>
+
<!--#* <del> Pode-se ter uma ideia geral na página da Grafana que tem link e instruções de login na [https://www.verlab.dcc.ufmg.br/restrict-area/ área restrita do site do Verlab]</del> <div style="color: red">Infelizmente a Grafana está desativada no momento, precisamos de ajuda para colocar ela online novamente!</div>
 +
-->
 
#* Parte 1: uso da '''CPU e RAM''' pode-se usar o '''htop''' ( [https://www.treinaweb.com.br/blog/monitorando-processos-com-o-htop/ como usar o htop] )
 
#* Parte 1: uso da '''CPU e RAM''' pode-se usar o '''htop''' ( [https://www.treinaweb.com.br/blog/monitorando-processos-com-o-htop/ como usar o htop] )
 
#* Parte 2: uso da '''GPU (placa de vídeo)''' , pode-se rodar <code> nvidia-smi </code>. <br>Os processos que estiverem carregados na memória da GPU além o Xorg (mesmo que com zero de processamento) mostram que tem usuários utilizando e vão precisar de algum recurso de CPU e RAM para a troca de contexto de seu experimento.
 
#* Parte 2: uso da '''GPU (placa de vídeo)''' , pode-se rodar <code> nvidia-smi </code>. <br>Os processos que estiverem carregados na memória da GPU além o Xorg (mesmo que com zero de processamento) mostram que tem usuários utilizando e vão precisar de algum recurso de CPU e RAM para a troca de contexto de seu experimento.
# Se a máquina estiver ocupada, pode-se conversar com quem está usando para saber quando termina seu experimento ou combinar um compartilhamento do uso
+
# Se uma máquina específica que precisar estiver ocupada, pode-se conversar com quem está usando para combinar um compartilhamento do uso.
 +
<br><br>
 +
{|
 +
<!--|[[File:Grafana-exemplo.jpg|440px|left]]-->
 +
|[[File:Tmux-exemplo.jpg|400px|right]]
 +
|}
 
<br><br><br>
 
<br><br><br>
<!--
 
<gallery>
 
File:Grafana-exemplo.jpg|420px|Grafana
 
File:Tmux-exemplo.jpg|200px|tmux
 
</gallery>
 
-->
 
  
 
= Durante a execução do seu experimento =
 
= Durante a execução do seu experimento =
 +
<!--
 
{|
 
{|
 
|[[File:Tmux-exemplo.jpg|300px|right]]
 
|[[File:Tmux-exemplo.jpg|300px|right]]
 
|}
 
|}
'''Monitore o uso de recursos do seu experimento para garantir que ele não está vazando memória RAM e/ou consumindo todos recursos da máquina'''.  Principalmente se a máquina for um ''chunkserver do storage'' (confira na lista de máquinas [https://www.verlab.dcc.ufmg.br/restrict-area/ área restrita do site do Verlab]).
+
-->
 +
'''Monitore o uso de recursos do seu experimento para garantir que ele não está vazando memória RAM e/ou consumindo todos recursos da máquina'''.  Principalmente se a máquina for um ''chunkserver do storage'' (confira na lista de máquinas [https://www.verlab.dcc.ufmg.br/restrict-area/ área restrita do site do VeRLab]).
 
<br>
 
<br>
O serviço de armazenamento distribuído, que chamamos de ''storage'', contém todas as imagens singularity, datasets e é responsável pelo experimento de todos os colegas do Verlab/J.  
+
O serviço de armazenamento distribuído, que chamamos de ''storage'', contém todas as imagens singularity, datasets e é responsável pelo experimento de todos os colegas do VeRLab/JLab.  
 
<br>
 
<br>
 
'''Se seu experimento exaurir os recursos computacionais das máquinas chunkserver, todo sistema de storage fica lento e atrapalha o experimento de todos!'''
 
'''Se seu experimento exaurir os recursos computacionais das máquinas chunkserver, todo sistema de storage fica lento e atrapalha o experimento de todos!'''
Line 96: Line 102:
 
Para monitorar seu experimento, é sugerido:
 
Para monitorar seu experimento, é sugerido:
 
# usar um multiplexador de terminais para manter sua sessão executando em segundo plano após desconectar o ssh. Nas máquinas da rede VeRLab/JLab temos instalado [https://www.verlab.dcc.ufmg.br/mediawiki/index.php/Trabalhando_remotamente tmux e byobu (link para tutoriais)]
 
# usar um multiplexador de terminais para manter sua sessão executando em segundo plano após desconectar o ssh. Nas máquinas da rede VeRLab/JLab temos instalado [https://www.verlab.dcc.ufmg.br/mediawiki/index.php/Trabalhando_remotamente tmux e byobu (link para tutoriais)]
# usar uma "pane" com htop, filtrando seu usuário, ou nome do executável;
+
# usar uma "pane" com htop, filtrando seu usuário, ou nome do executável <code> htop --user <nome_usuario> </code>;
 
# usar outra "pane" com <code> watch nvidia-smi </code> (a tela é atualizada a cada 2 segundos)
 
# usar outra "pane" com <code> watch nvidia-smi </code> (a tela é atualizada a cada 2 segundos)
 
<br><br><br>
 
<br><br><br>

Latest revision as of 12:34, 30 September 2025

Página em construção

Os passos a seguir atendem para a grande maioria dos experimentos, se tem necessidade de algo diferente ou mais específico, procure um membro da equipe de infraestrutura do VeRLab/JLab.



Infraestrutura da rede VeRLab/JLab

  • A equipe de infraestrutura é composta por membros do VeRLab/JLab que trabalham de forma voluntária para manter o melhor possível a disponibilidades dos serviços e equipamentos. Se tiver interesse em participar e aprender, procure um dos professores ou membro da equipe para ajudar.
  • A rede é composta em sua maioria por Servidores de processamento e Desktop com S.O. Ubuntu em que cada usuário consegue realizar autenticação com sua senha.




Pasta home - armazenamento em rede

Cada usuário da rede tem uma pasta pessoal montada automaticamente em todas as máquinas no path: /home/<nome_usuario> .

Essa é a home do seu usuário e ela está mapeada em rede e tem uma quota de tamanho limitado. O objetivo dessa pasta é armazenar apenas arquivos menores como códigos fonte, scripts, artigos, arquivos .pdf e etc.

Não armazene datasets, containers ou arquivos grandes (>10GB), temos outra solução para isso na rede explicado a seguir.

A pasta home não tem um backup, mas ela é armazenada de forma redundante com duas cópias em servidores diferentes, de modo que se um servidor/disco falhar, um segundo disponibiliza a cópia dos arquivos.


Pastas draft-xxx de "rascunho" - armazenamento em disco local

Para armazenar, de forma local na máquina, arquivos maiores como datasets, containers e resultados de experimentos, fica disponível uma "pasta de rascunho" no caminho /draft-xxx (antigamente era chamada /homeLocal).

A pasta draft-xxx só tem visibilidade local, não fica em rede, ou seja, ela só está disponível na máquina específica, não é disponível em todas as máquinas ao mesmo tempo. Mas tem a vantagem de ter uma alta taxa de I/O (escrita e leitura), já que são discos conectados no barramento da placa-mãe. Assim a tendência de experimentos que precisam escreve/ler constantemente do disco executarem mais rápido na pasta local /draft-xxx do que na pasta em rede da storage (explicado a seguir).

As pastas /draft-xxx são usadas para montar os discos/partições extras da máquina. Esses espaços de armazenamento são independente do disco/partição que tem o S.O. Ubuntu, mas não tem qualquer tipo de backup ou redundância, então sempre tenha repositórios para salvar cópias de backup dos seus códigos e scripts.

Existe um esforço continuo da equipe de infraestrutura em manter os armazenamentos sempre operando e de forma confiável, o que dá uma "sensação de que nunca estragam", mas pode ocorrer.

Os caminhos mudam o "xxx" de acordo com o tipo de tecnologia de armazenamento:

caminho tipo de armazenamento Taxa de I/O máxima típica* Obs
/draft-hdd HDD SATA (disco magnético) Read ~180MB/s Write ~140MB/s Usualmente temos discos maiores ~2TB - 4TB
/draft-ssd SSD SATA Read ~500MB/s Write ~400MB/s Em geral, espaço menor, ~ 480GB - 1TB
/draft-nvme SSD NVMe Read ~2400MB/s Write ~1500MB/s Em geral, espaço menor, ~ 480GB - 1TB
  • Atenção: Essas taxas de I/O são típicas e teóricas, apenas para comparação entre as velocidades de cada tecnologia de armazenamento, não são os valores reais de R/W que teremos nas máquinas.

Mas podemos deduzir que os discos HDD serão um pouco mais lentos, mas terão maior espaço disponível. Por outro lado, os SSD e NVMe serão mais rápidos e com menor espaço.

Esse espaço de armazenamento não tem uma quota específica por usuário, então deve ser bom senso de todos limpar os dados dessas pastas quando parar de utilizar. Tem sido recorrente os usuários "esquecerem" dados antigos nessas pastas, então lembre-se de liberar seus dados para permitir que outros usuários encontrem espaço disponível quando necessitarem.

O usuário que desejar baixar datasets, criar container singularity e fazer um experimento nas pastas /draft-xxx, deve solicitar à equipe de infraestrutura para criar uma subpasta para seu usuário, por exemplo, /draft-hdd/<usuario>


Pastas /srv/storage - armazenamento em rede distribuído (Serviço de storage)

Também temos o serviço de storage, popularmente chamado apenas de storage, que visa armazenar arquivos maiores como datasets e resultados de experimentos em rede, de modo que fica disponível em todas as máquinas da rede VeRLab/JLab.

O caminho de montagem do serviço de storage se encontra em /srv/storage/

A grande vantagem é que todas as máquinas vão ter acesso aos dados, porém a taxa de I/O cria tráfego na rede e pode sofrer lentidão se tem muitos experimentos sendo executados simultaneamente, ou se o serviço de storage está sobrecarregado. Em geral, a taxa de I/0 pode ser mais baixa que as pastas /draft-xxx mas é o custo benefício para executar experimentos simultâneos compartilhando dados em várias máquinas.

Existe um esforço da equipe de infraestrutura de manter o serviço de storage estável e online, mas algumas queda de energia e defeitos em disco podem ocorrer, mesmo que com uma baixa frequência.

O usuário que desejar baixar datasets, criar container singularity e fazer um experimento nas pastas /srv/storage/forge, deve solicitar à equipe de infraestrutura para criar uma subpasta para seu usuário, por exemplo, /srv/storage/forge/<nome_usuario>


O que você precisa para executar seu experimento no VeRLab/JLab

  1. Possuir um login de usuário habilitado na rede do laboratório
  2. Ter uma pasta para seu usuário usar como rascunho (/draft-xxx/<nome_usuario> ou /srv/storage/forge/<nome_usuario>)
  3. Ter seu container com o ambiente de execução usando o Singularity4 ou Docker-Rootless-Mode
  4. Procurar na planilha de "[VeRLab] Utilização, Experimentos GPUs e CPUs", aba "Perfil das Máquinas" uma máquina que atenda seus requisitos de hardware
  5. Preencher seu whatsapp/telegram na aba "Contatos"
  6. Verificar disponibilidade da máquina na aba "Status de Execução" e agendar seu uso na aba "Log e Intenção de Utilização".

OBS:




Antes de rodar seu experimento

  1. Verifique na planilha "[VeRLab] Utilização, Experimentos GPUs e CPUs" se a máquina está disponível e se você já preencheu uma reserva para seu usuário. Caso a máquina esteja ocupada, verifique a próxima data disponível e preencha a reserva.
  2. Quando estiver logado na máquina, verifique se os recursos computacionais estão livres:
    • Parte 1: uso da CPU e RAM pode-se usar o htop ( como usar o htop )
    • Parte 2: uso da GPU (placa de vídeo) , pode-se rodar nvidia-smi .
      Os processos que estiverem carregados na memória da GPU além o Xorg (mesmo que com zero de processamento) mostram que tem usuários utilizando e vão precisar de algum recurso de CPU e RAM para a troca de contexto de seu experimento.
  3. Se uma máquina específica que precisar estiver ocupada, pode-se conversar com quem está usando para combinar um compartilhamento do uso.



Tmux-exemplo.jpg




Durante a execução do seu experimento

Monitore o uso de recursos do seu experimento para garantir que ele não está vazando memória RAM e/ou consumindo todos recursos da máquina. Principalmente se a máquina for um chunkserver do storage (confira na lista de máquinas área restrita do site do VeRLab).
O serviço de armazenamento distribuído, que chamamos de storage, contém todas as imagens singularity, datasets e é responsável pelo experimento de todos os colegas do VeRLab/JLab.
Se seu experimento exaurir os recursos computacionais das máquinas chunkserver, todo sistema de storage fica lento e atrapalha o experimento de todos!


Para monitorar seu experimento, é sugerido:

  1. usar um multiplexador de terminais para manter sua sessão executando em segundo plano após desconectar o ssh. Nas máquinas da rede VeRLab/JLab temos instalado tmux e byobu (link para tutoriais)
  2. usar uma "pane" com htop, filtrando seu usuário, ou nome do executável htop --user <nome_usuario> ;
  3. usar outra "pane" com watch nvidia-smi (a tela é atualizada a cada 2 segundos)