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.