Uso do Ambiente

O uso do cluster da UFV para atividades de pesquisa, no que diz respeito aos aspectos computacionais, se resume às seguintes atividades:

  1. Criação/Renovação da conta pessoal de utilização do cluster
  2. Conhecer as políticas de uso do cluster
  3. Realizar conexão remota ao cluster via Secure Shell (ssh)
  4. Transferir arquivos
  5. Construir e submeter o script pbs
  6. Monitorar os jobs e conferir os resultados

Estas atividades serão detalhadas abaixo.

1. Criação/Renovação da conta pessoal

Elaboramos neste link um tutorial de como você pode solicitar a criação da sua conta pessoal de usuário no cluster. Lá você também encontra informações de como renovar a sua conta que eventualmente tenha expirado.

2. Conhecer as políticas de uso

As políticas de uso do cluster atualizadas, além daquelas informadas no momento da criação da sua conta, podem ser consultadas em https://dct.ufv.br/politicas. É importante se atentar a todos os aspectos, mas principalmente quanto a proibição do compartilhamento de credenciais de acesso e a segurança dos dados.

NOTAÇÃO:

Utilizaremos várias vezes neste material a seguinte notação: <info>

Nesta notação, o campo <info> deverá ser substituído pelo valor correspondente para compor um comando adequadamente.

Por exemplo, seja o comando abaixo:

        ssh <seu_login>@cluster.dti.ufv.br
    

Neste exemplo, o campo <seu_login> corresponde ao login de usuário no cluster. Isso significa que o texto <seu_login> deve ser substituído pelo identificador do seu usuário para gerar o comando correto.

Neste exemplo, se o usuário possui o login es123456 o comando correto ficaria assim:

        ssh es12345@cluster.dti.ufv.br
    

Assim estaria errado:

        ssh <seu_login>@cluster.dti.ufv.br
    

3. Realizar conexão remota ao cluster via Secure Shell (ssh)

O acesso remoto é a capacidade de acessar um computador (ou servidor) de qualquer local remoto. Ou, em outras palavras, é a capacidade de acessar a partir do seu computador pessoal um outro computador sem ter acesso físico direto a ele.

Você precisará realizar a conexão remota ao cluster para realizar as suas tarefas tais como transferir e acessar arquivos, submeter e monitorar um job, consultar os softwares disponíveis, consultar os resultados das submissões, dentre outras tarefas corriqueiras.

Para realizar a conexão remota ao cluster você já deve possuir a sua conta pessoal de usuário no cluster. O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas.

Por questão de segurança, o acesso remoto somente poderá ser feito por meio de máquinas conectadas na rede interna da Universidade Federal de Viçosa (UFV), nos campus de Viçosa, de Florestal ou de Rio Paranaíba, com a utilização do protocolo ssh.

Para realizar o acesso remoto você precisará de um software cliente de acesso remoto instalado em seu computador pessoal. Pode-se usar o programa PuTTY, tanto em Linux como em Windows. Como em Linux é mais comum o uso do terminal de linha de comandos, do próprio sistema, o programa PuTTY somente será apresentado para Windows.

Acessar o cluster de fora da UFV

O acesso ao cluster através de uma rede fora do campus da UFV é possível. Para realizar o acesso externo à rede da UFV, você deverá configurar uma rede VPN (Virtual Private Network). Neste caso, consulte o tutorial de configuração da rede VPN do seu sistema operacional através deste link.

3.1 Conexão remota em ambiente Linux

Abra o terminal de comandos e digite o comando a seguir e tecle [Enter]:

        ssh -X <seu_login>@cluster.dti.ufv.br
    

Onde, <seu_login> deve ser substituído por seu login de acesso. Por exemplo, se o seu login de acesso for es123456 o comando ficaria assim:

        ssh -X es123456@cluster.dti.ufv.br
    

Após teclar [Enter] será solicitada a sua senha de acesso. O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas.

Se tudo der certo você estará conectado remotamente na máquina cluster que é a máquina principal, também conhecida como head node. A partir deste ponto você poderá criar os seus scripts e submeter as suas análises.

Instalar cliente ssh

