VirtualBox: 내가 보기엔하이퍼스레딩가능한 CPU에 대해 알고 싶습니다.
다음 경고에 표시된 것처럼 물리적 CPU 코어 수보다 더 많은 가상 CPU 코어를 할당하는 것은 나쁜 생각이 아닙니다(예: 4개 물리적 코어 CPU의 8개 가상 코어만 사용).
성적 증명서:
가상 머신에 할당된 가상 CPU 수가 호스트 시스템의 물리적 CPU 수(4)보다 큽니다. 이로 인해 가상 머신의 성능이 저하될 수 있습니다. 가상 CPU 수를 줄이는 것을 고려해 보십시오.
누구든지 이 주제에 대해 밝힐 수 있습니까?
문제의 CPU는 Intel Core i7-4700HQ입니다.아크 인텔,CPU 벤치마크
HDD(SSD 대신) 및/또는 낮은 RAM(여기서는 최소 16GB)과 같은 오래된 하드웨어가 없다고 가정합니다.vm.swappiness
, 이 VM은 4GB) 등입니다.
답변1
하드웨어/운영 체제/소프트웨어
주인:Linux Mint 18 Cinnamon 64비트(완전 업데이트) 커널 버전 4.4.0-47-일반
손님: Windows 8.1 Pro 64비트(완전 업데이트)
프로세서:인텔 코어 i7-4700HQ, (6MB 캐시, 4개의 물리적 코어 또는 8개 사용하이퍼스레딩),CPU 벤치마크
가상 상자:버전 5.1.10 r112026(Qt5.5.1)
게스트 보충: 설치되어 있고 최신 상태입니다.
벤치마크 도구 #1:WinRAR 버전 5.40 최종 64비트
벤치마크 도구 #2:VeraCrypt 버전 1.19 최종 64비트
준비하다
두 경우 모두 부팅 후 CPU, RAM, 디스크 드라이브가 0에 가깝게 안정될 때까지 기다립니다.
방법
- 원래 가상 머신을 복제하여 두 개의 동일한 가상 머신을 갖습니다.
- 두 번째로 저는 이 답변의 맨 아래에 재부팅하여 바이러스 백신을 비활성화하고 두 경우 모두 WinRAR을 베타에서 최종 버전으로 업데이트하라고 명시했습니다.
- 앞서 언급한 것과 동일한 준비를 했습니다.
- 가상 머신은 포그라운드에서 실행되고 있고, CPU 시간을 차지하는 다른 애플리케이션은 실행되고 있지 않으며, 테스트에 문제가 발생하지 않도록 가능한 모든 기능을 비활성화했습니다.
- 시스템 내부 또는 외부의 잠재적인 캐싱을 포함하기 위해 동일한 테스트를 두 번 연속 실행했습니다. 혜택이 거의 없습니다.
결과
감압 도구
4핵심 =>7.5분(더 짧게시간이 더 좋다)
WinRAR 및4코어 활성화, 1.5GiB 처리7.5분.
8핵심 =>4.5분(더 짧게시간이 더 좋다)
WinRAR 및8코어 활성화, 1.5GiB 처리4.5분.
베라 코드
4코어 => 속도2.6GiB/초(더 높은속도가 더 좋아짐)
VeraCrypt 및4코어 활성화,하드웨어 가속 AES(AES-NI)속도2.6GiB/초
8코어 => 속도3.9GiB/초(더 높은속도가 더 좋아짐)
VeraCrypt 및8코어 활성화,하드웨어 가속 AES(AES-NI)속도3.9GiB/초
결론적으로
원하는 만큼 많은 테스트를 실행할 수 있습니다. 하지만 이 두 가지 중 하나는 상당히 복잡한 압축 테스트이고 두 번째는 상당히 복잡한 암호화 테스트 세트라면 요점은 무엇일까요?
두 벤치마크 모두 뚜렷한 차이를 보여줍니다. 나는 상당히 엄격한 준비와 방법론을 따랐고 I/O 병목 현상을 배제하기 위해 RAM에서 테스트를 수행했기 때문에 결과가 정확하지 않다고 믿을 이유가 없습니다. 내 관점에서는 질문에 언급된 경고가 일부 경우에 적용될 수 있지만 확실히 전부는 아닙니다. 이러한 다소 놀라운 결과를 여러분과 공유한 후에는 다음과 같은 최신 CPU에서는 이 경고를 그렇게 심각하게 받아들여서는 안 된다는 점에 여러분도 동의하실 것이라고 확신합니다.하이퍼스레딩최신 VirtualBox 버전을 사용하세요. 한 가지는 확실합니다. 이 설정을 영구적으로 적용하기로 결정하기 전에 내 말을 그대로 받아들이지 말고 자신의 조건에서 테스트해 보세요.
새로운 벤치마크
호스트 + 게스트:리눅스 민트 19.2 "티나" - 시나몬(64비트);둘 다 커널과 함께 제공됩니다: 5.3.0-24-generic
.
프로세서:인텔® 코어™ i7-7700HQ; 6MB 캐시, 최대 3.80GHz, 물리적 코어 4개 또는 하이퍼스레딩 사용 시 8개,CPU 벤치마크 비교
가상 상자:버전 6.1.0 r135406(Qt5.9.5)
게스트 보충: 설치되어 있고 최신 상태입니다.
벤치마킹 도구: VeraCrypt 버전 1.24 Hotfix1 64비트 최종 버전(웹 페이지,직접 deb 다운로드 링크)
준비 및 방법
이전 벤치마크와 동일합니다.
결과
VeraCrypt 4 코어 AES 암호화
⟶ 속도 4.8 GiB/s (속도가 빠를수록 좋음)
VeraCrypt 8 코어 AES 암호화(하이퍼스레딩경고)
⟶ 속도 7.2 GiB/s (속도가 빠를수록 좋음)
결론적으로
놀라운 50% 성능 향상하이퍼스레딩활성화되었지만 안타깝게도 AES에 대해서만 좀 더 포괄적인 테스트를 실행해야 합니다. 며칠 후에 결과를 가지고 돌아올 것입니다.
답변2
운영 체제 설계자로서 저는 측정값에 더 이상 동의할 수 없었습니다. 이 주제에 관해 다른 곳에서 쓰여진 넌센스의 양은 믿을 수 없을 정도입니다.
논리 코어 수는 하드웨어가 실행할 수 있는 병렬 스레드/프로세스 수로 생각하십시오. 이는 CPU 코어의 레지스터와 명령 포인터를 복사하여 수행됩니다. 이제 CPU 코어는 사용할 스레드(명령 포인터)를 자체적으로 결정합니다. 현재 스레드의 명령어를 캐시에서 사용할 수 없고 메모리나 L3 캐시에서 가져와야 하기 때문에 다른 스레드를 사용하기로 결정합니다. 이 메커니즘은 잠재적으로 초당 명령 또는 CPU 성능을 10%-30% 증가시킵니다.
하나의 스레드를 사용하여 단일 응용 프로그램을 실행하는 경우에는 이 이점을 얻을 수 없지만, 오래된 HT Pentium에서 두 개의 고부하 응용 프로그램을 실행하면 이 이점을 얻을 수 있습니다. 물론 다중 스레드를 사용하는 애플리케이션의 경우에도 마찬가지입니다. 내 Linux 시스템에는 200개의 스레드가 있으므로 실제 로드에 따라 항상 약간의 이점이 있습니다. 이러한 모든 설명은 가상화 없이 적용됩니다.
Virtualbox는 각 가상 머신(VM)이 병렬로 실행할 수 있는 스레드 수만 제한하지만 호스트 프로세스 스케줄러는 논리 프로세서를 변경하므로 VM 프로세스가 동적으로 실행되는 물리적 프로세서도 변경됩니다. 가상 머신에서 로드가 높은 애플리케이션을 실행하는 경우 추가 논리 코어는 동일한 이점의 10%-30%를 제공합니다. 워크로드는 단일 다중 스레드 애플리케이션일 수도 있고 다양한 애플리케이션 그룹일 수도 있습니다.
VT-x 또는 AMD-V를 사용하는 최신 시스템에서는 더 많은 가상 머신을 동시에 실행해도 상당한 성능 저하가 없으므로 논리 코어 수를 최대화해도 성능 저하가 없습니다. 한계는 CPU 칩의 성능이므로, 3개의 가상 머신이 동일한 물리적 CPU를 공유해야 하기 때문에 각 가상 머신의 속도를 늦추지 않고 동시에 3개의 가상 머신에서 비디오를 렌더링할 수 없습니다.
모든 논리 코어가 존재하는 가상 머신에서 비디오를 렌더링하는 경우 호스트 시스템이 응답하지 않을 수 있지만 호스트에서 렌더링 애플리케이션을 실행하는 경우 거의 동일한 문제가 발생합니다. 적어도 VM에서는 최대 CPU 로드를 80%-90%로 제한하거나 코어 수를 줄여 이 문제를 해결할 수 있는 옵션이 있습니다.
답변3
제가 가장 잘 할 수 있는 점은 모든 코어/스레드를 절대 사용하지 않고 호스트 시스템에 한두 개만 사용하는 것입니다.
따라서 귀하의 경우 게스트에게 8번째 코어가 아닌 6개의 코어를 제공하십시오(호스트에 스레드가 8개만 있으므로).
호스트에서 사용 가능한 스레드 수(커널과 혼동하지 말 것)가 다음과 같은 경우:
- < 2인 경우 가상 머신을 전혀 사용하지 않는 것이 좋습니다.
- 2인 경우 단일 코어 모드에서 VM을 사용하거나 듀얼 코어 게스트를 사용할 위험이 있습니다.
- > 2이면 공식을 사용하는 것이 좋습니다
스레드가 2개 이상인 경우에는 다음 공식을 사용하는 경향이 있습니다.
- N = 호스트 스레드 수
- M = 실행하려는 동시 VM 수(게스트당 동일한 수의 게스트 코어가 균형을 이루고 있다고 가정)
- 호스트에 4개 이하의 스레드만 있는 경우 공식 = (N-1)/M
- 호스트에 4개 이상의 스레드가 있는 경우 공식 = (N-2)/M
내 경험에 따르면 그러한 공식의 한계를 초과하지 않는 것이 더 원활하고 덜 위험합니다.
경고: 게스트를 실행할 때 게스트 코어 수를 변경하는 것은 허용되지 않지만 CPU 사용량을 100%에서 75% 또는 심지어 50%까지 줄이는 것은 허용되며 게스트가 실패할 수도 있습니다.
그래서 때로는 8스레드 호스트의 게스트 두 명에게 6코어 6개를 제공하는 경향이 있지만(공식의 숫자는 게스트가 두 개가 아닌 한 명뿐인 것과 같습니다) CPU 속도의 50%로 제한합니다(따라서 2개 각 게스트는 1/2 CPU 시간을 사용할 수 있지만 게스트가 이미지 비교/결합 등과 같이 병렬 처리 비율이 1보다 큰 애플리케이션을 실행한다는 것을 알고 있는 경우에만 가능합니다.