Otimizando o cluster de computação Linux

1

Estou configurando um cluster Linux de supercomputação no trabalho. Nós executamos os benchmarks HPCC mais recentes usando o OpenMPI e o GoToBlas2, mas obtivemos resultados muito ruins. Quando executei os benchmarks usando um processo para cada núcleo no cluster, os resultados foram muito piores (mais de 100 vezes) do que executar o benchmark em um único processo. Este não é claramente o tipo de desempenho que esperávamos. Meu único pensamento é que o MPI está demorando muito para transferir mensagens entre os processos. Alguém tem alguma idéia de como eu posso otimizar a configuração do servidor para que o desempenho não seja tão ruim?

Estamos usando a distribuição de cluster do Rocks com o OpenMPI v1.4.3. Nossos nós de computação são servidores de montagem em rack Dell com dois processadores Intel Xeon de quatro núcleos cada. Eles estão conectados por cabos ethernet gigabit.

    
por Zhehao Mao 20.06.2011 / 20:27

1 resposta

1

Ao olhar para um cluster científico e desempenho, aqui estão alguns dos principais gargalos que vejo:

  • Que tipo de rede você tem. Sim, você diz que tem gigabit ethernet, mas está usando comutadores sem bloqueio para que todos os nós do switch possam obter taxas de linha completas?
  • Você está usando um sistema de arquivos distribuídos ou um NAS otimizado?
  • Todos os seus links estão na linha completa? Novamente, isso remonta ao primeiro ponto, mas você ficaria surpreso com o que você encontrará executando o iperf ocasionalmente nos nós
  • Qual é a sua latência? Isso pode surgir como um problema de tempos em tempos com redes gigabit se você tiver problemas de rede e realmente pode acabar com os aplicativos que precisam usar o MPI.
  • Quais são as configurações do seu dispositivo principal em network-scripts ? Sua MTU está configurada para 9000?

Normalmente, o Iperf pode ser encontrado nos sistemas RHEL

/apps/rhel5/iperf/bin/iperf

Para executar o iperf, primeiro configure um servidor em um nó.

/apps/rhel5/iperf/bin/iperf -s

Em seguida, do nó que você deseja testar o link

/apps/rhel5/iperf/bin/iperf -c <host or IP of server>

Se tiver sucesso, você verá uma saída como esta no cliente:

------------------------------------------------------------
Client connecting to <host or IP of server>, TCP port 4200
TCP window size:   256 KByte (default)
------------------------------------------------------------
[  3] local 123.11.123.12 port 4400 connected with 123.456.789.12 port 4200
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.1 GBytes  1.01 Gbits/sec

Se você não o tiver instalado, ele pode ser facilmente recuperado em muitas plataformas de repositórios e está disponível gratuitamente para download e compilação a partir da fonte, se não for. Execute isso em cada nó para ver se há um problema com o fio Ethernet real. Depois disso, execute-o em todos os nós para ver se ele ataca o switch.

    
por 20.06.2011 / 20:39