Mudanças entre as edições de "Micro Manual de Utilização do Cluster"

De LCAD
Ir para: navegação, pesquisa
(Problemas de Concorrência)
(Problemas de Concorrência)
Linha 77: Linha 77:
 
Considere, por exemplo, que um usuário deseja efetuar experimentos no Enterprise2 (ou no Enterprise3) a partir da submissão de vários jobs simultâneos e independentes (por exemplo, com entradas, configurações e saídas diferentes).
 
Considere, por exemplo, que um usuário deseja efetuar experimentos no Enterprise2 (ou no Enterprise3) a partir da submissão de vários jobs simultâneos e independentes (por exemplo, com entradas, configurações e saídas diferentes).
  
Nestas condições, suponha que cada job, quando começar a ser executado em uma dada máquina execute, os seguintes comandos (na ordem apresentada):
+
Nestas condições, suponha que cada job, quando começar a ser executado em uma dada máquina, efetue os seguintes comandos (na ordem apresentada):
*teste para checar se um diretório específico, de nome constante, existe. Por exemplo, este teste verifica se o diretório DIR encontra-se em locais default (por exemplo, /tmp, /dados);
+
*teste para checar se um diretório específico, de nome constante, existe. Por exemplo, este teste verifica se o diretório DIR encontra-se em locais default (por exemplo, /tmp, /dados).
*criação do diretório DIR caso sele não esteja presente (através do comando mkdir, por exemplo).
+
*caso o teste anterior seja afimativo, o diretório DIR é removido (comando rmdir), caso contrário, ele é criado (comando mkdir).
 +
 
 +
Suponha, ainda, que dois jobs distintos (refereincados de agora em diante, como X e Y) sejam direcionados, pelo SGE, para uma mesma máquina (lembre-se que o SGE enxerga cores de processamento e não processadores). Nesta situação, caso a ordem de execução abaixo ocorra, teremos um problema de concorrência:
 +
*job X testa a existência do diretório X. O retorno do teste é falso.
 +
*job Y testa a existência do diretório Y. O retorno do teste é falso.
 +
*job Y cria o diretório DIR.
 +
*job X cria o diretório DIR. Aqui, obtem-se um erro: "mkdir: não é possível criar o diretório `DIR': Arquivo existe"

Edição das 18h21min de 18 de fevereiro de 2009

MICRO MANUAL DE USO DO SGE Ultima atualizaccao: 18/02/2009 Por: Felipe Thomaz Pedroni.

Antes de usar este manual recomenda-se, fortemente, que o usuário leia o "N1_Grid_Engine_6_Users_Guide", disponível em /gridware/sge/N1_Grid_Engine_6_Users_Guide.pdf de enterprise (enterprise).

Uso do SGE para Executar um Único Job

Um script demonstrando como usar o SGE para disparar um único job está disponível em:

/gridware/sge/um_job.sh

Examine o arquivo. Ele contém tudo que é necessário para disparar um job.


Uso do SGE para Executar um Único Job em Várias Máquinas Simultaneamente

Um script demonstrando como usar o SGE para disparar múltiplos jobs simultaneamente (jobs independentes com entradas diferentes, por exemplo) está disponível em:

/gridware/sge/multiplos_jobs.sh

Examine o arquivo. Ele contém tudo que é necessário para disparar múltiplos jobs.


Uso do SGE para Executar um Job Paralelo MPI (lam-mpi)

Um script demonstrando como usar o SGE para disparar jobs mpi está disponível em:

/gridware/sge/mpi_job.sh

Examine o arquivo. Ele contém tudo que é necessário para disparar jobs mpi.


Outros Exemplos de Uso do SGE

Existem outros exemplos de SGE em: /gridware/sge/examples


Comandos

O Sun Grid Engine (SGE) possui comandos para enviar e remover processos, monitorar e controlar filas. A seguir os exemplos:

  • qacct: Extrair informações dos logs do cluster.
  • qalter: Modificar atributos de um processo já enviado, porém, ainda não executado.
  • qconf: Providencia uma interface gráfica da configuração das filas.
  • qdel: Remove jobs.
  • qhold: Faz com que os jobs em execução, voltem para a fila de espera.
  • qhost: Mostra informações sobre os hosts de execução.
  • qlogin: Inicializa uma sessão similar ao telnet.
  • qmake: Funciona como o tradicional make, porém, tem a habilidade de distribuir independentes partes pelo cluster.
  • qmod: Permite ao dono suspender ou habilitar a fila.
  • qmon: Abre uma interface gráfica para monitorar o cluster.
  • qresub: Cria novos jobs copiados de outros que estejam na área de espera ou execução.
  • qrls: Reenvia jobs, que foram bloqueados pelo qhold, da área de espera para área de execução.
  • qrsh: Pode ser usado para vários propósitos, como providenciar uma execução remota de uma aplicação.
  • qselect: Aplicar ações em uma fila selecionada.
  • qsh: Abre um shell no xterm.
  • qstat: Mostra uma lista de todos os jobs e filas associadas ao cluster.
  • qsub: Interface para enviar um job ao cluster.
  • qtcsh: Shell compatível ao shell csh do Unix.


Problemas de Concorrência

A realização de experimentos nos Cluters Enterprise2 e Enterprise3, compostos por arquiteturas dual-core e quad-core, respectivamente, requer uma atenção especial.

Considere, por exemplo, que um usuário deseja efetuar experimentos no Enterprise2 (ou no Enterprise3) a partir da submissão de vários jobs simultâneos e independentes (por exemplo, com entradas, configurações e saídas diferentes).

Nestas condições, suponha que cada job, quando começar a ser executado em uma dada máquina, efetue os seguintes comandos (na ordem apresentada):

  • teste para checar se um diretório específico, de nome constante, existe. Por exemplo, este teste verifica se o diretório DIR encontra-se em locais default (por exemplo, /tmp, /dados).
  • caso o teste anterior seja afimativo, o diretório DIR é removido (comando rmdir), caso contrário, ele é criado (comando mkdir).

Suponha, ainda, que dois jobs distintos (refereincados de agora em diante, como X e Y) sejam direcionados, pelo SGE, para uma mesma máquina (lembre-se que o SGE enxerga cores de processamento e não processadores). Nesta situação, caso a ordem de execução abaixo ocorra, teremos um problema de concorrência:

  • job X testa a existência do diretório X. O retorno do teste é falso.
  • job Y testa a existência do diretório Y. O retorno do teste é falso.
  • job Y cria o diretório DIR.
  • job X cria o diretório DIR. Aqui, obtem-se um erro: "mkdir: não é possível criar o diretório `DIR': Arquivo existe"