c# 애플리캐이션의 cpu 사용률 구하기

아래의 코드는 아래 애플리캐이션이 실행되는 동안 cpu를 얼마나 사용하는가 구하여 출력하는 예제다. 애플리캐이션이 실행되는 동안 cpu 부하를 관찰할 때 요긴하다. 디버그 환경이라면 비주얼 스투디오로 쉽게 확인할 수 있지만 릴리스 환경이라면 윈도우즈의 작업 관리자를 이용하든지 아래와 같이 해야 한다. 번거롭게 아래와 같이 하는 이유는 물론 그 결과를 가공하기 위해서다.

비록 비주얼 객체를 제어하여 cpu의 사용률을 출력하지만 이는 주된 작업이 아니고 cpu의 사용률을 가져오는 게 주된 작업이므로 매인 뜨레드에서 작동하여 손쉽게 비주얼 객체들을 제어할 수 있는 system.windows.forms.timer를 이용하지 않고 매인 뜨레드로부터 독립하여 작동하는 system.timers.timer를 썼다. 따라서 약간 복잡하게 invoke를 이용했다.

당연히 아래의 예제만 실행하면 연산 부하가 거의 없으므로 0만 나온다.

아래의 코드를 응용하면 메모리 사용량도 구할 수 있다.

PerformanceCounter PerformanceCounter1;

private void Form1_Load(object sender, EventArgs e)
{
    PerformanceCounter1 = new("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);

    System.Timers.Timer timer = new(1000);

    timer.Elapsed += Timer_Elapsed;

    timer.Start();
}

private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
    Invoke(formInvoke);

    void formInvoke()
    {
        Text = PerformanceCounter1.NextValue().ToString();
    }
}