【性能工具】Windows性能監控工具Perfmon使用指南

1 Perfmon簡介

Perfmon(Performance Monitor)是一款Windows自帶的性能監控工具,提供了圖表化的系統性能實時監視器、性能日誌和警報管理。通過添加性能計數器(Performance Counter)可以實現對CPU、內存、網絡、磁盤、進程等多類對象的上百個指標的監控。其中,性能日誌可定義輸出格式爲二進制文件、文本文件、SQLSERVER記錄等,以方便後續使用第三方工具進行分析。

2 Perfmon使用

Perfmon支持選擇性的監控感興趣的性能計數器,指標範圍廣、粒度細,而且支持將監控數據持久化。當然,如果只是關注性能主要指標(cpu、mem、io、net),也可以直接查看資源管理器(Resmon.exe)。本文主要介紹使用Perfmon進行性能監控的通用方法,更細節的內容請參考其他文檔,如,微軟官方文檔或Perfmon幫助文檔:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc749249(v=ws.11)


2.1 Perfmon使用方法

Perfmon是windows自帶工具,無需安裝,鍵入命令即可打開工具,具體步驟如下:

1.       開始-->搜索程序和文件,輸入perfmon,回車後即可打開工具;

2.       雙擊左側導航欄的【性能監視器】,然後在右窗格中單擊鼠標右鍵或”+”,選擇“添加計數器”,如圖:

1.png

3.       性能對象列表,選擇需要監控的計數器,添加後即可進行實時監控,如圖所示是選擇監控cpu的計數器:

2.png

監控計數器添加完成後,可以查看到圖形實時變化,如上圖,計數器%Processor Time表示cpu的利用率,從圖中可以看到最新值、平均值、最小和最大值,以及監控持續時間,其中,這裏的持續時間是指當前配置顯示在圖表中的時間跨度,並不是已經監控的時間,該配置可以右鍵點擊圖標->屬性->常規->持續時間中配置。另外,監控圖上右鍵點擊,可以對計算器進行操作,如添加、刪除、隱藏、保存、更改屬性等操作。

2.2 Perfmon監控對象和指標

通過上節描述,已經可以使用Perfmon進行實時監控了,可能仍然會對描述中的性能對象性能計數器感到疑惑。通俗的講,性能對象就是你要直接監控的資源對象,如cpu,mem等,而衡量這些對象的性能需要一些指標,就是性能計數器。Perfmon支持監控多種性能對象,每個對象又提供了比較全面的性能計數器。性能對象、常用性能對象及計數器,如下表所示:

表1 性能對象描述

性能對象

提供的信息

Browser

Browser   performance object 由衡量通知、枚舉和其他瀏覽器傳輸率的計數器組成

Cache

Cache   performance object 包括監督文件系統緩存(物理內存上儘可能長時間的存儲最近使用過的數據以便訪問該數據時不需再從磁盤上讀取的那一部分內存。)的計數器。因爲應用程序只使 用緩存,因此該緩存可作爲應用程序 I/O 操作的指示器。當有足夠內存時,緩存可增大,但當內存不足時,緩存會變得太小而無法使用。

Distributed   Transaction Coordinator

Microsoft   Distributed Transaction Coordinator 性能計數器

ICMP

ICMP   performance object 包括衡量用 ICMP 協議發送和接收消息的速度的計數器。它還包括監督 ICMP 協議錯誤的計數器。

IP

IP   performance object 包括衡量使用 IP 協議發送和接收的 IP 數據報速度的計數器。它還包含監督 IP 協議錯誤計數器。

Job   object

由每個活動命名的作業對象收集的帳戶和處理器使用數據的報告。

Job   object Detail

Job   object Detail 顯示有關作業對象中的活動處理的詳細的操作信息。

Logical   Disk

Logical   Disk performance object 包含監視一個硬盤或固定磁盤驅動器的邏輯分區的計數器。Performance Monitor 用邏輯磁盤的驅動器號(如: C)來識別邏輯磁盤。

