답변:
Kristian Wedberg가 수행 한 벤치 마크를 기반으로 모든 논리 코어를 사용해야한다고 말합니다.
또한 멀티 스레드 응용 프로그램의 성능 향상을 확인하는 동일한 CPU (i7, HT가있는 4 CPU)를 사용하여 자체 벤치 마크를 수행했습니다. 게스트 PC (Win. 8.1 x64)가 8 코어를 모두 사용한 경우 호스트 PC (Ubuntu x64)도 8 코어를 모두 사용했습니다.
단일 스레드 응용 프로그램의 성능도 비교했습니다. 두 경우 모두 동일한 값을 측정 했으므로 물리적 (그러나 논리적) 수의 CPU 이상을 사용하는 경우 페널티가 없습니다.
여기서 게스트 PC에 1 개의 CPU 전체로드가 발생하여 호스트 PC에 1 개의 CPU로드가 발생 함을 알 수 있습니다.
VirtualBox (내 경험은 버전 5.1.0에서 가능)에서 vCPU를 논리 프로세서를 기반으로 VM에 할당하는 것이 가능하고 (더구나 더 빠르지 만) 높은 부하에서 실행될 때 게스트 OS 내부에서 문제가 발생할 수 있음을 발견했습니다. . 필자의 경우 8 코어 Ubuntu 16.04 호스트 (16 개의 논리 프로세서를보고 함)에 12 개의 vCPU가있는 Windows 2012 R2 VM은 DPC_WATCHDOG_VIOLATION 오류 메시지와 함께 높은 CPU로드 중에 BSOD가됩니다. osronline.com을 사용한 미니 덤프 분석 결과 e1g6032e.sys (Windows 고유의 Intel 100/1000 네트워크 드라이버)가 위반의 원인 인 것으로 나타났습니다.
이로 인해 논리적 프로세서 용량을 기반으로 vCPU를 할당하고 VM을 장시간 높은 부하로 실행할 때 게스트 OS 내부의 타이밍이 부정적인 영향을받는다고 생각합니다. 필자의 경우 Windows VM 내에서 몇 분 동안 100 % CPU로드가 발생하면 BSOD가 발생합니다. vCPU 수를 8 (호스트의 물리적 코어 수에 해당)로 줄인 후 Windows VM은 더 높은 부하 상황에서 더 이상 BSOD를 수행하지 않습니다. VirtualBox 의 온라인 설명서에 따르면 이렇게해야하지만 아무런 이유도 없습니다.
내 환경에는 각각 8 개의 vCPU가있는 두 개의 다른 Ubuntu VM도 실행되었습니다. 그러나 Windows VM의 BSOD 문제 당시에는로드가 최소화되었습니다.
내 컴퓨터에 하이퍼 스레딩이 있다는 경고를 고려합니까?
예. VM의 코어 수를 물리적으로 보유한 수보다 크게 설정하면 Virtual Box의 작업 예약 프로세스가 CPU 리소스를 커밋하여 주요 성능 문제가 발생합니다.
코어 전체에로드를 분배하는 것은 호스트 OS의 작업이며 올바른 매너에서 작동해야합니다.