가상 시스템과 물리적 호스트의 성능 차이는 무엇입니까?


15

내가 일하는 곳에서는 데비안 리눅스 배포판을 사용하여 비교적 강력한 PC를 사용하고 있습니다. 그러나 설치해야하는 특정 프로그램의 경우 CentOS를 사용하는 것이 좋으며 이것이 주요 작업 도구입니다. 직장 내 모든 컴퓨터의 OS를 변경하는 것은 가능하지만 VirtualBox를 사용하는 것이 더 나은 선택인지 결정하려고합니다.

이것은 모두 다음 사항에 달려 있습니다. 우리가 실행해야하는 프로그램은 시뮬레이션이 시작될 때마다 최대 1 시간 이상 쉽게 실행할 수있는 프로세서 집약적 인 작업 인 시뮬레이터입니다. Virtual Box를 사용할 때 성능 저하가 OS 변경에 도움이 될만큼 충분히 큰지 결정해야합니다.

그래서 내 질문은 가상 상자에서 프로세서 집약적 작업을 실행하는 것보다 원시 PC에서 실행하는 것의 성능에 어떤 영향을 줄 수 있는지 누군가가 입증 할 수 있는지 여부입니다.

감사.

답변:


15

CPU를 많이 사용하는 숫자 처리 프로그램의 경우 VM에 거의 성능 저하가 발생하지 않아야합니다. 명령어는 CPU에서 직접 실행되며 호스트 및 VM과 동일합니다.

심각한 컴파일 작업의 경우에도 성능 차이는 거의 눈에 띄지 않습니다. Windows의 VMware에서 CentOS VM을 실행합니다.

호스트에서 Linux를 실행 중이므로 VirtualBox 대신 KVM (Kernel Virtual Machine)을 고려할 수도 있습니다 . 최신 모든 CPU에서 사용 가능한 Intel VT-x 가상화 확장을 사용하여 Linux에서 가상화 서비스를 제공하는 일련의 커널 모듈입니다. QEMU는 KVM을 가속기로 사용하여 호스트 CPU에서 직접 x86 코드를 실행합니다.

virt-manager사용해보기 만하면 됩니다.


확인. 나는 그 기회를 줄 것이다. 답장을 보내 주셔서 감사합니다.
aarelovich

성능면에서 KVM은 VirtualBox와 어떻게 비교됩니까 (Linux 시스템에서 Windows 10을 실행한다고 가정하겠습니다)?
Royi

VirtualBox가 CPU 가상화 확장 기능 (KVM과 같이)을 활용하고 작업량이 대부분 CPU 제한 인 경우에는 거의 동일해야합니다. 작업이 I / O 무거운 경우 선택한 하드웨어에 따라 성능이 달라집니다. KVM에는 에뮬레이트 된 장치 (예 : E1000 NIC 및 LSI SCSI 디스크 컨트롤러)보다 훨씬 뛰어난 반 가상화 드라이버 (virtio)가 있습니다. 일반적으로 그들은 합리적으로 가까이 있어야합니다.
Jonathon Reinhart

6

이에 대한 하나의 좋은 대답은 없습니다. VM 사용 방법과 프로그램에 따라 다릅니다.

예를 들어 VMWare (유형 2 하이퍼 바이저)와 순수 CPU 바운드 프로그램을 사용하면 거의 전체 CPU 속도를 얻을 수 있습니다. 시스템 호출이 많은 프로그램에서 동일한 하이퍼 바이저를 사용하면 심각한 속도 저하가 발생합니다.

또한 유형 1 하이퍼 바이저 (게스트 없음) OS를 사용하면 상황이 변경됩니다. 그리고 그 사이에도 많은 변형이 있습니다. 예를 들어 5를 지원하는 Xen (Xen에서 지난 주말 FOSDEM 대화에서 IIRC) 모드를 지원합니다. HW 사용에서 가상 가상화로.

요컨대 요청한대로 거의 느려지지 않을 때부터 심각하게 느려질 수 있습니다.


이제 VirtualBox에 집중하면 유형 2 하이퍼 바이저입니다. 순수한 CPU 바운드 프로그램은 괜찮을 것입니다.


이러한 프로그램의 대부분은 본질적으로 언어를 C 코드로 변환하고 컴파일합니다. 시뮬레이션을 실행할 때이 컴파일이 실행됩니다. 당신에게 Accoridng, 그럼 괜찮을까요?
aarelovich

성능이 좋을 것 같습니다. 가상 박스 환경은 제한적이지만 (대부분 VMware 워크 스테이션을 사용했습니다), 속도가 느려 야하는 기술적 이유는 없습니다.
Hennes

성능면에서 KVM은 VirtualBox와 어떻게 비교됩니까 (Linux 시스템에서 Windows 10을 실행한다고 가정하겠습니다)?
Royi

5

실제로 Docker가 수행중인 작업에 더 나은 옵션 인 것처럼 들립니다. Docker는 컨테이너를 제공합니다. 컨테이너는 동일한 커널에서 실행되는 격리 된 샌드 박스입니다. 컨테이너 내 프로세스가 호스트의 프로세스와 다르지 않으므로 시스템 호출 / IO 오버 헤드는 0입니다.

이미 Linux를 실행하고 있기 때문에 Docker는 모든 컴퓨터를 다시 설치하지 않고도 CentOS 환경을 제공하는 좋은 방법입니다.

또한 Docker 컨테이너 내부의 빌드와 같은 작업을 쉽게 수행 할 수있는 유틸리티 인 Scuba 를 확인하십시오 . 달리기 대신 make당신은 달릴 것 scuba make입니다. 그게 다야!


시도해보고 시작하는 데 도움이 필요하면 알려주십시오.
Jonathon Reinhart

고맙지 만 이것은 오래 전 일이었고, 그 결정을 내 렸습니다. 그러나 나는 CentOS를 실행하는 데 문제가있는 프로그램을 실행해야 할 때 이것을 고려할 것입니다.
aarelovich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.