Host Quad Core com hyper-threading, quantos processadores configurar no VirtualBox?

9

Eu tenho um processador quad-core i7 com hyperthreading (8 núcleos lógicos), quando configurei uma máquina virtual para usar 8 processadores, o VirtualBox me avisou dizendo que eu tenho apenas quatro núcleos (o que é verdade) e que pode causar um problema de desempenho. Mas o hyper-threading é um recurso de hardware, então o sistema operacional vê 8 núcleos e envia instruções para todos os 8. Se a configuração 4 fizer com que a VM use 2 núcleos (4 threads) em vez de 4 threads simultâneos (nos 4 núcleos )? O aviso que recebi leva em conta que minha máquina tem hyper-threading?

    
por Anthony 01.11.2013 / 10:29

4 respostas

8

Com base no benchmark feito por Kristian Wedberg , eu diria que você deve usar toda a lógica núcleos que você tem.
Também fiz o meu próprio benchmark usando o mesmo CPU (i7, 4 CPU com HT) que confirmou o aumento de performance para aplicações multi-threaded. Se o PC convidado (Win. 8.1 x64) usasse todos os 8 núcleos, então o PC host (Ubuntu x64) também usaria todos os 8 núcleos.

Eutambémcompareiodesempenhoemaplicativossingle-threaded.Emambososcasos,eumediosmesmosvaloresparaquenãohajapenalidadeusandomaisdoqueofísico(masatélógico)númerodeCPUs.
Aquivocêpodeverque1CPUdecargatotalnoPCconvidadoresultaráem1cargadeCPUnoPChost.

    
por 23.09.2015 / 16:34
7

Descobri que, embora seja possível (e provavelmente mais rápido) no VirtualBox (minha experiência foi com a versão 5.1.0) alocar vCPUs para uma VM baseada em processadores lógicos, pode haver problemas dentro do sistema operacional convidado ao executar em alta carga. No meu caso, uma VM do Windows 2012 R2 com 12 vCPUs em um host Ubuntu 16.04 de 8 núcleos (que relata 16 processadores lógicos) executaria BSOD durante alta carga de CPU com a mensagem de erro DPC_WATCHDOG_VIOLATION. Uma análise de minidespejo usando osronline.com mostrou e1g6032e.sys (o driver de rede Intel 100/1000 nativo do Windows ) ser a causa da violação.

Isso me leva a acreditar que o tempo dentro do sistema operacional convidado é negativamente afetado ao alocar vCPUs com base na capacidade do processador lógico e em executar a VM em carga alta por períodos prolongados. No meu caso, 100% da carga da CPU dentro da VM do Windows por alguns minutos resultaria no BSOD. Depois de reduzir a contagem de vCPU para 8 (que corresponde à contagem de núcleo físico do host), a VM do Windows não tem mais BSOD em situações de carga alta semelhantes. A documentação on-line do VirtualBox diz que se deve fazer isso, mas não oferece nenhuma razão.

No meu ambiente, também havia outras duas VMs do Ubuntu em execução, cada uma com 8 vCPUs próprias. A carga sobre eles era, no entanto, mínima no momento dos problemas de BSOD da VM do Windows.

    
por 16.02.2017 / 12:38
2

O aviso que recebi leva em conta que minha máquina tem hyper-threading?

Sim. Se você definir o número de núcleos em uma VM como maior que o número que você possui fisicamente, o processo de agendamento de tarefas no Virtual Box compromete os recursos da CPU, levando a grandes problemas de desempenho.

Quanto à distribuição da carga pelos núcleos, essa é a tarefa do sistema operacional host e deve se comportar na propriedade correta.

    
por 10.02.2014 / 17:15
0

Esta foi uma VM original para sua máquina? Às vezes, você receberá erros peculiares se clonar uma VM e movê-la para outra máquina e / ou alterar as configurações.
Eu recomendo baixar e instalar a última versão do Virtual Box com as últimas extensões.

Eu cometi todos os oito núcleos e não estou recebendo esse erro com o meu i7 executando uma VM com o Ubuntu 13.10.

    
por 05.06.2015 / 05:58