Memory

Memory   performance object 由描述計算機上的物理和虛擬內存行爲的計數器組成。物理內存指計算機上的隨機存取存儲器的數量。虛擬內存由物理內存和磁盤上的空間組成。許多內存計數器監   視頁面調度(指磁盤與物理內存之的代碼和數據頁的移動)。過多的頁面調度(內存不足的一種表現)可引起拖延,會影響整個系統處理效率。

NBT   Connection

NBT   Connection performance object 包括衡量用 NBT 連接在一臺本地計算機和一臺遠程計算機之間發送和接收字節的速率的計數器。該連接用遠程計算機的名稱來識別。

Network   Interface

Network   Interface performance object 包括衡量通過一個 TCP/IP 網絡連接發送和接收字節和數據包的速率的計數器。它包括監督連接錯誤的計數器。

Objects

Object   performance object 包含在系統中監督邏輯對象的計數器,如:處理、線程、多用戶終端執行程序和信號量。這個信息可以用於檢測計算機資源的不必要的消耗。每個對象需要內存以存儲有關對象的基本信息。

Paging   File

Paging   File performance object 包括監督在計算機上的分頁文件的計數器。分頁文件指爲備份計算機上已用物理內存而保留的磁盤空間。

Physical   Disk

Physical   Disk performance object 包含監視計算機上的硬盤或固定磁盤驅動器的計數器。磁盤用於存儲文件、程序及分頁數據並且通過讀取檢索這些項目並通過記錄寫入對其進行更改。物理磁盤計數器的值爲邏輯磁盤(由磁盤分成)值的總和。

Print   Queue

顯示一個打印列隊的操作統計。

Process

Process   performance object 包含監視運行中應用程序和系統處理的計數器。所有在一個處理中的線程均共享同一個地址空間並可以訪問同樣的數據。

Processor

Processor   performance object 包含衡量處理器活動方面的計數器。處理器是計算機進行算數和邏輯計算、在附屬件起始操作及運行處理線程的部分。一臺計算機可以有多臺處理器。處理器對象將每臺處理器作爲對象的範例。

Processor   performance

處理器信息

PSched   Pipe

數據包計劃程序中的管道統計數

RAS   Port

RAS   Port performance object 包括監督計算機上的 RAS 設備的每個遠程訪問服務端口的計數器。

RAS   Total

RAS   Total performance object 包含將計算機上的遠程訪問服務(RAS)設備的所有端口的值相加的計數器。

Redirector

Redirector   performance object 包括在本地計算機上監督網絡連接的計數器。

RSVP

RSVP 服務性能計數器。

System

System   performance object 包含應用於計算機上不止一個組件處理器範例的計數器。

TCP

TCP   performance object 包含衡量使用 TCP 協議發送和接收 TCP Segment 速率的計數器變量。它包含監督在每個 TCP 連接狀態下的 TCP 連接數目的計數器變量。

Telephony

電話服務系統

Terminal   Services

終端服務信息。

Terminal   Services Session

每次終端服務會話資源監督。

Thread

Thread   performance object 包括衡量線程行爲方面的計數器。一個線程是在一臺處理器上執行指令的基本對象。所有運行的處理至少有一個線程。

UDP

UDP   performance object 包含衡量使用 UDP 協議發送和接收 UDP 數據報的速率的計數器。它包括監督 UDP 協議錯誤的計數器。

WMI   Objects

WMI 適配器返回的 WMI 高性能提供程序

上表中的性能對象有多達數百個性能指標,如果安裝有.NET框架,還會看到更多的.NET開頭的對象。我們關注系統或應用的性能時,不可能、也不必要關注這麼多指標,只需根據實際情況選取必要指標即可。一般而言,對於Windows系統或運行其上的應用來說,CPU、 Memory、Disk、Network等關鍵對象是必不可少的。

表2 常用性能對象和計數器

性能對象

計數器

