Windows Performance Analyzer 有別於PerfMon的圖形化互動效能分析工具

Windows Performance Analyzer 有別於PerfMon的圖形化互動效能分析工具

這篇文章主要介紹一個工具 Windows Performance Analyzer,這個工具特別在哪呢?

因為這個工具相當於 Performance Monitor + Process Monitor + Process Explorer + WinDBG。

使用 Performance Monitor 收集效能資訊經常有一個缺點,

當我們希望更進一步看該Process 的 stacks或是該Process 當時有執行哪些  threads 時,

會受到一些限制或是無法直接查詢取得。

相反的,Process Monitor 或是 Process Explorer 雖然可以很快的取得這些資訊,

但是要將該效能記錄下來,短短幾分鐘內Log的檔案往往超過好幾百 MB。

WinDBG 只能一次性的取得該電腦當下的系統資訊,沒有歷史紀錄而且操作上有許多的指令。

Windows Performance Analyzer提供圖形化介面,可以取得效能歷史資訊,同時又可以提供threads與Stacks的進一步資訊!

何處下載?

Get the standalone debugging tools (WinDbg) as part of Windows 8.1 SDK (English only)

 

Windows Performance Analyzer 主要是 SDK 中的一個小工具,

安裝時僅需安裝 “Windows Performance Toolkit”即可。其它的無需安裝。如下圖所示。

 

設定 Windows Performance recorder

使用上就像 Performance Monitor 類似一般,只不過 Windows Performance Recorder 將 counters 簡化,

我們只需要選取類別即可,不需要選取特定的 counters!

例如我們可以選取 CPU usage 與 Disk I/O activity 來觀察 CPU 與磁碟運作的狀況。

Windows Performance Recorder profile setup

如果要觀察 memory leak的狀況則需要勾選 “Heap Usage”

Windows Performance Recorder profile setup

選取完之後,就可以開始錄製收集效能資訊。最後儲存。

WPR Setup Save

直接啟動 Windows Performance Analyzer 分析剛剛儲存的資訊。

初步可以從這個圖得知,該電腦一開始遇到 Computation (CPU 效能)  後來遇到Storage (磁碟)的效能瓶頸。

WPA CPU and Disk

例如,這個例子我們很清楚的發現 eatCPU.ext 一直占用CPU 較高的資源。

WPA CPU Analysis WPA CPU 2

我們可以針對 eatCPU.exe 觀察更進一步的資訊,Thread 與 Stack

WPA CPU Stack

 

為了讓 Stack 可以正確的顯示 module 與 function的名稱,可以設定 Symbol Path

WPA Symbol

Symbol path 設定範例如下。srv*c:\symbols*http://msdl.microsoft.com/download/symbols;

WPA Symbol2

設定完 Symbol 與 Stacks 之後,我們可以看出該eatCPU.exe 的stack 狀態

可以看得出來 main 呼叫 function 1 呼叫 function 2,呼叫次數超過 27,598導致 CPU 負荷很高。

WPA CPU Stack detailed info

 

如果是使用 Process Explorer 的話,我們同樣可以針對 thread 8624 > 右鍵 > Stack 資訊。同樣可以得到類似的結果。

CPU in ProcessExp

另外,我們也發現 Disk Activities 也特別高。為什麼呢?

我們發現是 “System(4)”的 Disk Service Time 占用最多。

WPA Disk Usage

為什麼”System(4)”的 Disk Service Time 占用最多?

我們可以按右鍵,Path Name

WPA Disk PathName

 

針對 System (4)展開之後,我們發現 IO time 時間使用最多的 Path 分別為

  • C:\$BitMap
  • c:\$MIT

WPA Disk filePath

 

另外,也可以對於 Memory Leakage 的狀況分析,

例如這張圖,可以明顯的看到 VirtMemTest64.exe 記憶體使用不斷的上升。

WPA Memory Leak

同樣方式可以進一步追查該 Thread 與 Stacks

WPA Stack and Thread

Stacks 會列出該VirtMEmTest64.exe 函數呼叫的過程。

如下圖所示,我們發現,VirtMEmTest64原來呼叫了許多的 AllocateHeap 的記憶體配置所導致。

WPA Memory Leak Stacks

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *