Por que o bash aparece mais rápido em uma VM Ubuntu do que no host MacOS?

3

Este é o laptop que está na minha frente agora:

Em que é instalado o VMWare Fusion 8.5.3 com um Ubuntu 16,04 64 bit VM. Eu executei o seguinte teste para comparar o desempenho entre o bash no host e o bash na VM:

time for i in {1..1000000}; do :; done

Note que a versão bash das ações no MacOS é 3.2.57, então eu fiz o download e criei a mesma versão para rodar na VM para garantir uma comparação justa.

Os resultados - A VM é mais de duas vezes mais rápida que o host !

Host (MacOS)

mymac:~ me$ time for i in {1..1000000}; do :; done

real    0m4.608s
user    0m4.536s
sys 0m0.067s
mymac:~ me$

VM (Ubuntu)

ubuntu@ubuntu:~$ time for i in {1..1000000}; do :; done            

real    0m2.146s
user    0m2.136s
sys 0m0.008s
ubuntu@ubuntu:~$

Como a VM pode ser muito mais rápida quando deveria estar executando efetivamente o mesmo código (uma forma virtualizada) da mesma CPU?

Notas

  • O host MacOS tem 8 núcleos lógicos e 16 GB de RAM. Eu atribuí apenas 2 núcleos lógicos e 2 GB de RAM à VM. Eu acho que isso deve fazer pouca diferença - este teste não é ligado à memória e é single-threaded.
  • desliguei a VM durante a execução do teste de host
  • Eu corri strace no processo bash do Ubuntu. Como esperado, há apenas alguns syscalls no início e no final do teste, e não há syscalls durante a maior parte do teste (o loop for ). Portanto, este teste deve ser em grande parte vinculado à CPU e não afetado por diferenças na implementação de E / S entre o MacOS e o Ubuntu.
  • Eu fiz o teste várias vezes e o resultado parece bastante consistente.
  • Não há outro carregamento de sistema notável.
por Digital Trauma 20.01.2017 / 01:08

0 respostas