하드웨어/운영 체제/소프트웨어

하드웨어/운영 체제/소프트웨어

VirtualBox: 내가 보기엔하이퍼스레딩가능한 CPU에 대해 알고 싶습니다.

다음 경고에 표시된 것처럼 물리적 CPU 코어 수보다 더 많은 가상 CPU 코어를 할당하는 것은 나쁜 생각이 아닙니다(예: 4개 물리적 코어 CPU의 8개 가상 코어만 사용).

하이퍼스레딩을 사용하는 경우 VirtualBox CPU 경고

성적 증명서:

가상 머신에 할당된 가상 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에 가깝게 안정될 때까지 기다립니다.


방법

  1. 원래 가상 머신을 복제하여 두 개의 동일한 가상 머신을 갖습니다.
  2. 두 번째로 저는 이 답변의 맨 아래에 재부팅하여 바이러스 백신을 비활성화하고 두 경우 모두 WinRAR을 베타에서 최종 버전으로 업데이트하라고 명시했습니다.
  3. 앞서 언급한 것과 동일한 준비를 했습니다.
  4. 가상 머신은 포그라운드에서 실행되고 있고, CPU 시간을 차지하는 다른 애플리케이션은 실행되고 있지 않으며, 테스트에 문제가 발생하지 않도록 가능한 모든 기능을 비활성화했습니다.
  5. 시스템 내부 또는 외부의 잠재적인 캐싱을 포함하기 위해 동일한 테스트를 두 번 연속 실행했습니다. 혜택이 거의 없습니다.

결과

감압 도구

  1. 4핵심 =>7.5분(더 짧게시간이 더 좋다)

    4개 코어가 활성화된 WinRAR

    WinRAR 및4코어 활성화, 1.5GiB 처리7.5분.

  2. 8핵심 =>4.5분(더 짧게시간이 더 좋다)

    8개 코어가 활성화된 WinRAR

    WinRAR 및8코어 활성화, 1.5GiB 처리4.5분.


베라 코드

  1. 4코어 => 속도2.6GiB/초(더 높은속도가 더 좋아짐)

    4개 코어가 활성화된 VeraCrypt

    VeraCrypt 및4코어 활성화,하드웨어 가속 AES(AES-NI)속도2.6GiB/초

  2. 8코어 => 속도3.9GiB/초(더 높은속도가 더 좋아짐)

    8개 코어가 활성화된 VeraCrypt

    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 AES 암호화 4코어 = 속도 4.8GiB/s


VeraCrypt 8 코어 AES 암호화(하이퍼스레딩경고)

⟶ 속도 7.2 GiB/s (속도가 빠를수록 좋음)

VeraCrypt AES 암호화 8코어 = 속도 7.2GiB/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보다 큰 애플리케이션을 실행한다는 것을 알고 있는 경우에만 가능합니다.

관련 정보