Sistema de arquivos de rede apropriado para arquivos enormes (5+ Gb)

1

Eu tenho um número de servidores usados para HPC / computação em cluster e notei que, dado o fato de que parte dos cálculos que eles executam usam arquivos enormes sobre o NFS, isso causa gargalos significativos. Eu estou querendo saber como resolver o problema.

A configuração:

  • 34 servidores com o Debian Squeeze (42 Gb de RAM cada)
  • 12 núcleos físicos por máquina + HT
  • 2 máquinas "head" (head1 e head2) com unidades de 500 Gb cada
  • 32 máquinas "escravas" que fazem boot PXE a partir do head1
  • head1 exporta o sistema de arquivos NFS para os 32 servidores PXE
  • head2 exporta um diretório de "dados" via NFS que contém arquivos de dados para todas as outras máquinas
  • o diretório "data" contém arquivos muito grandes (5+ Gb)
  • conectividade entre as máquinas: Gigabit Ethernet
  • a maioria das máquinas não está no mesmo rack físico
  • Usa o Agendador de grade aberta (também conhecido como Mecanismo de grade) para processamento de trabalho em lote

Um dos cálculos que este cluster executa envolve, para cada um dos "escravos", a leitura de um conjunto muito grande de arquivos (3Gb + 3Gb + 1.5 Gb + 750M) antes de iniciar os vários cálculos. Eu notei que quando isso acontece, a maioria dos escravos está gastando um tempo significativo (vários minutos) ao ler esses dados (enquanto o cálculo real é muito mais rápido).

Atualmente, aumentei o número de threads no daemon NFS de head2 e coloquei rsize e wsize em 32k nas opções de montagem escrava, mas ainda é um gargalo significativo.

O que posso fazer para melhorar o desempenho ou devo deixar que os escravos hospedem esses arquivos em seus discos rígidos? Ou devo ir com um FS totalmente diferente para armazenamento?

    
por Einar 19.02.2013 / 09:27

3 respostas

2

Como você está fazendo uma análise de desempenho, a primeira pergunta deve ser: "em que dados eu estou baseando a suposição? Há traços de rede ou outros dados de desempenho que suportam essa hipótese?"

Existem muitos possíveis afunilamentos em tal sistema, e eu questionaria a escolha do sistema de arquivos da rede por último, especialmente porque você não parece gravar quantidades significativas de dados e bloqueio / simultaneidade e os problemas de latência associados seriam o gargalo mais provável provocado pelo NFS.

Por outro lado, 32 solicitações simultâneas de 8 GB de dados cada uma provavelmente sobrecarregarão qualquer disco SATA único devido à classificação IOPS limitada de um único disco. Um cálculo simples assumindo um tamanho de bloco de leitura de 64 KB por solicitação e 100 IOPS para o disco renderia uma taxa de apenas 6,4 MB / s para solicitações de leitura aleatórias - que é o que você obterá com esse número de leitores simultâneos, a menos você está armazenando os dados em cache.

Você deve dar uma boa olhada nos indicadores de desempenho fornecidos por iostat para ver se seu disco não está sendo sobrecarregado. E se for, tome as medidas apropriadas (ou seja, consiga um subsistema de armazenamento decente capaz de lidar com a carga) para remediar a situação.

    
por 19.02.2013 / 10:02
2

Isso provavelmente não é uma limitação do NFS que você está encontrando aqui.

Considere também que esses 5 GB tomam, no mínimo, 40 segundos para serem transferidos a uma velocidade de fio gigabit - para cada cliente. Você tem 32 deles martelando a cabeça2, e não é provável que solicitem os mesmos blocos ao mesmo tempo. Adicione sobrecarga de Ethernet, TCP / UDP e NFS, e você logo se deparará com os minutos que descreveu.

Portanto, antes de tentar trocar o NFS com qualquer outra coisa (sim, existem protocolos com menos sobrecarga), verifique cada parte do caminho que os dados (iniciados no subsistema de disco) levam para possíveis afunilamentos. Referência em caso de dúvida.

Remover esses gargalos (se houver) com hardware adicional ou melhor será mais fácil do que mudar toda a configuração do software.

    
por 19.02.2013 / 09:57
1

Eu tenho um ambiente bastante semelhante (muitos servidores blade como nós de trabalho e arquivos enormes em cada GB ou TB). Eu uso o Hadoop Distributed File System (HDFS). Confira:

link

link

Você pode achar um pouco mais complexo configurar do que o NFS.

    
por 19.02.2013 / 09:57