Você deverá instalar no seu computador pessoal um cliente ssh, caso ainda não possua. O comando abaixo mostra como instalar o cliente ssh em algumas distribuições Debian e seus derivados tais como Ubuntu, Linux Mint e outros:

        sudo apt-get install openssh-client
    

3.2 Conexão remota em Windows com PuTTY

A conexão remota ao cluster da UFV em ambiente Windows pode ser feita através do software PuTTY, que é um cliente ssh para a plataforma Windows. Através do PuTTY você pode conectar remotamente ao cluster. Você pode fazer o download deste software aqui.

Execute o programa PuTTY, clicando no ícone do respectivo programa, e uma janela como a seguinte será aberta:

Exemplo de janela do software PuTTY

Na categoria à esquerda selecione Session e configure conforme abaixo:

  • Host Name (or IP address): cluster.dti.ufv.br
  • Port: 22
  • Connection type: ssh
  • Tecle [Enter] ou clique em [Open]
  • Será aberta uma janela de terminal de comandos solicitando seu login (login as) e a sua senha (Password) de acesso ao cluster.

O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas. Você pode salvar sua seção também, e carregá-la toda vez que quiser.

Se tudo der certo você estará conectado na máquina cluster que é a máquina principal, também conhecida como head node. A partir deste ponto você poderá criar os seus scripts e submeter as suas análises.

4. Transferência remota de arquivos

Para realizar os seus trabalhos nos cluster você eventualmente precisará copiar arquivos da sua máquina pessoal para o cluster. E, também, realizar a cópia de arquivos do cluster para a sua máquina pessoal.

A transferência de arquivos pode ser feita de duas formas:

  • Via interface gráfica:
    • Em Linux: pelo próprio gerenciador de arquivos. Existem vários gerenciadores de arquivos para cada distribuição. No sistema operacional Ubuntu podemos utilizar o Nautilus. No sistema operacional Linux Mint podemos utilizar o Nemo, Caja ou Thunar, dependendo do ambiente gráfico instalado. Estes softwares já vem instalados no sistema operacional.
    • Em Windows: utilizando o software WinSCP.
  • Via linha de comando através do comando scp

4.1 Transferência remota de arquivos em Linux via interface gráfica

Em vários sistemas Linux com interface gráfica, o navegador de arquivos padrão permite conexão via protocolo ssh com abertura de janela mostrando os arquivos e pastas, admitindo o arraste ou cópia numa ou em outra direção: do seu computador pessoal para o cluster; ou do cluster para o seu computador pessoal.

Atenção: apesar de ser muito prático, todas as alterações que fizer utilizando o gerenciador de arquivos para transferir arquivos remotamente serão automaticamente efetivadas no cluster. Por isso, muita atenção e cuidado ao manipular os seus arquivos.

Um detalhe importante: as operações feitas utilizando o gerenciador de arquivos para transferir arquivos remotamente são realizadas via rede e, por isso, são mais lentas que as operações feitas no seu computador local. Por isso, sempre espere que as operações finalizem antes de encerrar a seção do gerenciador de arquivos.

Não aconselhamos a transferência de arquivos grandes com o uso de VPN porque a transferência pode ser extremamente lenta e a conexão pode ser interrompida por diversos motivos. Nestes casos é aconselhado transferir na rede interna da UFV. Você também poderá baixar alguns arquivos diretamente no cluster através de utilitários como o wget.

A seguir mostraremos como fazer a conexão via ssh com o navegador de arquivos em algumas distribuições Linux mais comuns.

Atenção: qualquer caractere digitado a mais ou a menos fará com que o procedimento não funcione. Atenção a cada caractere digitado. Não pode haver espaço na linha digitada.

Ubuntu 20.04 e Ubuntu 18.04

Para se conectar abra o navegador de arquivos:

Exemplo de janela mostrando o gerenciador de arquivos no Ubuntu 20.04 e 18.04

e clique no menu +Outros locais (localizado no canto inferior esquerdo da janela). No campo Conectar a servidor (localizado na parte inferior da janela) preencha conforme exemplo abaixo:

sftp://<seu_login>@cluster.dti.ufv.br/home/<seu_login>
    

Onde, <seu_login> deve ser substituído por seu login de acesso. Por exemplo, se o seu login de acesso for es123456 ficaria assim:

        sftp://es123456@cluster.dti.ufv.br/home/es123456
    

