FAQ
FAQ – Perguntas frequentes relacionadas ao Serviço de Apoio ao Desenvolvimento Científico.
2. Como criar uma conta no cluster?
3. Como renovar minha conta no cluster?
4. Como acessar o ambiente do cluster?
5. Como solicitar instalação de software no cluster?
6. Como solicitar ajuda em meu script .pbs?
8. Como solicitar o desenvolvimento de um software científico?
9. Como solicitar alterações em um software científico?
10. Como solicitar o Apoio a Projetos de Pesquisa?
11. Minha solicitação está com status “PENDENTE”, como proceder?
12. Qual a quantidade de memória RAM e o número de processadores para a minha análise?
1. Quem pode usar o cluster?
Para ter acesso ao cluster é necessário possuir vínculo ativo com a instituição (UFV), ser cadastrado como membro em projeto registrado e vigente na Pró-Reitoria de Pesquisa e Pós-Graduação (PPG/UFV).
2. Como criar uma conta no cluster?
Existem duas formas para se criar conta no Cluster:
1º – O interessado acessa o sistema de criação de contas, escolhe o projeto e solicita a conta. Após solicitada, será enviado e-mail para o líder do projeto com a solicitação de autorização. O líder deve assinalar seu aceite para que a conta possa ser criada.
2º O Líder do projeto acessa o sistema, escolhe o projeto e solicita a criação de conta para os membros do projeto que ele desejar.
Link do sistema de abertura de contas: https://www3.dti.ufv.br/dti/cluster/
3. Como renovar minha conta no cluster?
Para continuar a utilizar o cluster após a expiração da conta, o usuário com vínculo ativo com a instituição, deve solicitar a renovação da sua conta por prazo determinado.
Para solicitar a renovação:
1º Clique aqui para acessar o sistema de abertura de contas.
2º Logue no sistema com as suas credenciais de acesso.
3º Localize a conta expirada.
4º Clique em ‘Detalhes’ conforme imagem abaixo:
5º Na página que irá abrir, no canto superior esquerdo há o botão ‘Solicitar Prorrogação’. Basta clicar neste botão e dar andamento à solicitação:
6º Após efetivar a solicitação, o líder do projeto cadastrado no sistema de criação de contas receberá um e-mail e deve aprovar a solicitação no mesmo sistema. Após a aprovação do líder o cadastro é atualizado imediatamente.
4. Como acessar o ambiente do cluster?
Vide instruções em nosso site: https://dct.uf.br/uso-do-ambiente/
5. Como solicitar instalação de software no cluster?
Para solicitar a instalação de software no cluster é necessário que o solicitante seja proprietário da conta, ou membro da equipe, e esteja com sua conta ativa no sistema do cluster, e nos envie um e-mail para dti@ufv.br, contendo os dados do solicitante (nome, nº da solicitação cluster e matrícula UFV), os dados do software (nome do software, versão, link para download, licença caso necessário). É importante observar a compatibilidade do software com Linux, pois instalamos apenas softwares compatíveis com o mesmo.
6. Como solicitar ajuda em meu script .pbs?
Para solicitar ajuda para construção e submissão do script .pbs é necessário que o solicitante seja proprietário da conta ou membro da equipe, e esteja com sua conta ativa no sistema do cluster, e nos envie um e-mail para dti@ufv.br, contendo os dados do solicitante (nome, nº da solicitação cluster e matrícula UFV), os dados do script (nome do script, caminho onde se encontra e o problema).
Obs. Nosso suporte técnico é voltado apenas a especificação de variáveis, formas de uso, e alguns detalhes dos requisitos de submissão do gerenciador de jobs e o sistema de filas. Não entramos em detalhes técnicos ou uso específico de seu software.
7. Ao submeter um job ele é automaticamente encerrado e recebi o e-mail de violação de recurso devido a utilização incorreta de processador, o que fazer?
Neste caso o job é finalizado porque você utilizou mais processadores do que a quantidade especificada no script .pbs. Você deve ajustar adequadamente a quantidade de processadores solicitados ao PBS tanto na diretiva ‘#PBS -l’ quanto ajustar a mesma quantidade no software propriamente dito, passando na linha de comando os argumentos corretos. Após a especificação correta tente submeter novamente seu script .pbs.
Sobre a reserva e uso de recursos, e do motivo pelo qual o job é finalizado. Existe no cluster um processo que monitora constantemente se cada job em execução não está utilizando mais recursos do que foi solicitado no script PBS. Considere o seguinte exemplo: o job foi submetido solicitando 20 processadores (2000%, cada processador corresponde a 100%) e, no entanto, em algum momento, o job utilizou 48 processadores (4711.1%). Por isso, o job é finalizado e o usuário recebe a notificação. O job é finalizado, porque em situações como esta é utilizado recursos que estão alocados para outros usuários, o que pode atrapalhar as análises dos mesmos.
É importante destacar novamente a diferença entre reserva e uso de recursos. Iremos exemplificar com o recurso processador, mas o mesmo se aplica para memória. A reserva de recursos é especificada na diretiva #PBS -l. Veja o seguinte exemplo: #PBS -l nodes=1:ppn=4,mem=10gb, onde é solicitado ao sistema de filas que o script irá necessitar utilizar 4 processadores. O sistema de filas apenas reserva estes 4 processadores. Como o job irá utilizar os processadores, quando estiver executando, depende de cada script e de cada software. Não é possível para o sistema de filas saber a priori que quando é solicitado 4 processadores se o seu script irá utilizar 1 ou 30 processadores. O seu script deve controlar isso.
Alguns softwares oferecem algum parâmetro para configurar a quantidade de processadores (ou número de threads) que o software vai utilizar. Se for o caso do seu software você pode ajustar este valor na linha de comando do seu software e fazer a correspondência com o que foi solicitado na diretiva de recursos do seu script pbs. Você deve consultar o manual (ou help) do seu software para verificar se existe este parâmetro.
Existem alguns softwares de processamento paralelo (utilizam mais de 1 processador) que podem ter como comportamento default utilizar todos os processadores disponíveis em uma máquina e que não fornecem esses mecanismos de ajustes de processadores. Se este for o caso do seu software, você pode tentar a seguinte alternativa com ‘cpuset’ que outros usuários do cluster já tiveram sucesso em utilizar. Para utilizá-la basta adicionar os seguintes comandos ao seu script .pbs:
#Habilita o carregamento de módulos
source /etc/profile.d/modules.sh
module load dct-utils/1.0
cpuset
O comando ‘cpuset’ deve ser o primeiro comando após o carregamento dos módulos utilizados. Isso é extremamente importante. Ele deve ser adicionado antes de utilizar o software propriamente dito.
Novamente, a solução recomendada é passar ao software o parâmetro de quantidade de processadores ou do número de threads, quando for o caso. É provável que o software que você utiliza tenha este parâmetro.
Caso não consiga resolver, entre em contato conosco conforme especificado em nosso FAQ no item: 2.5.6 Como solicitar ajuda em meu script (.pbs)?
8. Como solicitar o desenvolvimento de um software científico?
Primeiramente é necessário que você possua vínculo ativo com a instituição (UFV), que o software tenha cunho científico, e seja algo que possa contribuir com o avanço da pesquisa científica da instituição. A princípio será feita uma análise de viabilidade do software, e se aprovado pela chefia do serviço SDC, será criado um novo projeto para desenvolvimento do mesmo. Caso contrário, será apresentado o parecer e as devidas justificativas para o não desenvolvimento.
Para solicitar o serviço nos envie um e-mail para dti@ufv.br, contendo os dados do solicitante (nome e matrícula UFV), os dados do software (um resumo do que se trata o software).
9. Como solicitar alterações em um software científico?
Para solicitar alterações em um software existente é necessário que esse software tenha sido desenvolvido pela SDC, e o responsável possua vínculo ativo com a instituição.
Para solicitar o serviço nos envie um e-mail para dti@ufv.br, contendo os dados do solicitante (nome e matrícula UFV), os dados do software (nome, e um resumo do que se trata a alteração).
10. Como solicitar o Apoio a Projetos de Pesquisa?
Para solicitar o serviço nos envie um e-mail para dti@ufv.br, contendo os dados do solicitante (nome e matrícula UFV), os dados do projeto, e se possível o edital do mesmo.
11. Minha solicitação está com status “PENDENTE”, como proceder?
A solicitação cujo status é “PENDENTE”, significa que está pendente aprovação do líder do projeto, ele receberá um e-mail automático do cluster/UFV solicitando que entre no sistema do cluster e faça a avaliação, caso aprovada por ele, iremos automaticamente renovar a conta. No contrário o usuário será notificado que a conta não foi renovada por reprovação do líder. Em relação ao e-mail enviado ao líder, não tem como reenviá-lo, pois é automático, caso ele não tenha mais o e-mail basta entrar no sistema do cluster e fazer a avaliação da solicitação.
12. Qual a quantidade de memória RAM e o número de processadores para a minha análise?
Infelizmente, não existe resposta direta a tal questionamento porque temos algumas variáveis a considerar. Não conseguimos dizer: “use x processadores e y GB de RAM”.
Temos que considerar neste contexto:
- se o software faz processamento paralelo ou não;
- como os seus dados de entrada influenciam o uso de recursos;
- detalhes das estruturas de dados internas utilizadas pelo desenvolvedor do software;
- o próprio ambiente de filas do cluster: a composição de várias análises em um mesmo script .pbs; o tempo de execução de cada análise; dentre outros.
Daremos a seguir alguns parâmetros e insights que esperamos que ajudem para uma melhor utilização do ambiente do Cluster/UFV. (Este FAQ complementa outras informações do ambiente do cluster na nossa página https://dct.ufv.br/.
Entenda como atuam Processador e Memória (RAM)
Um primeiro aspecto devemos entender é como atuam processador e memória (RAM).
A RAM é o dispositivo onde são armazenadas informações para que o processador possa acessá-las e fazer os procedimentos inerentes ao software.
A RAM basicamente é definida em termos de sua velocidade e capacidade de armazenamento. No contexto da nossa questão, o que é mais relevante é a capacidade.
As informações ou dados de entrada de uma aplicação podem influenciar na quantidade necessária de RAM para executar a aplicação. Em outras palavras: um mesmo software pode necessitar de uma quantidade de RAM diferente de acordo com os dados de entrada. Ou seja, em geral o uso de RAM dependerá dos dados de entrada.
O processador, por sua vez, está mais associado à velocidade de execução de um software. Podemos distinguir basicamente dois tipos de processamento:sequencial e paralelo.
Diferente da RAM, que depende fortemente dos dados que serão carregados, a quantidade de processadores normalmente não depende do dados que serão processados. Quando o software faz processamento paralelo, possivelmente, ele possui algum parâmetro para especificar a quantidade de processadores (ou cores ou threads) passando valor desejado como argumento de entrada ao software.
Entenda a diferença de Processamento Sequencial e Processamento Paralelo
Em computação podemos distinguir duas formas básicas de processamento: sequencial e paralela.
Tradicionalmente, os softwares são escritos para serem executados de forma sequencial onde uma instrução é executada imediatamente depois da outra de forma sequencial.
Na computação paralela vários cálculos são realizados ao mesmo tempo, de forma paralela (ou concorrente). Partes de um mesmo software são executadas paralelamente, em mais de um fluxo de execução, diminuindo o tempo final (tempo de relógio) do processamento. É amplamente empregada em computação de alto desempenho. Cada fluxo poderia ser executado em um processador independente, por exemplo.
É importante destacar que o software deve ser concebido e implementado usando técnicas e métodos direcionados ao processamento paralelo.
IMPORTANTE: nem todo software faz processamento paralelo! O processamento paralelo é feito pelo software/implementação em si e não pelo ambiente do cluster. Assim, a especificação da quantidade de processadores deve ser feita explicitamente pelo usuário quando for utilizar o software. Cada software especifica a quantidade de processadores ou threads ou cores de uma maneira diferente. Faz parte da elaboração dos scripts pelos usuários consultar no help ou manual do programa de interesse como especificar o paralelismo.
Um pouco sobre o sistema de filas no cluster (PBS)
É importante entender o papel do PBS, que é o software responsável por gerenciar todas as submissões de análises no Cluster/UFV.
O PBS, dentre outras funções, faz a gerência das filas de jobs que devem ser executados e dos recursos disponibilizados no cluster. Ele é o responsável por definir quais jobs irão entrar em execução, em cada turno de execução do PBS. Hoje, este sistema é baseado na ordem de inserção do job na fila. Ou seja, um job inserido primeiro, em geral (mas não necessariamente), será executado primeiro. Porém, para um job entrar em execução deve haver pelo menos um nó disponível que contemple todos os requisitos, de memória e processadores, que foram requeridos pelo job no script pbs. O PBS tentará executar os jobs em ordem. Porém, se em um turno de verificação do PBS, o job não puder ser executado, porque não existe recurso disponível para executá-lo, o PBS tentará executar o próximo job na fila e o executará se houver recursos disponíveis.
Dica: devido a esta característica explicada acima do PBS, se o software não faz processamento paralelo especifique o quantidade de processadores no seu script .pbs como 1. Colocar mais de 1 processador se o software não faz processamento paralelo poderá:
- fazer com que o seu job (e os outros outros jobs) fique mais tempo na fila desnecessariamente
- e, também será um desperdício de recursos, quando o job entrar em execução, porque somente 1 processador será utilizado.
Se o software faz processamento paralelo, você poderia especificar 1 ou mais processadores. Note, porém, que aqui há um detalhe importante e há uma decisão importante a ser tomada pelo usuário: definir a quantidade de processadores a ser solicitados. Usar 1 processador fará com que o seu job entre mais rapidamente em execução, porém o tempo final de processamento poderá ser maior. Colocar vários processadores poderá fazer com que o job demore mais tempo para entrar em execução, já que o PBS somente irá colocar o job em execução quando houver recursos disponíveis para o job. Porém, o job irá executar mais rápido se beneficiando do processamento paralelo. Qual a quantidade de processadores a definir, neste caso, dependerá do tempo estimado para executar a sua análise e do uso atual do Cluster/UFV pelos demais pesquisadores. Em alguns casos, pode valer a pena especificar uma quantidade maior de processadores, se sua análise demanda muito tempo. Outras vezes especificar uma quantidade menor vale a pena se a análise não demanda muito tempo de processamento. Quando o cluster está sendo muito utilizado, colocar uma quantidade muito alta de processadores poderá fazer com que o seu job fique muito tempo na fila esperando para ser executado.
Dica: o comando hinfo pode lhe auxiliar a definir os recursos. Este utilitário mostra os recursos de memória e processador disponíveis em cada nó ativo do cluster.
Composição de análises em um mesmo job
Algumas vezes pode ser interessante realizar mais de uma análise em um mesmo script .pbs. Mas isso não é uma regra geral. Isso depende de como são as demandas da pesquisa.
Em geral, pesquisas que demandam um grande volume de análise, ou seja, muitas execuções em dados/parâmetros diferentes, podem se beneficiar desta técnica. Isso porque o PBS também limita a quantidade de jobs por usuários (ver mais detalhes na Políticas de Uso). Assim, colocando mais de uma análise em um mesmo job há um melhor aproveitamento do cluster quando esta é uma característica relevante para a pesquisa.
Entendendo a diferença entre Reserva e Uso de Recursos
É importantíssimo se atentar para a diferença entre reserva e uso de recursos.
O PBS não é responsável pelo processamento paralelo nem pela alocação de memória. O processamento paralelo e a alocação de memória é de responsabilidade do software/implementação. O PBS apenas faz a gerência de recursos solicitados a ele. Se o software não faz processamento paralelo não adianta colocar mais de 1 processador. O processamento paralelo deve ser feito explicitamente pelo software e configurado adequadamente quando for utilizá-lo.
O PBS atua na reserva/gerência de recursos. O uso de recursos é de responsabilidade do script/software e é responsabilidade do usuário a correta configuração dentro do seu script.
Além disso, a execução de jobs pode ser finalizada precocemente (pelo monitor de processos do PBS) por excederem o uso de recursos reservados no script .pbs. Neste caso, totalmente indesejável, o job usa mais recursos do que deveria. O PBS, que é o sistema de filas, monitora constantemente se cada job em execução não está utilizando mais recursos do que foi solicitado no script .pbs.
Para entender melhor, considere o seguinte exemplo fictício: um job é submetido solicitando 1 processador. No entanto, em algum momento durante a execução da análise, o job utiliza 48 processadores. Isso pode acontecer, por exemplo, em softwares que fazem processamento paralelo e tem como o comportamento padrão utilizar todas as cpus disponíveis na máquina (nó de cálculo) e o usuário esqueceu de configurar o número de processadores que o software deveria utilizar no seu script. O PBS irá finalizar este job porque ele compromete as análises que rodam no mesmo nó de cálculo já que o job está utilizando processadores reservados a outro job. Por isso, o job é finalizado e o usuário deverá conferir e corrigir o seu script .pbs.
É importante destacar novamente a diferença entre reserva e uso de recursos. Considere o seguinte exemplo com o recurso processador, mas o mesmo se aplica para memória. A reserva de recursos é especificada na diretiva #PBS -l. Veja o seguinte exemplo:
#PBS -l nodes=1:ppn=4,mem=10gb
onde é informado (solicitado) ao PBS que o script irá necessitar utilizar 4 processadores e 10gb de RAM. O sistema de filas somente colocará o job em execução quando tiver pelo menos 4 processadores e 10gb de RAM livres em um nó de cálculo. Porém, como o job irá utilizar os processadores, quando estiver executando, depende de cada script e de cada software. Não é possível para o sistema de filas saber a priori que quando é solicitado 4 processadores se o seu script irá utilizar 1 ou 30 processadores. O seu script deve controlar isso passando os argumentos corretos para o software.
A maioria dos softwares que fazem processamento paralelo fornecem algum parâmetro para configurar a quantidade de processadores (ou número de threads) que o software vai utilizar. Se for o caso do seu software, você pode ajustar este valor na linha de comando do seu software e fazer a correspondência com o que foi solicitado na diretiva de recursos do seu script pbs. Você deve consultar o manual (ou help) do seu software para verificar se existe este parâmetro e como configurá-lo.
Dica: é importante que verifique sempre o seu e-mail institucional, e e-mail cadastrado no seu script, e os arquivos gerados pelo PBS após a execução de um job. Nestes casos, é informado o motivo da finalização do job. Se for o caso, você deverá ajustar a diretiva de alocação, especificando a quantidade adequada de recursos no seu script .pbs. Quando a finalização for por especificação inadequada de CPU, você também deverá ajustar os comandos próprios do software utilizado quanto a utilização de CPU.
Especificação de processador e memória na diretiva #PBS -l (reserva) e explicitamente na chamada do software (uso)
Novamente, a especificação de processadores em geral se dará como argumento ao software, se ele fizer processamento paralelo. Deve-se atentar e colocar os mesmos valores tanto na chamada do software, quando for o caso, e na diretiva #PBS -l.
A especificação de memória, por outro lado, é um pouco mais complicada porque depende dos dados de entrada. Você deverá estimar o valor e solicitar ao PBS. Caso o job seja finalizado por exceder os recursos, você deverá fazer os ajustes, aumentando a quantidade de memória solicitada, e submeter novamente. A especificação de memória deve ser feita empiricamente na maioria das vezes. Alguns usuários, dada esta dificuldade em definir um valor adequado, fazem uma superestimação da memória. Isso por um lado faz com que o job não seja finalizado por exceder recursos, já que solicitou recursos além do necessário, mas por outro lado o job poderá ficar mais tempo em fila.
Tenha em mente, especialmente na especificação de RAM, que a quantidade de RAM pode oscilar no decorrer do tempo de execução da análise.
Dica: o comando jinfo pode lhe ajudar a especificar a memória e verificação do uso de processadores.
Veja por exemplo um exemplo de saída do comando jinfo em uma submissão onde temos uma grande quantidade de recursos desperdiçados:
Getting job ‘12345678’
Job name: analiseTeste
Job id: ‘12345678’
Submit args: exemplo.pbs
CPU required: 1000.00%
CPU used: 107.00%
RAM required: 8192.00MB
RAM used: 3958.73MB
Warning: your job, at this moment, uses less processors than was required.
Info: CPU utilization is OK at this moment.
Veja as observações a seguir quanto ao uso de CPU deste job. O usuário solicita 10 processadores (ppn=10) e o seu job está utilizando apenas 1. Assim, se não houver nenhum fato novo no script que aumente o número de cpus, estamos com 9 cpus alocadas para o job sem uso durante o período se sua execução. Ou em outras palavras, estamos com 9 cpus desperdiçados. O mesmo acontece com a RAM, onde foi solicitada 8GB de RAM e só está utilizando 4GB.
O desperdício de recursos é muito ruim porque consome da quota de recursos por usuário, sendo que não está sendo utilizada. Este recurso desperdiçado poderia estar sendo utilizado por outros jobs (do próprio usuário ou de outras pessoas). Além disso, outros jobs, inclusive os do próprio usuário, ficarão na fila por mais tempo uma vez que o sistema que gerencia os recursos disponíveis entende ter menos recursos disponíveis do que de fato tem.