Construindo os clusters: Problemas Enfrentados e Soluções

Um report dos problemas enfrentados, das questões que demoramos a responder e do que aprendemos

Caso não encontre seu problema relatado aqui, entre no Fórum


Não consigo montar um diretório compartilhado do windows no Linux.
Como montar um diretório compartilhado do Windows no Linux com Samba?
1. Para ajudá-lo, vamos supor que você criou uma pasta com nome de compartilhamento comp. Essa máquina tem IP 192.168.0.114;
2. No linux, primeiro você precisa abrir o diretório padrão de montagem, o /mnt (use cd /mnt);
3. Depois, você precisa criar uma pasta para fazer a ligação. No nosso caso, vamos criar a pasta ligado (mkdir ligado). Lembre-se que esta pasta não deve existir.
4. Então, você precisa montar a ligação com o comando: mount -t smbfs //192.168.0.114/comp /mnt/ligado. Cuidado: não colocar barra depois de comp, nem depois de ligado, pois o comando não funcionará. No comando definimos o sistema de arquivos (-t smbfs), definimos a máquina e o nome da pasta compartilhada (//192.168.0.114/comp) e estabelecemos onde queremos a ligação (/mnt/ligado).
5. Para testar liste o diretório com ls /mnt/ligado. Deverá aparecer o conteúdo semelhante ao do windows.
OBS: No caso do Windows 2003, não é possível essa ligação.

Como montar um diretório SAMBAdo Windows 2003 no Linux.
Atualmente não é possível. Isto pois o 2003, apesar de permitir a leitura. não permite que o diretório seja montado.

Quais são os parâmetros do comando JOB do Windows Compute Cluster?
Como eu submeto meus jobs via linha de comando no Windows 2003 Compute Cluster Server?
Temos um tutorial com detalhes aqui.

Como testar se o headnode está controlando os nodes corretamente do Windows Compute Cluster?
Como enviar um comando para todos os nós executarem?
1. Abra uma janela de linha de comando. Para isso, clique em Start e depois em Run...;
2. Digite cmd e tecle Enter;
3. Digite clusrun /all commando e tecle Enter, onde /all define que todos os nós devem executar e commando deve ser trocado pelo comando que você deseja executar. Vejamos um exemplo: para verificar a versão de cada nó, execute clusrun /all ver, onde ver é o comando enviado aos nós.

Como usar o PowerShell conjuntamente com o cluster Windows Compute Cluster?
Como instalar o PowerShell no Windows Compute Cluster?
Temos um tutorial com mais detalhes aqui

Após logar no headnode, não consigo controlar os nós. O que acontece?
No Compute Cluster Administrator, ocorrem erros quando tento executar um comando nos nós
Could not run the remote command on node 'NODE', which may be unreachable
Tente logar no headnode como administrador de domínio, aquele que você estabeleceu no service node.
Uma história: na construção e instalação do nosso cluster, passamos por este problema também. Acreditávamos no começo que o cluster tinha problemas, e que o Windows Compute Cluster tinha problemas também. Depois de um brainstorming em reunião, alguém chutou que o administrador do headnode (chamado HN) não tinha direitos de submeter comandos. Então (o tico falou com o teco) lembramos que o Controlador de Domínio não era o headnode (HN\administrator), e sim o service node (SN). Deslogamos o administrador do headnode (usuário local) e logamos o administrador de domínio. Funcionou na primeira.
Para dar direitos a usuários de usar o cluster, acesse o service node, crie uma conta no Active Directory, e inclua o usuário criado como membro dos grupos Domain Admins, Domain Users e Remote Desktop Users.

Onde encontro um programa MPI para testar no meu cluster windows?
Onde encontro um programa de processamento batch para testar meu cluster windows?
Um programa clássico para testar processamento em batch é o BatchPI, encontrado aqui. Para testar o processamento MPI, podemos usar o mpiPingPong que vem junto com o Compute Cluster Tool Pack, encontrado aqui. Caso queira mais detalhes sobre como utilizá-los e como submeter jobs, clique aqui