Clique no botão Conectar e será solicitada a sua senha de acesso. O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas.

Após digitar a sua senha de acesso você deverá ver os seus arquivos armazenados no cluster e já pode transferir arquivos para o cluster e do cluster para o seu computador pessoal.

Ubuntu 16.04

Para se conectar abra o navegador de arquivos:

Exemplo de janela mostrando o gerenciador de arquivos no Ubuntu 16.04

e clique no menu Conectar a servidor (localizado no canto inferior esquerdo da janela). Em seguida, será aberta uma pequena janela, com o título Conectar ao servidor, solicitando as informações da conexão. Preencha o campo Endereço do servidor conforme exemplo abaixo:

sftp://<seu_login>@cluster.dti.ufv.br/home/<seu_login>
    

Onde, <seu_login> deve ser substituído por seu login de acesso. Por exemplo, se o seu login de acesso for es123456 ficaria assim:

        sftp://es123456@cluster.dti.ufv.br/home/es123456
    

Clique no botão Conectar e será solicitada a sua senha de acesso. O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas.

Após digitar a sua senha de acesso você deverá ver os seus arquivos armazenados no cluster e já pode transferir arquivos para o cluster e do cluster para o seu computador pessoal.

Linux Mint 20 Cinnamon

Para se conectar abra o navegador de arquivos e clique no menu: Arquivo → Conectar a um servidor.

Em seguida, será aberta uma pequena janela, com o título Conectar ao servidor, solicitando as informações da conexão:

Exemplo de janela mostrando o gerenciador de arquivos no Linux Mint 20 Cinnamon

Em Detalhes do Servidor preencha conforme abaixo:

  • Servidor: cluster.dti.ufv.br
  • Porta: 22
  • Tipo: ssh
  • Pasta: preencha conforme exemplo abaixo:
        /home/<seu_login>
    

Onde, <seu_login> deve ser substituído por seu login de acesso. Por exemplo, se o seu login de acesso for es123456 ficaria assim:

        /home/es123456
    

Em Detalhes do usuário preencha os campos Nome do usuário e Senha com o seu login e senha de acesso ao cluster, que devem ser obtidos acessando o sistema de criação de contas.

Clique no botão Conectar. Você deverá ver os seus arquivos armazenados no cluster e já pode transferir arquivos para o cluster e do cluster para o seu computador pessoal.

4.2 Transferência de arquivos em Windows: WinSCP

Em ambiente Windows a transferência de arquivos pode ser feita através do programa WinSCP.

Abra o programa WinSCP clicando no ícone do respectivo programa. Uma janela como a seguinte será apresentada:

Exemplo de janela de software WinSCP – configurações de sessão

Configure conforme abaixo:

  • Protocolo de arquivos: SFTP
  • Host: cluster.dti.ufv.br
  • Porta: 22
  • Usuário: digite o seu login de acesso ao cluster
  • Senha: digite a sua senha de acesso ao cluster
  • Clique no botão Login

O login e senha de acesso devem ser obtidos acessando o sistema de criação de contas. Uma janela como a seguir será apresentada permitindo o arraste de arquivos entre o cluster e o computador em uso e vice-versa.

Exemplo de janela de software WinSCP – listagem de arquivos

4.3 Transferência de arquivos via linha de comando: scp

Uma outra forma de transferir arquivos é através do terminal, com o comando scp.

Mostraremos abaixo como o comando scp pode ser utilizado para transferir arquivos entre sua máquina pessoal e o cluster. Para ver mais detalhes deste comando consulte o manual do mesmo.

Copiando arquivos da sua máquina pessoal para o cluster

Para copiar arquivos da sua máquina pessoal para o cluster a utilização básica do scp se parece com isto:

       scp <arquivo_1> <arquivo_2>...<arquivo_n> <seu_login>@cluster.dti.ufv.br:<diretório_destino>
    

Onde:

<arquivo_i> é a identificação do arquivo a ser copiado, e que está na sua máquina pessoal, especificando, se necessário, o caminho completo do arquivo (o caminho padrão é o diretório corrente)

<seu_login> corresponde ao seu login de usuário no cluster

