Como designer de SO, concordo totalmente com o resultado das medições. A quantidade de besteira produzida em outros lugares sobre o assunto é inacreditável.
Veja o número de núcleos lógicos como o número de threads / processos paralelos que podem ser executados pelo HW. Isso é obtido duplicando, por exemplo, os registros e indicadores de instruções de um núcleo de CPU. O próprio núcleo da CPU agora decide qual thread (ponteiro de instrução) usar. Ele decidirá usar o outro encadeamento, pois as instruções do encadeamento atual não estão disponíveis no cache e precisam ser buscadas a partir de, por exemplo, memória ou cache L3. Esse mecanismo criará uma melhoria potencial de 10% a 30% nas instruções / segundos ou no desempenho da CPU.
Se você executar um único aplicativo com um encadeamento, não poderá obter esse benefício, mas se executar dois aplicativos de alta carga em, por exemplo, um HT Pentium antigo, poderá obter os benefícios. O mesmo se aplica às aplicações que possuem mais de um segmento. Meu sistema Linux possui 200 threads, portanto, alguns benefícios dependentes da carga real estão sempre presentes. Todas essas observações se aplicam sem virtualização.
O Virtualbox limita apenas o número de threads que podem ser executados em paralelo para cada máquina virtual (VM), mas o agendador de processos host alterará o (s) processador (es) lógico (s) e, portanto, o (s) processador (es) físico (s), nos quais os processos da VM são executados dinamicamente. Se você executar aplicativos de alta carga em uma VM, os núcleos lógicos adicionais fornecerão o mesmo benefício de 10% a 30%. A carga pode ser um único aplicativo multithread ou um conjunto de aplicativos diferentes.
Em sistemas modernos com VT-x ou AMD-V, não há penalidade no desempenho por maximizar o número de núcleos lógicos, pois também não há penalidade perceptível no desempenho por executar mais máquinas virtuais ao mesmo tempo. Seu limite é o desempenho do seu chip da CPU; portanto, você não pode renderizar vídeos em 3 VMs ao mesmo tempo sem diminuir a velocidade de cada VM, porque eles precisam compartilhar a mesma CPU física.
O sistema host pode ficar irresponsivo, se você renderizar um vídeo em uma VM com todos os núcleos lógicos presentes, mas você teria quase o mesmo problema, se executasse esse aplicativo de renderização no host. Pelo menos na VM, você tem uma opção e pode resolvê-la limitando a carga máxima da CPU para 80% -90% ou reduzindo o número de núcleos por esse motivo.