Processamento paralelo e E / S de disco para desempenho. Mais núcleos ou mais servidores?

2

Eu tenho um grande trabalho de análise em uma instância do AWS EC2 (c3.8xlarge) no Ubuntu 12.04.

O objetivo é carregar o servidor a 100% da CPU, executando tantos trabalhos quanto a memória permitir (quantidades variáveis, mas geralmente de 1 a 3 gb por tarefa).

Meu pensamento inicial foi provisionar uma instância grande e executar 32 tarefas de processamento simulatâneo - uma por núcleo. No entanto, esses trabalhos fazem muita leitura de arquivos (muitas vezes o mesmo arquivo), muito gzipping / unzipping, e basicamente um monte de coisas pesadas em disco.

Anteriormente, quando executei um teste no nó m3.xlarge (15gb de RAM, 4 núcleos), obtive uma utilização muito boa de 100% de CPUs para 4 tarefas simultâneas.

No entanto, meus resultados iniciais em 32 núcleos com 60GB de RAM são muito piores. Eu suspeito que o servidor está com problemas no disco, que é atualmente SSD de propósito geral (não provisionado IOPS).

Então a questão é - o que é melhor aqui? Eu tento provisionar IOPS mais alto para o disco ou tentar algum tipo de configuração de RAID para que o servidor grande possa lidar com mais trabalhos? Ou sempre terei uma taxa de transferência geral melhor, simplesmente inicializando vários servidores menores em um cluster sem o gargalo de disco de executar 30+ tarefas simultaneamente em um disco?

Não é um especialista em HPC aqui, portanto, todos os conselhos foram muito bem-vindos.

    
por monkeymatrix 15.01.2015 / 13:10

1 resposta

2

"Melhor" depende, é claro, mas há algumas maneiras bem conhecidas de aumentar o desempenho do IO na AWS.

  • RAID0 - juntos um monte de volumes do General Purpose SSD EBS.
  • Alguns volumes grandes e provisionados do EOP do IOP.
  • Se você estiver fazendo um trabalho sequencial, use os 640 GB de armazenamento local da instância que você tem com esse tipo.
  • Uma combinação dos três pontos acima.

Todos os itens acima presumem que sua instância está sendo executada no modo otimizado para EBS.

Você certamente pode obter max-IOPS na Amazon, você só precisa estar disposto a pagar por isso. Não acredito que você possa anexar o armazenamento de instâncias após a criação da instância, para que essa opção possa exigir a criação de uma nova instância.

    
por 15.01.2015 / 13:22