2010-04-05 2 views
0

멀티 소켓 컴퓨터에 액세스 할 수 없으므로 다음이 총 프로세서 및 논리 프로세서를 확보 할 수 있는지 확신 할 수 없습니다. 나는 ManagementObjectSearcher가 각 소켓 된 CPU에 대한 인스턴스를 리턴 할 것이고 나는 단지 전체를 유지한다고 가정한다.다중 CPU 시스템에서 WMI를 사용하는 총 프로세서를 얻는 올바른 방법입니까?

int totalCPUs = 0; 
int totalLogicalCPUs = 0; 

ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_ComputerSystem"); 
foreach (var mo in mos.Get()) 
{ 
    string num = mo.Properties["NumberOfProcessors"].Value.ToString(); 
    totalCPUs += Convert.ToInt32(num); 


    num = mo.Properties["NumberOfLogicalProcessors"].Value.ToString(); 
    totalLogicalCPUs += Convert.ToInt32(num); 
} 
+0

대용량 병렬 다중 시스템 클러스터에서 실행될 때 코드는 계속 작동합니다. –

답변

0

Win32_ComputerSystem 인스턴스가 1 개만 반환됩니다. documentation에서 :

컴퓨터 시스템은 두 개의 물리 프로세서를 각각 포함하는 두 개의 논리 프로세서를 갖는 경우 NumberOfProcessors의 값이 2이고 NumberOfLogicalProcessors는 프로세서가 멀티 수있다하거나 하이퍼 스레드 프로세서 일 수있다 (4)이다.

관련 문제