2013-06-30 3 views
4

VB IRC 채널에서이 질문에 대한 답변을 얻으려고했습니다. stackexchange, stackoverflow, 수퍼 유저 및 다른 곳을 둘러 보았습니다. 대답은 가까워 지지만 내가 알고 싶은 것은 아닙니다.VirtualBox는 사용 가능한 가상 CPU 수를 어떻게 계산합니까?

이것은 호기심에 관한 질문이며 필요성 중 하나가 아닙니다. 나는 일이 어떻게 작동하는지 알고 싶다. 버그, 향상 요청 또는 보안 문제와 아무 관련이 없습니다. 이 포럼이 이에 대한 답변을 얻을 수있는 곳이 아니라고 생각되면 적절한 장소로 안내해주십시오. 감사. (VBox의 자체 포럼이 잘못된 장소 일 수 있다고 생각하는 사람은 누구나 어렵지만 특정 질문에 대한 답변이나 적절한 카테고리에 게시 할 장소를 찾지 못했습니다.) 문제가 발생하면 제 질문을 닫지 마십시오. 적어도 더 나은 리소스를 지적하지 않고서 (나는 그것이 일어날 때가 싫다!). 다시 한번 감사드립니다.

이제 가상 호스트의 호스트 드라이버가 제공하는 가상 CPU의 총 개수는 어떻게 계산합니까?

(정말 질문을 읽거나, 적어도 처음보다 명확한 설명을 요구하지 않은 사람의 답변에 응답하지 않습니다 유의하시기 바랍니다. 나는이 매우 직선적 문제라고 생각합니다.)

나를 보자 가능한 한 정확하고 간결한 질문을 내려 놓으십시오. VirtualBox HOST 소프트웨어 (어떤 부분이든간에)가 사용자가 특정 VPCU에 적용 할 VCPU 수를 선택하는 구성 인터페이스에 얼마나 많은 VIRTUAL CPU가 나타나는지를 결정하는 방법을 알고 싶습니다.

내가 묻지 않는 것은 : 일반적으로 가상화 하드웨어 등의 기적에 대해 묻는 것이 아닙니다. 다중 코어 및 다중 스레딩, VTx 등을 이해합니다. 특정 VM 또는 응용 프로그램에 대해 얼마나 많이 사용해야하는지 묻지 않습니다. 내 질문에 특정 VM을 구성하는 데 도움을 요청하지 않습니다. 나는 왜 내가 알 필요가 있는지 물어 보는 사람을 요구하지 않고있다. 나는 이미 너에게 말했다. 나는 단지 호기심이 많다. 내 특정 질문에 관심이 없다면 괜찮습니다. 다시 말하지만, 이것은 간단하고 간단한 질문입니다 : VBox는 어떻게 숫자에 도달합니까?

내가 알고있는 사실 : 적어도 일반적으로 대답은 실제 CPU의 2 배입니다. 좋아, 그렇다면 왜 2x가 아닌 3x 또는 다른 배율을 사용합니까? (코어 나 스레드 홀수의 경우 분수가 작동하지 않을 것이라는 것을 알고 있으며, 나는 단지 내가 할 수있는 일반적인 것입니다.) 예를 들어, Phenom II X6에서 VirtualBox는 최대 12 개의 VCPU를 제공합니다. 답이 쓰레드라면, 글쎄요, 제 특정 Thuban에는 쓰레드가 없기 때문에 그렇게 할 수 없습니다 (몇몇 Thubans는하지 만, 어떤 것은하지 않습니다). 내 Thuban이하는 일은 하이퍼 트랜스 포트이지만 하이퍼 스레딩은 아닙니다. 마찬가지로, 제 오래된 Phenom II X2는 Virtualbox에서 4 개의 VCPU를 허용합니다.

오버 헤드를 추가하기 때문에 VM 당 둘 이상의 VCPU를 사용하지 않도록 사용자에게 경고합니다 (한 가지만 수행하면 성능 적중률이 높은 IOAPIC을 실행해야합니다). 나는 또한 질문이 나의 것 같이 들린다 곳에 포스트를 읽었다, 그러나 궁극적으로 이것에 응답을주지 않는다.

대답은 어떤 종류의 시그마 합 또는 로그 공식입니까? 이 포럼의 형식 지정 기능을 초과 할 정도로 복잡합니까? 이 질문에 대한 답을 얻는 것이 왜 그렇게 어려운지 상상하기 어렵습니다. 나는 대답을 여러 번 해보았을 것입니다. 나는 그것이 보통 2x 인 것처럼 보이는 이유를 정말로 알고 싶다; 왜 그것이 "마술"번호인지. 소스 코드를 읽으면 (사용 가능하다고 가정) 의견에 이유가 설명되어 있습니까?