Como compilar um programa MPI no windows?
Como compilar um programa baseado em MPI no Visual Studio 2005?
Como configurar o Visual C++ 2008 para compilar programas paralelos em MPI?
Temos um tutorial com mais detalhes aqui com o nome Compilando Programas MPI no Microsoft Visual C++ 2008.

Como depurar um programa MPI no windows?
Como configurar e usar o MPI Cluster Debugging no Visual Studio?
O que é o MPI Cluster Debugging?
Temos um tutorial com mais detalhes aqui com o nome Depurando programas paralelos MPI com o MPI Cluster Debugging no Microsoft Visual C++ 2008.

Consigo compilar meu programa em MPI. Mas ao submeter no cluster windows ele retorna erro 193.
Consigo emular um programa MPI em uma máquina. Mas, ao submeter no cluster windows retorna erro.
Error (193) %1 is not a valid Win32 application.
Quando submeto um programa MPI no cluster windows ele retorna na saída de erro que houve problema de configuração. O que acontece?
Error (14001) This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
O problema está ligado a compilação. Quando você compila um programa MPI, ele é otimizado baseado nas configurações e características do computador que está compilando o programa. Ou seja, quando você tenta rodar em uma máquina diferente ocorrem problemas. O que você deve fazer é compilar a aplicação desejada no próprio headnode (e os nodes devem ser semelhantes em características de hardware) ou compilar em uma máquina externa que tenha hardware semelhante ao headnode (e nodes) que você pretende rodar. Para mais detalhes sobre compilação no windows, clique aqui e veja o artigo Compilando Programas MPI no Microsoft Visual C++ 2008.

Ao submeter um job MPI no cluster windows devo colocar o parâmetro ''-n X''?
Quando submeto um job MPI no cluster, o resultado sai repetido várias vezes no output. Porquê?
O parâmetro -n X, onde X é o número de processadores desejados, quando desejamos emular o funcionamento de um programa MPI dentro de um computador somente, sem estrutura de cluster existente, ou seja, quando fazemos mpiexec -n 4 teste.exe o mpiexec automaticamente cria um ambiente simulado com 4 processadores para executar o programa teste.exe.
Caso você submeta para o cluster mpiexec -n 4 teste.exe o que o cluster vai fazer é alocar vários nós e cada nó vai emular a execução, logo, não haverá interação entre os nós do cluster. Por isso os resultados no output serão repetidos, pois todos os nós farão as mesmas coisas (todos executarão em modo simulado). Lembre-se de nunca colocar o parâmetro -n X quando suubmeter um programa MPI em um cluster windows.

Como testar um programa MPI no windows?
Como emular um programa baseado em MPI no windows?
Para que serve o ''mpiexec''?
O mpiexec serve para controlar a troca de mensagens entre diversos nós em um ambiente real de cluster, além de suportar um modo emulado. Caso você não disponha de um cluster para testar suas aplicações baseadas em MPI, você pode usufruir do modo simulado. Para isso basta incluir na chamada do mpiexec o parâmetro -n X onde X é a quantidade de processadores simulados. Vejamos um exemplo: acabei de compilar um programa chamado myp.exe baseado em MPI, e quero simular a execução em 18 processadores. Para isso, executo mpiexec -n 18 myp.exe. Para mais detalhes sobre submissão, clique aqui. Para mais detalhes sobre depuração de programas MPI, clique aqui.

Qual a diferença de submeter para o cluster ''mpiexec -n 4 programa.exe'' e submeter ''mpiexec programa.exe'', dado que programa.exe é baseado em MPI.
É importante entendermos o papel do mpiexec antes de mais nada. O mpiexec serve para controlar a troca de mensagens entre diversos nós em um ambiente real de cluster, além de suportar um modo emulado.
Quando chamamos mpiexec programa.exe espera-se que esta chamada seja feita por um cluster real, este cluster que já reservou quantidade de processadores necessária para execução. Logo, operamos em modo real com o mpiexec.
Quando chamamos mpiexec -n 7 programa.exe podemos realizar em qualquer computador devidamente instalado com os pacotes de desenvolvimento para clustering. Isso é possível pois com o parâmetro -n 7 dizemos ao mpiexec que organize 7 processadores em modo simulado, ou seja, o ambiente será simulado pelo mpiexec para que programa.exe possa ser testado. Logo, operamos em modo simulado com o mpiexec.
Assim, não podemos esquecer: nunca use o parâmetro -n X em submissões para clusters reais, onde X é o número de processadores a simular. Somente utilize-se para testes de desenvolvimento em ambientes não clusterizados.

