하이퍼 스레딩 (8 개의 논리 코어)이있는 쿼드 코어 i7 프로세서가 있는데 8 개의 프로세서를 사용하도록 가상 시스템을 구성 할 때 VirtualBox에서 코어가 4 개 (사실) 만 있으며 이로 인해 성능 문제. 그러나 하이퍼 스레딩은 하드웨어 기능이므로 OS는 8 개의 코어를보고 모든 8 개로 명령을 보냅니다. 4로 설정하면 VM이 4 개의 동시 스레드 (4 개의 코어 모두) 대신 2 개의 코어 (4 개의 스레드)를 사용하게됩니다. )? 내 컴퓨터에 하이퍼 스레딩이 있다는 경고를 고려합니까?
답변
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의 작업이며 올바른 매너에서 작동해야합니다.
답변
이것이 머신의 원래 VM입니까? VM을 복제하여 다른 시스템으로 이동하거나 설정을 변경하면 특정 오류가 발생하는 경우가 있습니다.
최신 확장명을 가진 최신 버전의 Virtual Box를 다운로드하여 설치하는 것이 좋습니다.
8 개의 코어를 모두 커밋했지만 Ubuntu 13.10으로 VM을 실행하는 i7에서 해당 오류가 발생하지 않습니다.