提供的信息

Processor

% Idle Time

% Idle Time 是處理器在採樣期間空閒的時間的百分比

Processor

% Processor Time

% Processor Time 指處理器用來執行非閒置線程時間的百分比。計算方法是,測量範例間隔內非閒置線程活動的時間,用範例間隔減去該值。這個計數器是處理器活動的主要說明器,顯示在範例間隔時所觀察的繁忙時間平均百分比。

Processor

% User Time

% User Time 指處理器處於用戶模式的時間百分比。用戶模式是爲應用程序、環境分系統和整數分系統設計的有限處理模式。

Memory

Available Bytes

Available Bytes顯示出當前空閒的物理內存總量。當這個數值變小時,Windows開始頻繁地調用磁盤頁面文件。如果這個數值很小,例如小於5 MB,系統會將大部分時間消耗在操作頁面文件上。

Memory

% Committed Bytes in Use

% Committed Bytes In Use 是 Memory: Committed Bytes 與Memory: Commit Limit之間的比值。(Committed   memory指如果需要寫入磁盤時已在分頁文件中保留空間的處於使用中的物理內存。Commit Limit是由分頁文件的大小而決定的。如果擴大了分頁文件,該比例就會減小)。這個計數器只顯示當前百分比;而不是一個平均值。

Memory

Page Faults/sec

