Mudanças entre as edições de "Micro Manual de Utilização do Cluster"
 (→Uso do SGE para Executar um Job Paralelo Treadmarks.)  | 
				|||
| (33 revisões intermediárias por 4 usuários não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
| + | __TOC__  | ||
| + | [[category:Configuração]]  | ||
MICRO MANUAL DE USO DO SGE  | MICRO MANUAL DE USO DO SGE  | ||
| − | Ultima atualizaccao:   | + | Ultima atualizaccao: 26/08/2009  | 
| − | Por:   | + | Por: Renderson Loriato.  | 
| − | Antes de usar este manual recomenda-se fortemente que o   | + | Antes de usar este manual recomenda-se, fortemente, que o usuário  | 
| − | leia o "  | + | leia o "N1_Grid_Engine_6_Users_Guide",  | 
| − | + | disponível em /gridware/sge/N1_Grid_Engine_6_Users_Guide.pdf  | |
| − | de enterprise (  | + | de enterprise (enterprise).    | 
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
== Uso do SGE para Executar um Único Job ==  | == Uso do SGE para Executar um Único Job ==  | ||
| − | Um script demonstrando como usar o SGE para disparar um   | + | Um script demonstrando como usar o SGE para disparar um único  | 
| − | job   | + | job está disponível em:  | 
| − | /  | + | /gridware/sge/um_job.sh  | 
| − | Examine o arquivo. Ele   | + | Examine o arquivo. Ele contém tudo que é necessário para  | 
disparar um job.  | disparar um job.  | ||
| Linha 31: | Linha 23: | ||
== Uso do SGE para Executar um Único Job em Várias Máquinas Simultaneamente ==  | == Uso do SGE para Executar um Único Job em Várias Máquinas Simultaneamente ==  | ||
| − | Um script demonstrando como usar o SGE para disparar   | + | Um script demonstrando como usar o SGE para disparar múltiplos  | 
jobs simultaneamente (jobs independentes com entradas diferentes,  | jobs simultaneamente (jobs independentes com entradas diferentes,  | ||
| − | por exemplo)   | + | 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 Jobs em Paralelo ==  | ||
| + | Para execução de Jobs em Paralelo podemos utilizar 4 regras de alocação disponiveis:  | ||
| + | |||
| + |  Integer  | ||
| + |  Pe_Slots  | ||
| + |  Fill_Up  | ||
| + |  Round_Robin  | ||
| + | |||
| + | == '''Integer''' ==  | ||
| + | |||
| + | A regra permite alocar exatamente um numero definido de slots. Para o cluster Enterprise 2 (com 2 cores) apenas foi configurada com o valor 1 ou seja, isso permitirá que um job seja executado em apenas um core, para utilização dos dois cores podemos fazer uso de outra regra. Na Enterprise 3 (com 4 cores) os valores definidos foram de 1 a 3.  | ||
| + | |||
| + | [[Imagem:Integer.jpg]]  | ||
| + | |||
| + | Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:  | ||
| + | |||
| + |  /gridware/sge/mpi_job_int.sh  | ||
| + | |||
| + | Para utilização na Enterprise 3 (Quad-Core) os scripts de demonstração assumem valores de 1 a 3 entao:  | ||
| + | |||
| + |  /gridware/sge/mpi_job_int1.sh  | ||
| + |  /gridware/sge/mpi_job_int2.sh  | ||
| + |  /gridware/sge/mpi_job_int3.sh  | ||
| + | |||
| + | Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.  | ||
| + | |||
| + | == '''Pe_Slots''' ==  | ||
| + | |||
| + | A regra permite alocar vários slots em apenas um host. Todos os processos serão alocados em um mesmo host, mesmo que o número de cores não seja igual ao número de processos.  | ||
| − | + | [[Imagem:peslots.jpg]]  | |
| − | + | Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:  | |
| − | disparar   | ||
| + |  /gridware/sge/mpi_job_peslots.sh  | ||
| − | + | Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.  | |
| − | |||
| − | |||
| − | + | == '''Fill_Up''' ==  | |
| + | A regra permite que o primeiro job seja escalonado para o 1o core disponível de uma máquina qualquer; o 2o para o 2o core disponível desta máquina; o 3o para um outro core desta máquina (no caso de máquinas quad-core - Enterprise 3) ou um outro core de uma outra máquina (no caso de máquinas dual-core - Enterprise 2).  | ||
| − | + | [[Imagem:Fillup.jpg]]  | |
| − | |||
| − | ==   | + | Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:  | 
| − | Um script demonstrando como usar o SGE para disparar jobs    | + | |
| − | + |  /gridware/sge/mpi_job_fillup.sh  | |
| − | + | ||
| − | + | Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.  | |
| − | + | ||
| − | Examine o arquivo. Ele   | + | == '''Round_Robin''' ==  | 
| − | disparar jobs.  | + | |
| + | Nessa regra o primeiro job é escalonado para 1 core de 1 máquina qualquer, o segundo para um core de uma outra máquina, e assim sucessivamente.  | ||
| + | |||
| + | [[Imagem:round_robin.jpg]]  | ||
| + | |||
| + | Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:  | ||
| + | |||
| + |   /gridware/sge/mpi_job.sh  | ||
| + | |||
| + | Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.  | ||
== Outros Exemplos de Uso do SGE ==  | == Outros Exemplos de Uso do SGE ==  | ||
Existem outros exemplos de SGE em:  | 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 (referenciados 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 o erro: "mkdir: não é possível criar o diretório `DIR': Arquivo existe"  | ||
Edição atual tal como às 15h48min de 14 de setembro de 2012
Índice
MICRO MANUAL DE USO DO SGE Ultima atualizaccao: 26/08/2009 Por: Renderson Loriato.
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 Jobs em Paralelo
Para execução de Jobs em Paralelo podemos utilizar 4 regras de alocação disponiveis:
Integer Pe_Slots Fill_Up Round_Robin
Integer
A regra permite alocar exatamente um numero definido de slots. Para o cluster Enterprise 2 (com 2 cores) apenas foi configurada com o valor 1 ou seja, isso permitirá que um job seja executado em apenas um core, para utilização dos dois cores podemos fazer uso de outra regra. Na Enterprise 3 (com 4 cores) os valores definidos foram de 1 a 3.
Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:
/gridware/sge/mpi_job_int.sh
Para utilização na Enterprise 3 (Quad-Core) os scripts de demonstração assumem valores de 1 a 3 entao:
/gridware/sge/mpi_job_int1.sh /gridware/sge/mpi_job_int2.sh /gridware/sge/mpi_job_int3.sh
Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.
Pe_Slots
A regra permite alocar vários slots em apenas um host. Todos os processos serão alocados em um mesmo host, mesmo que o número de cores não seja igual ao número de processos.
Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:
/gridware/sge/mpi_job_peslots.sh
Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.
Fill_Up
A regra permite que o primeiro job seja escalonado para o 1o core disponível de uma máquina qualquer; o 2o para o 2o core disponível desta máquina; o 3o para um outro core desta máquina (no caso de máquinas quad-core - Enterprise 3) ou um outro core de uma outra máquina (no caso de máquinas dual-core - Enterprise 2).
Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:
/gridware/sge/mpi_job_fillup.sh
Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.
Round_Robin
Nessa regra o primeiro job é escalonado para 1 core de 1 máquina qualquer, o segundo para um core de uma outra máquina, e assim sucessivamente.
Um script demonstrando como usar o SGE para disparar jobs mpi com essa regra está disponível em:
/gridware/sge/mpi_job.sh
Examine o arquivo. Ele contém tudo que é necessário para disparar seus jobs.
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 (referenciados 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 o erro: "mkdir: não é possível criar o diretório `DIR': Arquivo existe"
 



