Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 CPU 코어 수 확인하는 방법 – 물리적 프로세서부터 논리적 프로세서까지

C#에서 확인할 수 있는 CPU 관련 정보

C#으로 시스템의 프로세서 정보를 조회할 때 얻을 수 있는 항목은 크게 세 가지입니다.

  • 물리적 프로세서 수 – 실제로 장착된 CPU(소켓)의 개수
  • 코어 수 – 각 프로세서 내부에 포함된 물리적 코어의 총합
  • 논리적 프로세서 수 – 운영체제가 인식하는 스레드(논리 코어)의 총합

이 세 가지 값은 서로 다를 수 있습니다. 예를 들어 하이퍼스레딩이 활성화된 듀얼 코어 프로세서 2개를 장착한 시스템이라면 물리적 프로세서는 2개, 코어는 4개, 논리적 프로세서는 8개가 됩니다.

논리적 프로세서 수는 Environment 클래스만으로도 손쉽게 확인할 수 있지만, 물리적 프로세서 수와 코어 수는 WMI(Windows Management Instrumentation)를 통해서만 조회할 수 있습니다. 일부 시스템에서는 이 정보를 정상적으로 가져오기 위해 핫픽스나 서비스 팩 설치가 필요할 수도 있습니다.

사전 준비: System.Management 참조 추가

WMI에 접근하려면 프로젝트에 System.Management.dll을 참조로 추가해야 합니다. .NET Core 및 .NET 5 이상 환경에서는 Windows 전용 NuGet 패키지인 System.Management를 설치하면 됩니다.

dotnet add package System.Management

1. 물리적 프로세서 수 확인하기

Win32_ComputerSystem 클래스의 NumberOfProcessors 속성을 사용하면 실제 장착된 CPU의 개수를 알 수 있습니다.

class Program
{
    public static void Main()
    {
        foreach (var item in new System.Management.ManagementObjectSearcher(
            "Select * from Win32_ComputerSystem").Get())
        {
            Console.WriteLine("물리적 프로세서 수: {0}", item["NumberOfProcessors"]);
        }
        Console.ReadLine();
    }
}

실행 결과:

물리적 프로세서 수: 1

2. 코어 수 확인하기

Win32_Processor 클래스의 NumberOfCores 속성을 사용합니다. 여러 개의 CPU가 장착된 시스템을 고려하여 각 프로세서의 코어 수를 모두 더하는 방식으로 계산합니다.

class Program
{
    public static void Main()
    {
        int coreCount = 0;
        foreach (var item in new System.Management.ManagementObjectSearcher(
            "Select * from Win32_Processor").Get())
        {
            coreCount += int.Parse(item["NumberOfCores"].ToString());
        }
        Console.WriteLine("코어 수: {0}", coreCount);
        Console.ReadLine();
    }
}

실행 결과:

코어 수: 2

3. 논리적 프로세서 수 확인하기

논리적 프로세서 수는 별도의 WMI 쿼리 없이 Environment.ProcessorCount 속성 하나로 즉시 확인할 수 있습니다. 이 값은 멀티스레딩 작업 시 병렬 처리 수준을 결정하거나 스레드 풀 크기를 조정할 때 자주 활용됩니다.

class Program
{
    public static void Main()
    {
        Console.WriteLine("논리적 프로세서 수: {0}", Environment.ProcessorCount);
        Console.ReadLine();
    }
}

실행 결과:

논리적 프로세서 수: 4

정리

핵심 내용을 요약하면 다음과 같습니다.

  • 논리적 프로세서 수: Environment.ProcessorCount (가장 간단한 방법)
  • 물리적 프로세서 수: WMI Win32_ComputerSystemNumberOfProcessors
  • 코어 수: WMI Win32_ProcessorNumberOfCores

병렬 처리 성능 최적화, 라이선스 정책 검증 등 시스템 하드웨어 정보가 필요한 상황이라면 위 방법들을 목적에 맞게 활용해 보시기 바랍니다.