<diretório_destino> é a identificação do local onde o arquivo será gravado no cluster

Nos exemplos a seguir utilizaremos o login es123456. Você deverá substituir pelo seu login de acesso.

  • Exemplo: desejo transferir o arquivo ‘Documentos/meu_arquivo.txt’, que está armazenado no meu computador pessoal, para o diretório ‘dados’ na minha pasta pessoal no cluster:
        scp Documentos/meu_arquivo.txt es123456@cluster.dti.ufv.br:/home/es123456/dados/
    
  • Exemplo: desejo transferir os arquivos ‘Documentos/meu_arquivo.txt’ e ‘Downloads/teste.tar.gz’, que estão armazenados no meu computador pessoal, para minha pasta pessoal (conhecida como home) no cluster:
        scp Documentos/meu_arquivo.txt Downloads/teste.tar.gz es123456@cluster.dti.ufv.br:/home/es123456/
    

Copiando diretórios da sua máquina pessoal para o cluster

A cópia de diretórios da sua máquina pessoal para o cluster é semelhante a cópia de arquivos mas devemos especificar a opção -r ao scp. A opção -r copia recursivamente diretórios inteiros.

No exemplo a seguir utilizaremos o login es123456. Você deverá substituir pelo seu login de acesso.

  • Exemplo: desejo copiar o diretório o ‘Documentos/dados_analise1’, que está armazenado no meu computador, pessoal para o diretório ‘dados’ na minha pasta pessoal no cluster:
        scp -r Documentos/dados_analise1 es123456@cluster.dti.ufv.br:/home/es123456/dados/
    

Copiando arquivos do cluster para sua máquina pessoal

Para copiar arquivos que estão armazenados no cluster para sua máquina pessoal a utilização básica do scp se parece com isto:

        scp <seu_login>@cluster.dti.ufv.br:<arquivo> <diretório_destino>
    

Onde:

<arquivo> é a identificação do arquivo a ser copiado que está armazenado no cluster, especificando o caminho completo

<seu_login> corresponde ao seu login de usuário no cluster

<diretório_destino> é a identificação do diretório na sua máquina pessoal onde o arquivo será gravado

  • Exemplo: desejo copiar para a pasta ‘Documentos’, do meu computador pessoal, o arquivo ‘dados/meu_arquivo.txt’ que está armazenado no cluster.
 scp es123456@cluster.dti.ufv.br:/home/es123456/dados/meu_arquivo.txt Documentos/
    

Copiando diretórios do cluster para sua máquina pessoal

A cópia de diretórios do cluster para a sua máquina pessoal é semelhante a cópia de arquivos mas devemos especificar a opção -r ao scp. A opção -r copia recursivamente diretórios inteiros.

No exemplo a seguir utilizaremos o login es123456. Você deverá substituir pelo seu login de acesso.

  • Exemplo: desejo copiar para a pasta ‘Documentos’, do meu computador pessoal, o diretório ‘dados/resultado_analise1’ que está armazenado no cluster:
        scp -r es123456@cluster.dti.ufv.br:/home/es123456/dados/resultado_analise1 Documentos/
    

5. Construção de script pbs e submissão de trabalhos

Toda análise a ser executada no cluster basicamente consiste em um conjunto de passos onde um determinado software é utilizado para realizar uma tarefa sobre os dados de entrada.

Por isso, a execução das análises no cluster devem ser feitas utilizando scripts, que consistem de um conjunto de comandos formando um roteiro. Normalmente estes scripts são elaborados em shell script.

Os scripts são construídos no head node. Ou copiados da sua máquina pessoal para o head node. Uma vez no head node, eles são submetidos para o sistema gerenciador de recursos, que é o PBS (conforme será mostrado adiante). Porém, os scripts não são executados no head node. Os scripts são executados, de forma transparente, nas máquinas denominadas nós escravos ou nós de cálculo.

Para serem executados nos nós de cálculo estes scripts:

  • Especificam os recursos que serão necessários para rodar a análise. Como exemplo de recursos temos: quantidade de processador, quantidade de memória e tempo máximo de execução.
  • E, são submetidos para as filas de processamento utilizando o gerenciador de recursos.

