본문 바로가기
IT 기술/컴퓨터관리 팁

[윈도7] Powershell 을 사용한 Performance Monitor 생성 및 분석

by 땅뚱 2014. 8. 5.

회사에서 노트북을 받았다. 이상하다. 화면보호기(또는 Lock screen) 만 켜지면 노트북 Fan 이 미친듯이 돌아간다.


답답하다. 뭐가 돌고 있는지 가늠할 수가 없다. 리눅스라면 perf 라는 툴로 어찌저찌 해보겠건만, 윈도는 도통 알 수가 없다.


구글을 뒤지기 시작했다. 윈도7 에서 지원해주는 powershell 에서 performance monitor 를 지원해주는 명령이 있다.


참고: http://blogs.technet.com/b/heyscriptingguy/archive/2011/07/29/create-and-parse-performance-monitor-logs-with-powershell.aspx


용어 설명

cmdlet : (command-let 으로 읽는다) 단일 기능을 수행하는 윈도 Powershell 스크립트를 말한다.

Powershell ISE : Integrated Scripting Environment


Powershell 은 cmdlet 이라는 작은 단위의 스크립트 명령어를 지원한다. Powershell 의 cmdlet 목록을 확인하려면 쉘에서 Get-Command 명령을 수행하면 되고, 각각의 cmdlet 사용법에 대해서는 get-help <cmdlet> 을 실행하면 된다.

좀더 상세한 설명은 -detailed 옵션을 추가한다. (get-help <cmdlet> -detailed)

(참고 : http://www.hanbit.co.kr/network/view.html?bi_id=1899)


여기서는 Powershell ISE 환경에서 진행한다. Powersell ISE 를 실행시킨다. 윈도 '시작'->입력창에 powershell 이라고 치면 powersehll ISE 항목을 확인할 수 있다. 



Powershell ISE 를 실행시키면 아래와 같은 창이 실행된다.


에디터 창에 아래 명령을 넣는다.


Get-Counter 라는 cmdlet 은 여러가지 counter 를 수집할 수 있는데, 아래와 같이 명령을 입력한다.(자세한 설명은 get-help GetCounter -detailed)

$a = (Get-Counter -ListSet "Processor Information").paths

$a += (Get-Counter -listSet "memory").paths

$a += (Get-Counter -listSet "LogicalDisk").paths

$a += (Get-Counter -listSet "PhysicalDisk").paths

Get-Counter -Counter $a


윈도 Powershell 을 통해서 performance log 를 생성하기 위해서는 pipeline 과 데이터를 직접 파일로 기록하도록 하는 stream 을 사용하는 것이 최선이다. 이 경우 위 스크립트 내용중 마지막줄을 다음과 같이 바꾼다.

Get-Counter -Counter $a -Continuous | Export-Counter -Path d:\myperflog.blg


음 데이터가 너무 많은 것 같아서 "LogicalDisk" 와 "PhysicalDisk" 항목은 빼버렸다.


입력이 끝났다면 녹색 실행버튼을 누른다. 원하는 상황에 대해서 충분히 Profile 데이터를 수집했다고 판단되면, 정지 버튼을 누른다.


수집된 Profile 데이터는 d:\myperflog.blg 로 저장되었다. 해당 데이터는 성능 모니터링 도구(perfmon.exe)로 확인할 수 있다. 저장된 파일을 더블 클릭하거나, perfmon.exe 를 직접 실행시켜서 로그파일을 읽어들여서 확인한다.


내 PC에서 수행한 결과는 아래와 같다. 데이터가 여전히 많아서 memory 부분에 해당하는 데이터는 제외했다.


위 내용에서 볼 수 있듯이 Profile 동안의 Performance counter 에 대한 다양한 내용을 볼 수 있다.


하지만, 여전히 어떤 프로세스 때문인지는 확인하기 어렵다. 다시 다른 툴을 찾아봐야겠다.