나는 정말로이 질문을 읽고 답하는 영혼을 존경하고 존경하며 다른 질문은하지 않는다. IRC의 어둡고 적대적인 채널로 나를 안내하지 않기를 바랍니다. IRC에는 범죄 정신에 관한 미확인 범 몇 사람을 생각 나게하는 아주 변덕스러운 단체가 있습니다.내가 "약간"이라고 말했던 것에 주목해라. 거기에는 도움이되는 사람들도있다. 적대적 의미는 아닙니다. 더 이상 IRC에가는 것은 싫어. 이걸 가지고 IRC에서 유용한 닉을 발견했다면, 그 점도 고맙겠습니다.

나는이 질문에 대한 답변을 찾다가 SO, SE 및 SU 게시판을 읽었으며 어떤 사람들은 전혀 관련이없는 답변으로 응답합니다. 그게 내게 거친 소리처럼 들릴지도 모르는 이유 다. 이것은 첫 번째 게시물이며, IRC에 대한 몇 가지 경험보다 긍정적 인 답변이되기를 바랍니다.

+0

superuser.com에서 질문이 환영받지 못하는 이유가 무엇인지 모르겠습니다. 가장 적합한 장소 인 것 같습니다. – Barmar

+0

수퍼 유저 만 검색했습니다. 나는 거기에 내 질문을 게시하지 않았다. 그것은 여기에 환영받는 것처럼 보였을 것입니다. 나는이 모든 유사한 사이트 들간의 차이점에 대해서는 확실하지 않다. (그러나 나는 그것도 연구하고있다.) – Phelonius

+0

기억해야 할 점은이 사이트는 귀하, 자신, 쓰고있는 프로그램 또는 프로그래밍 용 도구 (예 : 컴파일러, IDE, 버전 제어 소프트웨어)에 도움이된다는 것입니다. VirtualBox와 같은 일반적인 응용 프로그램 사용에 대한 질문은 superuser.com에서 더 많습니다. _why_ VB에 대한 질문은 프로그래머에게 직접적인 질문을 제외하고는 어디에도 맞지 않는 방식으로 설계되었습니다. – Barmar

답변

4

"VirtualBox GUI가 시스템 설정에서 프로세서 슬라이더의 사용 가능한 범위를 어떻게 계산합니까?"

VirtualBox가 open source (매우 깨끗하고 잘 작성된 소스)이기 때문에 코드를 파고 답을 연구하기가 너무 어렵지 않습니다. /src/VBox/Frontends/VirtualBox/src/settings/machine 폴더로 내려 가서 설정 UI 요소를 구성하는 모든 UI * 파일을 볼 수 있습니다. 귀하의 답을 얻을 수있는 구체적인 파일은 UIMachineSettingsSystem.cpp입니다. 라인 (45)에 대해에 시작하면 (개정 43459 기준), 다음과 같은 코드를 볼 수 있습니다

/* Setup constants */ 
CSystemProperties properties = vboxGlobal().virtualBox().GetSystemProperties(); 
uint hostCPUs = vboxGlobal().host().GetProcessorCount(); 
mMinGuestCPU = properties.GetMinGuestCPUCount(); 
mMaxGuestCPU = RT_MIN (2 * hostCPUs, properties.GetMaxGuestCPUCount()); 

mMinGuestCPU 변수 및 관련 GetMinGuestCPUCount() 방법을 (그리고 mMaxGuestCPU/GetMaxGuestCPUCount())는 상대적으로 간단합니다 - 일반적으로는 1이됩니다 min 및 max는 호스트에서 사용 가능한 실제/논리 코어의 수입니다.

귀하의 질문에 대답하기 위해 - 슬라이더의 눈금은 일반적으로 1에서 까지 두 번 개의 코어 수입니다. 소스 코드를 다운로드하고 해당 숫자를 계산하는 방법을 파헤 치고 계산 방법과 관련된 뉘앙스를 직접 확인하십시오. 특히 vboxGlobal().host().GetProcessorCount() 방법입니다.

+0

고이유 감사합니다. 나는 소스 코드가 최후의 수단이 될 것이라고 생각했다. 유일한 이유는 무엇입니까? 이유를 알아 내려고 소스를 살펴볼 수있을 것 같아요.하지만 2가 하드 코딩 된 숫자라고 다소 말하고있는 것 같아요. 아마도 내 질문을 더 간결하게 표현해야했습니다. 나는이 승수가 하드웨어의 물리적 특성에 의해 제한되는지를 물어야했다. 나는 내 질문을하는 것이 훨씬 더 나은 방법이라고 인정했다. 그런 다음 다시 하드 코딩되었거나 다른 매개 변수에 종속되어 있는지 확실하지 않았습니다. – Phelonius

+1

필자는 프로그래머가 임의로 성능을 결정한 것으로 판단합니다. 하나의 물리적 프로세서에서 두 개 이상의 프로세서를 에뮬레이션하려고하면 너무 느려질 것입니다. – Barmar

+0

programmers.stackexchange.com을 보길 원할 것입니다. 아마도 그 이유에 대한 질문에 가장 적합 할 것입니다. 나는 거기에 적극적으로 참여하지 않기 때문에 올바른 방법이 아닐 수도 있습니다. 대화방 중 하나를 시도해보고 온라인 토론에 관심이있는 사람이 있는지 확인할 수도 있습니다. – Goyuix