2009-11-30 2 views
0

나는 프로세서 유형을 얻는 방법을 알고있다. 아마도 유일한 방법이지만 실제로는 찾고있다. 멀티 코어 프로세서에서 실행 중인지 또는 하이퍼 스레딩 단일 프로세서에서 실행 중인지를 응용 프로그램에서 결정하는 방법. 코어 프로세서.멀티 코어, 하이퍼 스레딩 또는 멀티 프로세서에서 프로그래밍 방식으로 어떻게 결정할 수 있습니까?

(배경 : 일부 고객의 호스팅 제공 업체는 VMWare 이미지를 통해 제공되는 리소스에 대해 매우 모호합니다.이 응용 프로그램은 멀티 코어에서 실행될 예정이지만 마지막 "이동"이후에 해로운 성능을 보입니다. 일반적으로 멀티 코어에서는 한 스레드에서 한 코어가 스파이크를 일으키지 만 다른 스레드에서는 그렇지 않습니다.이 "멀티 코어"에서는 단일 스레드 응용 프로그램에서도 두 프로세서 모두 스파이크가 발생합니다.)

답변

4

System.Environment.ProcessorCount 하이퍼 스레딩 프로세서도 포함됩니다. 어떤 VM웨어가 노출 될 수도 있고 노출되지 않을 수도 있습니다. 프로세서가 VT를 사용할 수 있고 베어 메탈 지원 하이퍼 바이저 기술을 사용하는 경우 노출 될 확률이 높습니다.

당신은 XP-SP3/WIN2k3 또는 당신의 위가 꺼내 WMI를 사용할 수있는 경우 :

Win32_ComputerSystem.NumberOfProcessors returns physical count 

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count 

값이 다음 같은 경우 기회는 시스템에 HT가없는하거나 사용할 수 없습니다 있습니다 .

.NET에서 WMI 정보를 추출하는 방법을 알아 보려면 this tutorial에서 시작할 수 있습니다.

+0

나는 WMI를 안다. 고마워. 나는 이것을 시도 할 것이고, 효과가있을 것이다. 이상하게도 taskmgr과 CPU-Z는 동일한 양의 프로세서를 제공합니다. 그러나 CPU-Z는 프로세서 당 하나의 코어를 보여 주며 유형이 원래 (물리적으로) 쿼드 코어라고 확신합니다. 이 일이 옳다면 까다로울 수 있습니다. – Abel

+0

다음을보세요 : http://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection/ 나는 비디오를 보았습니다. 나는 VT를 사용할 수 없거나 BIOS에서 사용할 수없는 VM웨어 소프트웨어 또는 버전을 사용하고 있다는 의혹이 있습니다. 이 경우에는 2 개의 코어에서 인위적으로 VM을 예약하는 것입니다. –

+0

http://communities.vmware.com/docs/DOC-5101 하이퍼 스레딩 및 ESX를 베어 메탈 하이퍼 바이저로 사용하는 경우 ESX가 VM을 가상 코어에 예약 할 수 있음을 보여줍니다. 가상 코어는 수요가 코어를 초과 할 때까지 사용되지 않는다고 언급됩니다. VT를 사용하는 프로세서에서 어떻게 작동하는지 궁금합니다. 올바르게 기억한다면 VM의 ESX를 특정 프로세서에 바인딩 할 수 있습니다. –