Quando tento utilizar um Script XML do ADS para fazer o deployment dos Nodes ele acusa erro de Encoding
Os scripts disponíveis no MSDN estao codificados com utf-16 por algum motivo. Basta trocar <?xml version="1.0" encoding="utf-16"?> por <?xml version="1.0" encoding="utf-8"?> no cabeçalho do script.

Quando faço o network boot, ao instalar o Oscar Cluster, ele inicializa o PXE mas capota, por que?
Ao fazer o Spawn dos Nodes, no Linux, o SystemImager falha.
Ao bootar por PXE, o sistema reconhece o IP do servidor mas, ao inicializar o SystemImager, ele usa outro IP e falha
Ao bootar por PXE o sistema procura e configura a conexão de Network Boot e ela, então, inicializa o SystemImager para fazer o spawn das imagens dos nodes. O que acontece é que ele não usa os mesmos IPs. O SystemImager vai tentar encontrar os IPs do servidor novamente e pega o primeiro que achar. Logo, se houver outro servidor na sua rede ele pode pegar o errado e falhar. Um modo bem prático de resolver isso é impedir que o node "veja" os outros servidores (assim ele não tem como errar) desconectando um do outro (puxando o cabo mesmo).

Não consigo editar/apagar meu arquivo em diretório compartilhado no domínio Windows
Não consigo modificar/deletar meu arquivo no NFS hospedado em um computador no domínio Windows
O sistema de permissões do Windows funciona de um modo diferente das permissões do Linux. No Linux, as atribuições de permissão são feitas no próprio arquivo, junto com o UID e GID. Já no Windows, as permissões são controladas (em um sistema de arquivos NTFS) pelas Access Control Lists (ACL), e é preciso fazer uma autenticação cruzada para os poder modificar. Um modo simples de desviar desse problema é tirar o computador que contém o share folder do domínio.

Ao tentar submeter o job o qsub retorna 'qsub: Bad UID for job execution'
Você não pode suibmeter ao Torque como root. Não pode! =)

Ao fazer o deployment dos nodes fico recebendo o erro 'nc: network is unreachable '
O nc dá esse aviso o tempo todo, então não leve ele muito a sério e insista um pouco. Pode ser que vpcê tenha um problema. Se o for o deployment deve parar. Observe o tráfego de dados pelas luzinhas do HUB, se elas ainda estiverem piscando é um bom sinal de que o aviso é só bobagem mesmo.

Como submeto um Job no Linux/Torque?
Usando o qsub para submeter (imaginando que usar o mpirun seja simples o suficiente e que o qsub ofereça melhores recursos) e o MPICH como implementação do MPI execute o comando qsub script.sh. O script deve ser algo do tipo:
#!/bin/sh
#PBS -l nodes=4:ppn=1:all
#PBS -N TesteMicrosoft
#PBS -o /home/lms/TesteMicrosoft.out
#PBS -e /home/lms/TesteMicrosoft.err
#PBS -q workq
time mpirun -np 4 -machinefile $PBS_NODEFILE /home/lms/TesteMicrosoft

onde nodes= indica o número de nodes e ppn= indica o número de processadores por node.
-N indica o nome do projeto
-o o output
-e a saída de erro
-q o nome para o queue
-np o número total de processadores
-machinefile é a lista de máquinas disponíveis para o PBS (funciona com esse parametro mesmo, não precisa mexer)
e /home/lms/TesteMicrosoft é o caminho da aplicação.



Last edited Mar 25, 2008 at 8:09 PM by azazyel, version 47

Comments

No comments yet.