O sistema gerenciador de recursos, é o responsável pelo controle de recursos disponíveis no cluster e pela execução e monitoramento dos trabalhos (ou jobs). No cluster utilizamos o OpenPBS como software gerenciador de recursos. E, por isso, chamamos estes scripts de “scripts pbs”, para fazer a associação com o OpenPBS. E, também denominaremos o OpenPBS apenas como PBS por simplicidade de denominação.

Não é permitido acesso interativo aos nós de cálculo, estando os mesmos reservados para o processamento batch ou em lote através de scripts pbs.

Para submeter uma análise você precisará:

  1. Estar conectado via ssh no cluster para ter um terminal de comandos disponível (veja a seção Realizar conexão remota ao cluster via ssh).
  2. Elaborar o seu script pbs, especificando adequadamente os recursos necessários e os comandos necessários da sua análise.
  3. Submeter o script pbs.
  4. Monitorar o job.
  5. Conferir e tratar os resultados.

5.1 O script pbs

Como dito o script pbs nada mais é que um conjunto de instruções sequenciais.

Normalmente estes scripts são elaborados em shell script que deverá ter os comandos formando um roteiro a ser executado. O script pbs, além do roteiro, precisa especificar os recursos que serão necessários para execução deste roteiro.

A seguir mostraremos exemplos utilizando Bash que é um interpretador de comandos muito utilizado na construção de scripts.

Diferentemente de um bash convencional, em scripts pbs devemos incluir as diretivas #PBS que são responsáveis pela especificação de recursos necessários para execução deste roteiro. Estas diretivas são definidas utilizando os comentários do bash iniciando-se com #PBS e definindo formatos específicos para cada tipo de informação que será interpretada. Nos exemplos, ficará mais claro.

Exemplo 1 – Um script pbs básico

Temos abaixo um exemplo de script pbs feito em bash. Este é um exemplo genérico, sem qualquer utilidade prática. Serve apenas para ilustrar os principais componentes de um script pbs.

Exemplo 1 – Script pbs básico

A linha 1 define que o interpretador utilizado será o bash.

Nas linhas 3-22 temos comentários bash, que são iniciados com #. Os comentários entre as linhas 3-12 são comentários comuns com qualquer informação textual que possam ser relevantes ao utilizador. Neste exemplo, os comentários são texto livre descrevendo as especificações do script em questão. No entanto, nas linhas 14-17 os comentários são diretivas PBS que serão interpretadas e entendidas pelo gerenciador de recursos. As configurações nestas diretivas são muito relevantes e devem ser definidas com atenção. Nestas diretivas são especificados os recursos computacionais necessários, e que devem ser reservados, para a execução do seu job.

As diretivas possuem sintaxe específica. Então, atenção a cada caractere digitado nas diretivas #PBS. Vejamos a explicação para cada diretiva utilizada:

  • A diretiva #PBS -N especifica o nome do job no sistema de filas. Veja a linha 13, #PBS -N analise1Py, onde nós especificamos que o job possui o nome ‘analise1Py’. Este nome deve ser sugestivo porque identificará o job no sistema de filas e não pode conter espaços.
  • A diretiva #PBS -l especifica os recursos computacionais que deverão ser reservados para o job. Esta é a diretiva mais importante. Veja a linha 14, #PBS -l nodes=1:ppn=1,mem=500mb. Neste exemplo estamos dizendo ao PBS que a análise em questão precisará no máximo de 1 processador (ppn=1) e 500mb de memória RAM (mem=500mb).
  • A diretiva #PBS -m especifica as situações em que o PBS enviará as notificações por e-mail com respeito ao job. Veja na linha 15, #PBS -m ae, onde dizemos ao PBS que queremos ser notificados quando o job for abortado pelo PBS (opção ‘a’) ou quando ele finalizar a execução (opção ‘e’). Podemos ser notificados quando o job iniciar a execução (opção ‘b’): #PBS -m abe
  • Em complemento à diretiva #PBS -m precisamos especificar qual o e-mail de destino das mensagens. Isso é feito na diretiva #PBS -M. Veja na linha 16, #PBS -M <seu_email>@ufv.br onde deveremos especificar o e-mail. É importante que seja uma e-mail institucional. Se seu e-mail institucional for fulano.de.tal@ufv.br ficaria assim a linha 16: #PBS -M fulano.de.tal@ufv.br

