본문 바로가기
IT, 컴퓨터

[C#] 내 PC의 CPU 사용량, 종류, 코어개수를 알아보자

by 별찌파파 2023. 10. 28.
728x90
반응형
SMALL
반응형

컴퓨터를 사용하다 보면 과도한 프로그램을 구동해야 하는 경우가 많은데, 우리는 그때 보통 CPU의 사용량을 모터링 해봅니다. 왜냐하면 구동하는 PC에서 리소스의 부족함 없이 구동이 가능한지 확인해봐야 하기 때문일 것입니다. 부족하면 CPU를 업그레이드하거나 구동하는 프로그램을 줄여야 할 것입니다. 그렇지 않으면 원활한 사용이 되지 않기 때문입니다. 실제 100%의 CPU 사용량으로 계속 구동하다 보면 실제 100%를 활용해서 쓰는 것이 아니라 특정 부분이 정체되어 있기 때문에 예상보다 훨씬 느린 속도로 완료됩니다.

보통 우리는 위와 같이 윈도우에서 제공해 주는 작업관리자를 통해서 CPU의 사용율을 알아낼 수 있답니다. 제 PC의 경우는 옥타코어에 쓰레드로 인해서 논리 프로세서가 16개로 보이는 것입니다. 제가 사용하는 CPU도 출시된 지 좀 된 것인데, 20년 전만 하더라도 이런 사양의 CPU는 상상하기 힘들었죠.

 

C#으로 CPU관련 내용을 알아오는 프로그램을 작성해보고 수행해 보겠습니다.

CPU 사용량

먼저 CPU의 사용량을 알아오는 프로그램을 작성해 보도록 하겠습니다. 코드는 아래와 같으며, System.Diagnostics를 이용하여 알아낼 수 있답니다.

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // "Processor" 카테고리의 "% Processor Time" 성능 카운터를 사용합니다.
        PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");

        // 현재 CPU 사용량을 가져옵니다.
        float cpuUsage = cpuCounter.NextValue();

        // 조금 시간을 기다린 후 다시 가져와서 업데이트된 값을 얻을 수 있습니다.
        System.Threading.Thread.Sleep(1000); // 1초 대기
        cpuUsage = cpuCounter.NextValue();

        Console.WriteLine("현재 CPU 사용량: " + cpuUsage + "%");
        Console.ReadLine();
    }
}

작성한 코드를 수행해 보겠습니다. 

 

수행해 보면 실제 사용량이 나오는 것을 확인할 수 있습니다.

CPU의 코어 개수

다음은 CPU의 코어 개수를 알아오는 코드를 작성해 보겠습니다. 코어 개수는 기본적으로 System으로도 알아낼 수 있습니다.

코드는 아래와 같습니다.

using System;

class Program
{
    static void Main()
    {
        int coreCount = Environment.ProcessorCount;
        Console.WriteLine("시스템의 CPU 코어 개수: " + coreCount);
        Console.ReadLine();
    }
}

 

수행결과 정확히 코어의 개수를 알아오는 것을 확인할 수 있습니다.

CPU 종류 알아내기

마지막으로 CPU의 종류를 알아오는 코드를 작성해보겠습니다. CPU의 종류는 System.Management 네임스페이스를 이용하면 알아낼 수 있습니다.

using System;
using System.Management;

class Program
{
    static void Main()
    {
        try
        {
            // WMI (Windows Management Instrumentation) 쿼리를 사용하여 CPU 정보를 가져옵니다.
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
            ManagementObjectCollection collection = searcher.Get();

            foreach (ManagementObject obj in collection)
            {
                string cpuName = obj["Name"].ToString();
                Console.WriteLine("CPU 모델: " + cpuName);                
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("CPU 정보를 가져오는 데 실패했습니다: " + e.Message);
        }
        Console.ReadLine();
    }
}

 

하지만 작성하고 나면 위와 같이 오류가 발생하는데요, 이때는 참조를 직접 추가해줘야 합니다. 참조 추가를 눌러 System.Management를 직접 추가해 주시면 됩니다.

실행해 보면 위와 같이 정확히 CPU 종류를 알아오는 것을 확인할 수 있답니다.

728x90
반응형
LIST