본문 바로가기

wif LiNoUz/DATASTAGE

[.NET] PerformanceCounter를 이용한 CPU, 메모리(Memory) 사용률 표시하기

http://lab.cliel.com/264



VisualStudio에서는 Component로 PerformanceCounter라는 것을 제공합니다. 이것은 Windows System에서 제공하는 H/W사용에 대한 성능분석값을 가져올 수 있도록 해줍니다.

실제로 제어판의 성능모니터를 실행시켜 보면 꽤 높은 수준의 H/W사용현황을 볼 수 있는데 바로 여기에서 표시되는 값을 가져오는 것입니다.

VisualStudio를 실행하고 새로운 Windows Form 응용 Program의 Project를 생성한뒤 적당히 화면을 Design합니다. 이 상태에서 다음과 같이 Toolbox의 Components에서 PerformanceCounter를 Design Form으로 끌어다 놓아 2개 생성하도록 합니다.


위에서 생성한 PerformanceCounter중 하나는 CPU, 다른 하나는 Memory용으로 Monitoring할 것입니다. 우선 PerformanceCounter1의 CategoryName속성에서 Processor를 선택합니다.


실제로 CategoryName속성을 Click해보면 CPU나 Memory이외에 HardDisk나 Network등 Monitoring할 수 있는 다양한 요소가 존재함을 알 수 있습니다.

CategoryName을 선택했으면 바로 아래 CounterName을 '% Processor Time'으로 설정합니다.


CategoryName이 '어떤걸 확인할래?'였다면 CounterName은 '어떻게 표시할래?'정도로 생각하시면 되겠습니다. 위에서 선택한 '% Processor Time'은 현재의 CPU사용율을 표시하기 위한 것입니다.

만일 사용하고 계시는 CPU의 종류가 Dual core나 Quad core등 다중core형식의 CPU라면 각 core마다 사용율을 표시할 수도 있습니다. 이를 설정하려면 InstanceName속성에서 원하는 core번호를 지정하도록 합니다. 저는 모든 core에 대한 사용율을 표시할것이므로 _Total을 선택하도록 하겠습니다.


위와 같은 방법으로 PerformanceCounter2를 설정합니다. PerformanceCounter2는 Memory에 대한 Monitoring용으로 활용할 것이므로 CategoryName에 'Memory'를 선택하고 Byte단위의 사용율을 표시하기 위해 CounterName에 '% Committed Bytes In Use'를 선택하도록 합니다.

여기까지 모든 설정이 완료되었습니다. 그럼 실제 PerfomanceCounter를 통해 값을 가져와 표시하도록 Program을 작성하도록 합니다. 예제에서는 '모니터링 시작'이라는 버튼을 누르면 그 순간 사용율을 표시하도록 할 것입니다.

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
    lblCPU.Text = PerformanceCounter1.NextValue().ToString() & " %"
    lblMEM.Text = PerformanceCounter2.NextValue().ToString() & " %"
End Sub

Source는 아주 간단합니다. 그저 각 PerformanceCounter개체에다가 .NextValue() Method를 사용해 각 값을 출력하도록 하기만 하면 됩니다.


Button을 Click하자 CPU와 Memory에 대한 사용률이 표시됩니다. 만일 실시간으로 변화하는 사용률을 계속해서 표시하고자 하신다면 Button으로 인한 작동대신 Timer등을 이용해 주기적으로 값을 가져오는 Routine을 작성하면 원하는 기능을 충분히 구현하실 수 있을 것입니다.

'wif LiNoUz > DATASTAGE' 카테고리의 다른 글

Win SErver Perfmon counter 유지 비율 관리  (0) 2013.01.14
NT서버 분석  (0) 2013.01.14
DATSTAGE, DB2 backup  (0) 2013.01.14
작업 스케줄러 routine 매 5분 마다 1번씩!  (0) 2013.01.14
DATSTAGE SPECIFIC  (0) 2012.12.13