As linhas 23 e 27 não devem ser alteradas. A linha 23 é responsável por guardar a referência do diretório de trabalho no momento da submissão do script pbs e é muito útil na construção de referências relativas aos arquivos de entrada. A linha 27 é responsável para habilitar o carregamento de módulos.

No cluster os softwares são instalados e disponibilizados via módulos. Veja mais informações sobre utilização módulos na Seção Softwares/Módulos. Mas adiantando um pouco sobre módulos: eles permitem a modificação dinâmica do ambiente do usuário e é responsável pelo carregamento de softwares instalados. Quando desejo utilizar um determinado software primeiramente devo carregar o módulo apropriado antes de utilizar o software.

De fato, o roteiro propriamente dito começa após a linha 27. Neste exemplo, o nosso roteiro consiste em:

  1. Carregar o software python versão 2.7.11 (linha 31).
  2. E, apenas imprimir a sua versão (linha 35).

Após a construção do script pbs você deverá submetê-lo ao PBS.

Exemplo 2 – Especificando a fila de destino – fila qtime

Após construir um script pbs e submetê-lo ao PBS os jobs irão para alguma fila de processamento. No cluster temos algumas filas de processamento com características diferentes. Por exemplo, temos uma fila para jobs com execução rápida, que tem o nome de qtime; outra para jobs que requeiram muita memória, que tem o nome high_mem. Neste link você pode consultar as filas disponíveis e suas características.

A especificação da fila não é obrigatória. Caso não seja especificado nenhuma fila os jobs são submetidos para a fila padrão de processamento.

Para submeter para a fila qtime precisaremos:

  • Especificar o recurso walltime, na diretiva #PBS -l
  • E, explicitamente, definir a fila qtime como destino, usando a diretiva #PBS -q qtime

Veja o exemplo abaixo:

Exemplo 2 – definindo a fila qtime como destino

Basicamente temos duas alterações substanciais com relação ao exemplo anterior:

  1. A especificação do walltime: #PBS -l nodes=1:ppn=1,mem=1gb,walltime=04:30:50
  2. A especificação da fila qtime: #PBS -q qtime

Neste exemplo, o job especifica que precisará de no máximo 4h30m50s (walltime=04:30:50) para finalizar a execução. Especifica que precisará de 1 processador (ppn=1) e 1gb de RAM (mem=1gb).

Cada fila tem as suas especificidades. A fila qtime, por exemplo, só aceita jobs com um walltime máximo de 72 h. Por isso, é indicada para jobs com execução rápida. Ela possui prioridade sobre a fila padrão.

A fila padrão atende a maioria dos jobs submetidos ao cluster.

Exemplo 3 – Especificando a fila de destino – fila high_mem

Temos no cluster também a fila high_mem. Esta fila foi criada para jobs que requeiram uma quantidade substancial de RAM.

Ela aceita jobs requisitando no mínimo 25GB de memória RAM. Esta fila é bem limitada quanto ao número de jobs que cada usuário pode submeter nela e deve ser utilizada somente caso as outras filas não atendam às características de uso de memória para rodar a sua análise.

Para utilizá-la basta especificá-la como fila de destino na diretiva #PBS -q, conforme exemplo abaixo:

#PBS -l nodes=1:ppn=12,mem=30gb
#PBS -q high_mem
    

Neste exemplo, estamos especificando que o job precisará de 12 processadores (ppn=12) e 30gb de RAM (mem=30gb). E, que deverá ser submetido para a fila high_mem.

Exemplo 4 – Especificando nós ‘standard

Com a reimplantação do cluster no início de 2016, outros nós de cálculo foram adicionados para prover maior capacidade de hardware ao cluster como um todo. Porém, estes novos hardwares possuem configurações diferentes. Para a maioria dos casos isso não fará diferença.

Porém, alguns tipos de experimentos não podem ser realizados em máquinas com hardwares diferentes. Para estes casos, deve ser adicionado mais um argumento nas diretivas #PBS para “filtrar” as máquinas com o mesmo hardware. As máquinas com o mesmo hardware são especificadas com a característica STANDARD.

