VM을 만들 때 모든 CPU 코어를 VM에 전달하고 싶지 않은 이유는 무엇입니까?

VM을 만들 때 모든 CPU 코어를 VM에 전달하고 싶지 않은 이유는 무엇입니까?

(저는 xcp-ng/xen을 하이퍼바이저로 사용하고 있지만 qemu/kvm 및 virtualbox를 사용할 때부터 일반적인 질문입니다. 이에 대해서도 알고 싶습니다.) VM을 생성할 때마다 가능한 한 많은 코어를 제공하는 옵션이 있습니다. 가능한 한 시스템에 CPU 코어가 몇 개 있든 상관없이 원할 경우 모든 VM에 모든 CPU 코어를 제공할 수 있습니다. 이는 VM이 ​​이를 공유한다는 의미인 것 같습니다.

그러다가 내 마음에 질문이 떠올랐습니다. 이유가 있나요?아니요호스트 시스템이 단지 하이퍼바이저의 임무를 수행하고 모든 가상 머신에 모든 코어를 제공한다면 어떻게 될까요?

답변1

가상 머신이 무시할 수 없는 로드 상태에 있을 때 발생하는 컨텍스트 전환의 양이 증가하기 때문입니다. 컨텍스트 전환은 하이퍼바이저에서 실행할 때 훨씬 더 많은 비용이 듭니다. 다음은 최근의 것들입니다.가상화 오버헤드 성능 측정그랬어요.

각 가상 머신을 더 적은 수의 CPU 코어로 제한하면 다른 이점도 있습니다. 예를 들어 가상 머신 하나에 장애가 발생하더라도 머신의 다른 모든 것이 중단될 수 없다는 의미입니다. CPU를 공유하는 VM에는 잠재적인 보안 문제도 있지만 실행 중인 모든 VM(예: 스펙터/멜트다운 공격)을 신뢰하므로 문제가 되지 않습니다.

답변2

VM을 만들 때 pass모든 CPU 코어를 사용하고 싶지 않은 이유는 무엇입니까?

질문 제목을 보면 완전히 다른 두 가지를 혼합하고 있는 것 같습니다. "통과"는 가상 머신 전용이라는 의미입니다. 이는 Virtualbox에서 "가상 CPU" 수를 설정할 때 수행하는 작업이 아닙니다. 일반적인 통념에서는 이 숫자가 콘솔의 물리적 코어 수를 초과하지 않는다고 생각하지만, 내 경험에 따르면 반드시 그런 것은 아닙니다. 예를 들어 Virtualbox에서는 4개의 코어와 8개의 스레드 CPU가 있는 호스트에서 각각 6개의 가상 CPU가 있는 일부 가상 머신을 시작했습니다. 이러한 가상 머신 중 일부는 호스트 머신에서 일상적인 작업을 수행하는 동안 무거운 컴파일 작업을 수행하고 있습니다. 부정적인 부작용은 없습니다. 콘솔에서 지연, 끊김, 속도 저하가 느껴지지 않습니다. 이점에 관해서는 4-CPU VM에 비해 제한적이지만 측정 가능한 속도 향상이 있습니다. 즉, 커널 컴파일 작업이 훨씬 더 빠르게 완료되지만 그다지 크지는 않습니다. 게스트의 가상 CPU 수를 더 늘려도 더 이상 이점이 나타나지 않았습니다. 따라서 이 설정에서는 게스트에게 CPU 코어를 "전달"하지 않습니다. 게스트에게 가상 CPU를 제공하는 것은 qemu/kvm/Virtualbox에 달려 있으며 분명히 Virtualbox는 이를 잘 수행합니다.

(참고: 귀하의 게시물에서 "Xen"이라는 단어도 언급하셨습니다. Xen에 대해 언급할 수는 없지만 Xen이 실제로 CPU 코어를 "통과"하는 데 문제가 있을 수 있다고 의심됩니다. 다른 사람들은 Xen에 대해 언급하고 싶을 수도 있습니다. )

관련 정보