Page Faults/sec是指處理器處理錯誤頁的綜合速率。用錯誤頁數/秒來計算。當處理器請求一個不在其工作集(在物理內存中的空間)內的代碼或數據時出現 的頁錯誤。這個計數器包括硬錯誤(那些需要磁盤訪問的)和軟錯誤(在物理內存的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續操作。 但是,硬錯誤可以導致明顯的拖延。這個計數器顯示用上兩個實例中觀察到的值之間的差除以實例間隔的持續時間所得的值。

Network Interface

Bytes Total/sec

Bytes Total/sec是發送和接收字節的速率,包括幀字符在內。

Network Interface

Packets/sec

Packets/sec爲發送和接收數據包的速率。

Physical Disk

% Busy Time

% Busy Time指磁盤驅動器忙於爲讀或寫入請求提供服務所用的時間的百分比。

Physical Disk

Avg. Disk Queue Length

Avg. Disk Queue Length 是指磁盤隊列的平均長度。磁盤完成對讀取和寫入請求的處理時間,是磁盤數據吞吐量的外在表現。

Physical Disk

Current Disk Queue Length

Current Disk Queue Length指在收集操作數據時在磁盤上未完成的請求的數目。它包括在快照內存時正在爲其提供服務中的請求。這是一個即時長度而非一定間隔時間的平均值。   多主軸磁盤設備可以一次有多個請求操作,但是其它同時發生的請求爲等候服務。這個計數器可能會反映一個暫時的高或低的列隊長度,但是如果在磁盤驅動器存在 持續負載,可能值會總是很高。請求等待時間與這個列隊的長度減去磁盤上的主軸成正比。這個差值應小於2才能保持良好的性能。

 

2.3 使用計數器日誌

在2.1節中介紹了Perfmon性能監視器的使用方法,該功能主要用於對指定的性能指標進行實時監控(類似nmon的交互模式),但它不能把監控的數據保存下來。如果需要持續對系統的指定性能指標進行監控,就需要使用Perfmon的計數器日誌功能(類比nmon的後臺監控模式),計數器日誌可以把監控數據以指定的方式進行保存,同時也方便後續用第三方工具進行分析。

接下來,以監控CPU\MEM爲例介紹Perfmon計數器日誌的使用方法。

1.  在Perfmon右側導航窗格中,展開“數據收集器集”,右鍵單擊“用戶定義”,指向“新建”,然後單擊“數據收集器集”,將啓動“創建新數據收集器集”嚮導;

3.png

2.  填入收集器名稱,選擇”手動創建(高級)”,點擊下一步進入選擇數據類型嚮導,如圖:

4.png

3.  選擇“性能計數器”,點擊下一步,進入性能計數器選擇界面,通過點擊”添加”按鈕添加CPU\MEM的性能計數器,同時,可以根據採集時長自定義採樣間隔,默認是15s,如圖:

5.png

4.  如果需要自定義日誌的保存位置,可以點擊”下一步”,否則可以直接點擊“完成”,結束配置。

5.  另外,可以右鍵單擊採集器集名稱,選擇屬性,配置監控任務的啓停條件,如,配置定時任務或退出條件等,如圖爲配置採集30s後停止:

6.png

6.  如需對監控的性能指標、日誌格式、採樣時間等進行調整,可以右鍵單擊數據收集任務,選擇屬性,編輯即可,可以增刪計數器、修改日誌格式(默認二進制的.blg)、修改採樣間隔等,如圖:

7.png

7. 最後,點擊工具欄8.png啓動數據收集器即可;

8.  結果收集完成後,可以在右側導航欄選擇”報告”,展開“用戶自定義”,查看報告;也可以通過“性能監視器”“查看日誌數據”選擇要加載顯示的日誌文件。

3 Perfmon性能分析方法

本節主要介紹使用Perfmon對CPU、MEM、磁盤I\O、NET進行監控和性能分析的通用思路和方法。

1.  CPU分析方法

根據2.2節的介紹,CPU監控涉及的主要性能計數器是% Processor Time、% User Time、System:Processor Queue Length。其中,% Processor Time性能計數器的數值展示了服務器CPU的使用情況,如果該值持續超過90%,則說明整個系統面臨着CPU瓶頸,需要通過增加CPU來提高性能;%User Time性能計數器的數值展示了用戶空間進程的CPU利用率,如果該值較大,需要分析是哪個用戶進程、執行的何種操作引起了CPU升高; System:Processor Queue Length計數器的數值展示了CPU等待處理的隊列長度,當該計數器的值 > (CPU數量的總數+1)時,說明出現處理器阻塞。一般情況下,Processor:%Process Time很高時,都會伴隨着處理器阻塞,但產生處理器阻塞時,Processor:%Process Time 計數器的值並不一定很高,此時就需要分析產生處理器阻塞的原因。

2.  MEM分析方法

MEM監控涉及的性能計數器主要是% Commitued Bytes in Use、Available Bytes,如果% Commitued Bytes in Use計數器顯示的數值比較大,則系統可能存在內存瓶頸,可以根據Available Bytes計數器的數值進一步判斷,如果該值小,說明可用內存不足,存在性能瓶頸;另外,需要注意Pages/secPages Read/sec和Page Faults/sec的數值,這些指標反映了操作系統進行磁盤交換的頻率。如果Pages/sec的數值持續較高(如幾百的數值),可能存在內存瓶頸,但不排除可能是程序使用內存映射文件所致;如果Page Faults/sec的數值較高,說明頁面失效頻率較高,操作系統向內存讀取的次數較多;通常,Pages Read/sec計數器的數值,一般不要超過5,否則很可能存在內存瓶頸。

3.  磁盤IO分析方法

磁盤I/O監控涉及的性能計數器主要是 % Busy Time、Avg. Disk Queue Length、Current Disk Queue Length,若% Busy Time性能計數器的數值比較大,則硬盤可能存在瓶頸。另外,對於順序讀寫的應用,需要計算IOPS,如果實際得到的IOPS等於或超過了磁盤標稱的IO能力,則該磁盤存在性能瓶頸。

4.  NET分析方法

NET監控涉及的性能計數器主要是Bytes Total/sec,通過該計數器值與網絡帶寬數值進行比較,可以判斷網絡鏈接速度是否存在瓶頸。


4 其他資源

  關於python學習、分享、交流,筆者開通了微信公衆號【小蟒社區】,感興趣的朋友可以關注下,歡迎加入,建立屬於我們自己的小圈子,一起學python。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章