Veja o exemplo abaixo:

Exemplo 4 – especificando filtro para nós com característica STANDARD

A linha responsável para fazer a filtragem é a linha 12:

#PBS -l select=1:ncpus=2:features=STANDARD:mem=2gb
    

Neste exemplo, estamos especificando que o job precisará de 2 processadores (ncpus=2) e 2gb de RAM (mem=2gb). E, que somente nós com característica STANDARD (features=STANDARD) deverão atender ao job.

5.2 Submetendo um trabalho (job) ao cluster

Após construir o script pbs, especificando adequadamente os recursos nas diretivas #PBS e colocando nele o roteiro da análise, devemos de fato executar a análise de modo a ter os resultados.

Porém, o script pbs não deve ser executado diretamente no head node, tal como seria feita em uma máquina convencional. O script pbs, para ser executado deve ser submetido para o sistema de filas com um comando específico do PBS: qsub

Submeter um trabalho ao cluster é muito simples. Basicamente, basta executar o comando, conforme abaixo:

qsub <seu_script.pbs>
    

onde <seu_script.pbs> deve ser substituído pelo nome do arquivo contendo o código do seu script pbs. Por exemplo, se o arquivo que você deseja submeter se chama analise_mothur.pbs o comando ficaria assim:

qsub analise_mothur.pbs
    

Após submeter o job, você verá no terminal um identificador. Este identificador é atribuído pelo sistema de filas ao job que você acabou de submeter e é utilizado para acompanhá-lo no sistema de filas.

Inicialmente, o job pode não entrar em execução de imediato. Mas assim que tiver recursos disponíveis no cluster para executar o seu job ele entrará em execução.

Após submeter o job você deverá monitorar o seu job.

5.3 Monitoramento de um trabalho (job) no cluster

Além do comando qsub, que mostramos anteriormente, temos outros comandos muito importantes para o monitoramento dos jobs. Veja na Tabela 1 alguns dos principais comandos do PBS:

qsubPara submissão de jobs
qdelPara remoção de jobs das filas
qstatPara exibe informações de filas e jobs
Tabela 1 – Principais comandos do PBS

Na Tabela 2 são exibidos alguns argumentos para utilizar os comandos:

qsub <meu_script.pbs>Submete o script pbs do arquivo <meu_script.pbs>
qdel <job_id>Deleta o job <job_id> especificado
qstatExibe informação sobre filas e jobs
qstat -aExibe todos os jobs no sistema
qstat -anu <seu_login>Exibe todos os jobs pertencente ao usuário <seu_login>
qstat -f <job_id>Exibe todas as informações conhecidas sobre o job <job_id> especificado
Tabela 2 – Principais comandos do PBS com argumentos

Nestes exemplos:

  • <meu_script.pbs> deverá ser substituído pelo nome do arquivo a ser submetido.
  • <seu_login> deverá ser substituído pelo seu login de acesso ao cluster.
  • <job_id> deverá ser substituído pelo identificador do job no sistema de filas

Além destes comandos temos alguns utilitários. Eles foram elaborados pela equipe do Serviço de Apoio ao Desenvolvimento Científico (SDC) para auxiliar no monitoramento dos jobs em execução. E, também, para auxiliar na especificação de recursos de hardware nos scripts pbs. São o comando jinfo e hinfo

O comando ‘jinfo

Este utilitário exibe alguns dados de utilização de recursos de um determinado job. Mostra a quantidade de memória RAM solicitada e a quantidade de RAM utilizada. Mostra também a quantidade de cpus(%) solicitada e a quantidade de cpus(%) sendo utilizada. Este utilitário também mostra a adequação de recursos do job, alertando o usuário caso o job utilize menos ou mais recursos do que foi definido no seu script pbs.

Para utilizá-lo basta digitar no seu prompt o seguinte comando:

jinfo <job_id>
    

Onde <job_id> deve ser substituído pelo identificador do job a ser verificado.

Uma das dificuldades que muitos usuários enfrentam é saber definir adequadamente a quantidade de processador e memória RAM que deve ser especificada no seu script pbs. Este utilitário foi elaborado com o intuito de auxiliar nesta tarefa.

