No Travis CI ( link ) usamos VMs do VirtualBox (através do Vagrant) para
executando testes para a comunidade Ruby.
Em nossos servidores de trabalho, temos até (até) N processos paralelos executando o teste N
suites em N VMs em paralelo, ou seja, um processo de trabalho executa um conjunto de testes em um
VM de cada vez, mas N deles estão sendo executados simultaneamente.
Agora, assim que muitos trabalhadores estão realmente realizando construções em paralelo,
desempenho de cada compilação irá degradar significativamente em comparação com quando o muito
mesma compilação seria executada em um único trabalhador (e nada mais em execução
paralelo).
Aqui está um exemplo:
Esta "matriz de compilação" consiste em 20 construções individuais:
link
No momento em que isso foi executado, havia 10 funcionários em execução, portanto,
começou com 10 construções individuais sendo executadas em 10 trabalhadores (e VMs) em
paralelo. Esta versão é uma delas e demorou ~ 2 horas para ser concluída:
[veja o último link na lista da página acima, só posso postar 2 URLs]
A mesma compilação levaria apenas ~ 20 minutos quando não há outras construções
sendo executado em paralelo. Aqui está um exemplo disso:
link
Essa degradação de desempenho obviamente é algo que precisamos resolver, mas
não temos certeza de onde procurar.
O conjunto de testes basicamente executa processos Ruby que podem ser exibidos e gerados
vários outros processos Ruby que cada unidade executora testa na base de código. Alguns
eles atingem bancos de dados como o MySQL, Sqlite3 e Postgres, mas também percebemos
mesmo tipo de degradação com testes que não atingem nenhum banco de dados.
O servidor de trabalho que hospeda esses processos e VMs se parece com isso:
- Linux 2.6.32-31-server # 61-Ubuntu SMP Sex 8 de abril 19:44:42 UTC 2011 x86_64 GNU / Linux
- 12x (Hexacore) CPU Intel (R) Core (TM) i7 950 a 3,07GHz
- Memória de 12 GB
Cada VM:
- Linux lucid32 2.6.32-28-genérico # 55-Ubuntu SMP seg 10 de janeiro 21:21:01
UTC 2011 i686 GNU / Linux
- 1x CPU Intel (R) Core (TM) i7 950 a 3,07 GHz
- 1 GB de memória
Quaisquer dicas sobre como resolver isso ou talvez apenas identificar melhor o problema raiz
seria muito apreciada.
Obrigado!