Como posso emular mais CPU virtual do que fisicamente disponível?

1

No VMWare, você pode usar várias CPUs, mas apenas o que está presente no host. Existe uma maneira de usar mais CPU do que fisicamente disponível?

Seria para:

  • software de teste projetado para rodar em uma caixa cara de 16 vias em caixas de 2 vias de mercadorias.
  • Use uma imagem projetada para bidirecional em um host unidirecional
  • teste software em não-poder-de-2 -way (pense em 3) ( Embora isso possa eventualmente ser feito em uma caixa de 4 vias )

No VMWare, você pode usar várias CPUs, mas apenas o que está presente no host. Existe uma maneira de usar mais CPU do que fisicamente disponível?

Seria para:

  • software de teste projetado para rodar em uma caixa cara de 16 vias em caixas de 2 vias de mercadorias.
  • Use uma imagem projetada para bidirecional em um host unidirecional
  • teste software em não-poder-de-2 -way (pense em 3) ( Embora isso possa eventualmente ser feito em uma caixa de 4 vias )

Atualização:

Especificamente, quero ser capaz de executar um sistema operacional configurado de 16 vias em um hardware bidirecional, não de inscrição básica (como 16 de 2 vias em um hardware de 4 vias) que é efetivamente manipulado por quase todos os softwares de virtualização atualmente disponível.

Eu também não quero investir em uma solução muito específica, se não for necessário, pois a ideia é limitar os investimentos necessários.

E não posso aumentar apenas o número de threads, como foi sugerido de maneira inteligente desde:

  • Em um aplicativo, gostaria de poder testar a auto-regulação dos números de processo.
  • Também quero ser capaz de ver o impacto de ter um grande número de grandes hosts SMP (16 ou mais) em um grande número de pequenos hosts (1 ou 2 vias).

Atualização (bis):

Eu finalmente descobri que o QEMU faz exatamente isso.

    
por Steve Schnepp 18.05.2009 / 10:08

5 respostas

3

Na verdade, o QEMU oferece a opção -smp X launch que faz exatamente o que eu preciso.

    
por 10.11.2009 / 17:27
5

Mesmo que você encontre um emulador que faça isso, a realidade é que você não poderá testar totalmente neste cenário - condições de corrida, bloqueios e tal não podem ser totalmente testados para funcionar em paralelo ambiente se você ainda estiver executando tudo essencialmente sequencialmente.

-Adam

    
por 18.05.2009 / 16:22
2

O VMWare NÃO permite que você exagere CPUs, ou seja, se você tiver dois Xeons quad-core (ou seja, 8 núcleos no total), você pode ter 6 VMs duplas de vCPU. Obviamente, se todas as 6 VMs 'ficarem brancas' com 100% da CPU, você terá problemas de desempenho, mas é improvável que isso aconteça. O mesmo vale para a memória também. Espero que isso responda à sua pergunta.

    
por 18.05.2009 / 11:03
1

Eu acho que você precisa de alguma simulação séria para fazer isso, como Simics ou similar.

Quando se trata de testes simples usando apenas mais threads do que os núcleos, eles fornecem pelo menos alguns dados úteis, certo?

Parece ridículo exigir o emulador de mais núcleos - pelo menos de alguma forma significativa. Mas eu posso estar errado ^^

    
por 18.05.2009 / 13:11
1

Não, você não pode executar uma imagem de 16 direções em uma caixa bidirecional. Se você não se importar em gastar um pouco de dinheiro, compre um pouco do IBM 440 da Ebay. Você pode conectá-los juntos para construir uma caixa de 16 vias, e eles são absurdamente baratos, como sub-$ 200. Eles pesam uma tonelada, e eles são barulhentos, e eles usam muita energia, e eles não são particularmente rápidos (todos single-core), mas eles vão conseguir o que você está procurando. Além disso, eles executam o VMware ESX - eu os usei desde a v2.5.

O cabo de ligação em cadeia geralmente não está incluído, então você precisará encontrar uma fonte para eles. E você tem que se certificar de que todos os 440 tenham a mesma velocidade de CPU.

Se você estiver na região sul da Flórida, me avise e eu posso encontrar uma loja que possa vender a deles.

    
por 18.05.2009 / 15:30