멀티 코어, 하이퍼 스레딩 또는 다중 프로세서에서 프로그래밍 방식으로 결정하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1817268

문제

프로세서 유형을 얻는 방법을 알고 있습니다. 아마도 유일한 방법 일 것입니다. 멀티 코어 프로세서 또는 하이퍼 스레딩 싱글 코어 프로세서에서 실행중인 응용 프로그램에서 결정하는 방법.

(배경 : 일부 고객의 호스팅 제공 업체는 VMware 이미지를 통해 어떤 리소스를 사용할 수 있는지에 대해 매우 모호합니다.이 응용 프로그램은 멀티 코어에서 실행되지만 마지막 "이동"이후로 해로운 성능을 보였습니다. 멀티 코어, 하나의 핵심 스파이크는 다른 스레드에 있고 다른 스레드는 다른 스레드가 아닙니다.이 "멀티 코어"에서 두 프로세서는 단일 스레드 애플리케이션에서도 스파이크입니다.)

도움이 되었습니까?

해결책

하이퍼 스레드 프로세서도 포함 할 System.Environment.ProcessOrcount. VMware가 노출 될 수 있거나 노출되지 않을 수 있습니다. 프로세서가 VT 활성화되고 Baremetal 지원 하이퍼 바이저 기술을 사용하면 노출 될 가능성이 높습니다.

xp-sp3/win2k3 이상인 경우 WMI를 사용하여 꺼낼 수 있습니다.

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

값이 동일하다면 시스템에 HT가 없거나 활성화되지 않은 기회가있을 가능성이 있습니다.

.NET에서 WMI 정보를 꺼내는 방법을 탐색 할 수 있습니다. 이 튜토리얼.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top