지금 제 앞에 있는 노트북은 이렇습니다.
VMWare Fusion 8.5.3 및 Ubuntu 16.04 64비트 VM이 설치되어 있습니다. 호스트의 bash와 가상 머신의 bash 간의 성능을 비교하기 위해 다음과 같은 작은 테스트를 실행했습니다.
time for i in {1..1000000}; do :; done
MacOS의 일반적인 bash 버전은 3.2.57이므로 공정한 비교를 위해 동일한 버전을 다운로드하여 가상 머신에서 실행하도록 빌드했습니다.
결과 - 가상 머신은 호스트보다 2배 이상 빠릅니다.!
호스트(MacOS)
mymac:~ me$ time for i in {1..1000000}; do :; done
real 0m4.608s
user 0m4.536s
sys 0m0.067s
mymac:~ me$
가상 머신(Ubuntu)
ubuntu@ubuntu:~$ time for i in {1..1000000}; do :; done
real 0m2.146s
user 0m2.136s
sys 0m0.008s
ubuntu@ubuntu:~$
동일한 CPU에서 동일한 코드를 효과적으로 실행해야 하는 경우(가상화의 한 형태) 가상 머신이 어떻게 더 빨라질 수 있습니까?
노트
- MacOS 호스트에는 8개의 논리 코어와 16GB RAM이 있습니다. 가상 머신에는 논리 코어 2개와 RAM 2GB만 할당했습니다. 나는 이것이 아무런 차이가 없을 것이라고 생각합니다. 이 테스트는 메모리 바인딩이 아니며 단일 스레드입니다.
- 호스트 테스트를 실행하는 동안 VM을 종료했습니다.
- Ubuntu bash 프로세스에서 strace를 실행하고 있습니다. 예상대로 테스트 시작과 끝 부분에는 시스템 호출이 몇 개만 있고
for
대부분의 테스트(루프) 중에는 시스템 호출이 없습니다. 따라서 이 테스트는 주로 CPU에 바인딩되어야 하며 MacOS와 Ubuntu 간의 I/O 구현 차이에 영향을 받지 않아야 합니다. - 여러 테스트를 실행했는데 결과가 꽤 일관된 것 같습니다.
- 그 외 눈에 띄는 시스템 로드는 없습니다.