É importante destacar que os valores utilizados de processador e RAM podem variar ao longo do tempo dependendo do tipo de tarefa que é realizado na análise. Por isso, é importante utilizá-los, quando necessário, em alguns momentos da execução do seu job.

O comando ‘hinfo

Este utilitário mostra os recursos de memória RAM e processadores disponíveis em cada nó ativo do cluster.

Para utilizá-lo basta digitar o seguinte comando no seu prompt:

hinfo
    

Ele foi elaborado para auxiliar no dimensionamento da quantidade de recursos a ser requerido no script pbs a fim de diminuir os trabalhos que ficam em fila.

Por exemplo, suponha a situação onde alguns jobs estão em fila porque requerem 8gb de memória RAM para ser executado. E, existem vários nós de cálculo com 7gb de memória RAM disponível (o que pode ser visto utilizando o comando hinfo). Neste caso, se o processo puder ser executado com 7gb de memória RAM, e se esta quantidade de memória fosse especificado no script pbs, ele não entraria na fila. O mesmo raciocínio é feito para o uso de processadores.

6. Softwares/Módulos

No cluster os softwares são instalados e disponibilizados via módulos.

Os módulos fornecem mecanismos para modificação dinâmica das variáveis de ambiente. Cada módulo contém a informação necessária para configurar e carregar um software ou um conjunto de softwares correlatos.

Módulos são úteis para gerenciar diferentes versões de softwares, atendendo as demandas heterogêneas dos usuários do cluster, no que diz respeito a softwares e a suas versões.

Mostraremos através de exemplos como utilizar módulos.

Para consultar módulos disponíveis

Para consultar os módulos disponíveis digitamos o comando module avail no terminal.

Cada item na saída deste comando é um módulo ou modulefile que poderá ser carregado e utilizado.

  • Para consultar todos os módulos disponíveis digite no terminal:
module avail
    
Exemplo de saída no terminal do comando module avail
  • Para consultar todos os módulos disponíveis que iniciem com a letra r digite no terminal:
module avail r
    
Exemplo de saída no terminal do comando module avail r
  • Para consultar todos os módulos disponíveis do mothur digite no terminal:
module avail mothur
    
Exemplo de saída no terminal do comando module avail mothur

Carregar um módulo

Após consultar se o módulo está disponível, com o comando module avail, você deverá carregar o módulo antes de utilizar o software.

Para carregar um módulo usamos o comando:

module load <modulefile>
    

Onde <modulefile> é o nome de um módulo qualquer consultado pelo comando module avail, mostrado anteriormente.

Por exemplo, para utilizar o software R na versão 3.6.3 precisaremos antes carregar o módulo apropriado. Isso poderá ser feito utilizando o comando:

module load r/3.6.3
    

Após digitar o comando acima, o software R na versão 3.6.3 será carregado e estará disponível para uso.

É importante notar que os módulos carregados ficam disponíveis apenas na seção atual.

Para listar os módulos carregados

Para visualizar os módulos que você carregou na seção atual digite no terminal:

module list
    
Exemplo de saída no terminal do comando module list

Para descarregar um módulo

Após carregar um módulo você poderá descarregá-lo para, por exemplo, carregar outra versão do software. Semelhante ao comando module load para descarregar um módulo usamos o comando module unload:

module unload <modulefile>
    

Onde <modulefile> é o nome de um módulo previamente carregado.

Por exemplo, suponhamos que tenhamos carregado o software python versão 3.7.4, com o comando module load python/3.7.4. E, agora desejamos utilizar o python versão 2.7.17. Para isso, basta descarregar o módulo do python/3.7.4 e carregar o módulo python/2.7.17. Isso seria feito com os comandos abaixo:

module unload python/3.7.4
module load python/2.7.17
    

Após digitar os comandos acima, teremos o python versão 2.7.17 carregado no seu ambiente.

Para descarregar todos os módulos

Se quiser descarregar todos os módulos que estão carregados no seu ambiente utilize o comando module purge, conforme abaixo:

module purge
    

7. Contato

Críticas e sugestões para o aprimoramento desse texto são muito bem-vindas. Envie um e-mail para dti@ufv.br.

© 2020 Universidade Federal de Viçosa - Todos os Direitos Reservados