1. 程式人生 > >Perfmon - Windows 自帶系統監測工具

Perfmon - Windows 自帶系統監測工具

distrib 圖形 bytes 文本文 space 所有 mit lan network

一、 簡述

可以用於監視CPU使用率、內存使用率、硬盤讀寫速度、網絡速度等。

Perfmon提供了圖表化的系統性能實時監視器、性能日誌和警報管理,系統的性能日誌可定義為二進制文件、文本文件、SQLSERVER表記錄等方式,可以很方便地使用第三方工具進行性能分析。

perfmon.exe 文件位於C:\Windows\System32目錄下。  使用方法:  

1)開始 - 運行,輸入 perfmon 後回車,即可打開perfmon.exe。  

2)在 perfmon.exe 的左窗格中,單擊“系統監視器”(如果未選中)。 

3)在右窗格中[單擊右鍵,然後單擊“添加計數器”。  

4)在“性能對象”列]表中,選擇要在 PerfMon.exe 中顯示其圖形的計數器類別,單擊“添加”。

二、常用的性能指標

系統的整體性能由許多因素決定,例如CPU利用率、CPU隊列長度、磁盤空間和I/O、內存使用情況、網絡流量等等。對於實時性要求較高的系統而言,對系統關鍵性指標的有效監控和管理是保證系統高可用性的重要手段,因此,務必制定出明確的系統性能策略規劃,並對這些性能指標進行有效的實時監控。當關鍵性能指標嚴重偏離或者系統發生故障時,應該采取有效手段來準確定位問題引發的原因,並通過調優系統配置或改進應用程序等手段來有效提高系統的可用性。

(一)Perfmon的監控對象

Perfmon提供了比較全面的系統性能指標,並且能夠根據性能管理的要求訂制日誌內容、制定關鍵指標偏離時的警報措施。《表一》列出了Perfmon可以監控的性能對象,每一個性能對象項下包含多個性能指標計數器。

表一:性能對象描述

性能對象

提供的信息

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 高性能提供程序

(二)常用的Perfmon監控對象與指標

以上列出的性能對象總共有上百個性能指標,我們關註一個系統的性能時,不可能關註這麽多指標,有些對象對實際的應用系統影響並不大。但對一個Windows操作系統來說,CPU、Memmory、Disk和Network等關鍵對象是性能監控中必不可少的項。《表二》列舉了最常用的性能對象的重要指標。

表二:常用的性能對象與指標

性能對象

計數器

提供的信息

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才能保持良好的性能。

Logical

Disk

% Free Space

% Free Space 是所選定的邏輯磁盤驅動器上總的可用空閑空間的百分比。

Logical

Disk

Free Megabytes

可用的 MB 顯示磁盤驅動器上尚未分配的空間。

(三)Perfmon對進程的監控指標

一般說來,服務器上都布署了一個或多個應用程序,這些應用程序在運行期間經常體現為若幹個應用進程。為了便於監控應用程序的運行情況,在程序設計過程中一般都會同時布署應用系統的監控程序。Perfmon也設置了進程監控常用指標,這些指標比較直觀地體現了進程的運行狀況,是進行應用系統監控或應用系統跟蹤調優的依據。《表三》列出了進程監控的主要指標。

表三:Process對象的主要指標

性能對象

計數器

提供的信息

Process

% Privileged Time

% Privileged Time 是在特權模式下處理線程執行代碼所花時間的百分比。當調用 Windows 系統服務時,此服務經常在特權模式運行,以便獲取對系統專有數據的訪問。在用戶模式執行的線程無法訪問這些數據。對系統的調用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或間隔。

Process

% Processor Time

% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬件間隔和陷阱條件所執行的代碼。

Process

% User Time

% User Time 指處理線程用於執行使用用戶模式的代碼的時間的百分比。應用程序、環境分系統和集合分系統是以用戶模式執行的。Windows 的可執行程序、內核和設備驅動程序不會被以用戶模式執行的代碼損壞。

Process

Creating Process ID value

Creating Process ID value 指創建該進程的父進程號。

Process

Elapsed Time

該進程運行的總時間(用秒計算)。

Process

Handle Count

由這個處理現在打開的句柄總數。這個數字等於這個處理中每個線程當前打開的句柄的總數。

Process

ID Process

ID Process 指這個處理的特別的識別符。ID Process 號可重復使用,所以這些 ID Process 號只能在一個處理的壽命期內識別那個處理。

Process

IO Data Bytes/sec

處理從 I/O 操作讀取/寫入字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Data Operations/sec

本處理進行讀取/寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Other Bytes/sec

處理給不包括數據的 I/O 操作(如控制操作)字節的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Other Operations/sec

本處理進行非讀取/寫入 I/O 操作的速率。例如,控制性能。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Read Bytes/sec

處理從 I/O 操作讀取字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Read Operations/sec

本處理進行讀取 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

IO Write Bytes/sec

處理從 I/O 操作寫入字節的速度。這個計數器為所有由本處理產生的包括文件、網絡和設備。

Process

IO Write Operations/sec

本處理進行寫入 I/O 操作的速率。這個計數器為所有由本處理產生的包括文件、網絡和設備 I/O 的活動計數。

Process

Page Faults/sec

Page Faults/sec 指在這個進程中執行線程造成的頁面錯誤出現的速度。當線程引用了不在主內存工作集中的虛擬內存頁即會出現 Page Fault。如果它在備用表中(即已經在主內存中)或另一個共享頁的處理正在使用它,就會引起無法從磁盤中獲取頁。

Process

Page File Bytes

Page File Bytes 指這個處理在 Paging file 中使用的最大字節數。Paging File 用於存儲不包含在其他文件中的由處理使用的內存頁。Paging File 由所有處理共享,並且 Paging File 空間不足會防止其他處理分配內存。

Process

Page File Bytes Peak

Page File Bytes Peak 指這個處理在 Paging files 中使用的最大數量的字節。

Process

Pool Nonpaged Bytes

Pool Nonpaged Bytes 指在非分頁池中的字節數,非分頁池是指系統內存(操作系統使用的物理內存)中可供對象(指那些在不處於使用時不可以寫入磁盤上而且只要分派過就必須保留在物理內存中的對象)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。

Process

Pool Paged Bytes

Pool Paged Bytes 指在分頁池中的字節數,分頁池是系統內存(操作系統使用的物理內存)中可供對象(在不處於使用時可以寫入磁盤的)使用的一個區域。這個計數器僅顯示上一次觀察的值;而不是一個平均值。

Process

Priority Base

這次處理的當前基本優先權。在一個處理中的線程可以根據處理的基本優先權提高或降低自己的基本優先權。

Process

Private Bytes

Private Bytes 指這個處理不能與其他處理共享的、已分配的當前字節數。

Process

Thread Count

在這次處理中正在活動的線程數目。指令是在一臺處理器中基本的執行單位,線程是指執行指令的對象。每個運行處理至少有一個線程。

Process

Virtual Bytes

Virtual Bytes 指處理使用的虛擬地址空間的以字節數顯示的當前大小。使用虛擬地址空間不一定是指對磁盤或主內存頁的相應的使用。虛擬空間是有限的,可能會限制處理加載數據庫的能力。

Process

Virtual Bytes Peak

Virtual Bytes Peak 指在任何時間內該處理使用的虛擬地址空間字節的最大數。

Process

Working Set

Working Set 指這個處理的 Working Set 中的當前字節數。Working Set 是在處理中被線程最近觸到的那個內存頁集。如果計算機上的可用內存處於閾值以上,即使頁不在使用中,也會留在一個處理的 Working Set中。當可用內存降到閾值以下,將從 Working Set 中刪除頁。如果需要頁時,它會在離開主內存前軟故障返回到 Working Set 中。

Process

Working Set Peak

Working Set Peak 指在任何時間這個在處理的 Working Set 的最大字節數。

二、Perfmon功能之一——性能監視器

在Windows中,性能監視器以一個管理控制臺(MMC)單元的形式實現。在windows的開始->運行框中輸入perfmon.msc啟動Windows的性能監視器,可以看到類似圖一的界面。 性能監視器主要用來對指定的系統性能指標進行實時監控,但這些性能的指標記錄不能被保存。如果要保存這些性能日誌,可以用後面介紹的“計數器日誌”功能。性能監視器的另外一個功能是對計數器日誌生成的日誌記錄進行非實時的圖表化展現。在性能監視器中楞以通過“查看當前活動”或“當看日誌數據”功能項來指定監控的性能指標項目。一般說來,由於性能監視器的顯示窗口大小有限,不宜指定太多的實時監控項目,否則窗口中的顯示很難突出需要重點監控的項目。我們可以根據不同的監控目標制訂不同的實時監控方案,每一個方案均可以保存為一個MSManagement Console(msc)文件。

三、Perfmon功能之二——計數器日誌

前面介紹了系統監視器的功能時提到,系統監視器主要用於重要性能指標的實時監控,它不能保存被監控的性能指標歷史數據。如果需要持續對系統的性能指標采樣,就必須用到Peofmon的計數器日誌的功能。計數器日誌在日誌文件中記錄指定的系統性能數據,這些日誌數據可以用系統監視器查看或用其他工具處理,這對於分析系統某一段時間內的運行狀況或者是交由第三方性能管理工具來進行性能管理十分有用。

為了說明如何使用計數器日誌,我們要新建一個日誌會話。擴展控制臺中的“性能日誌和警報”節點下可以看到“計數器日誌”分節點,右擊“計數器日誌”分節點,選擇“新建日誌設置”,指定日誌設置的名稱,點擊“確定”,出現圖二的對話框,在這裏設定要在日誌中記錄的計數器(即需要記錄的性能指標)。點擊“添加對象”按鈕,將某個監視對象的所有計數器加入日誌記錄,或者點擊“添加計數器”按鈕加入單個計數器。日誌文件的默認保存路徑是C:\perflogs目錄,在設置時可以根據需要在“日誌文件”項下修改。日誌文件保存的格式可以根據需要設定成文本文件、二進制文件、SQL數據庫記錄。在“計劃”項下,可以設置性能日誌的啟動和關閉時間計劃,也可以設置日誌關閉後的指定動作。我們可以根據不同的監控需求制訂不同的性能日誌方案,每一個方案均可以保存為一個HTML文件。

三、Perfmon功能之三——跟蹤日誌

Perfmon的跟蹤日誌功能可以提供對某些重要系統事件的跟蹤,也可以指定對特定應用程序的跟蹤。跟蹤日誌以二進制文件保存(默認擴展名為.etl),可以用tracerpt對日誌進行分析,並生成CSV格式的dump文件。該功能目前沒有提供直觀的配置手段來訂制對特定應用程序的跟蹤,必須通過編輯系統的註冊表來實現。這一功能主要應用在程序調試、故障分析過程中。圖三是訂制跟蹤日誌的對話框,在其“日誌文件”、“計劃”項下可以設置日誌文件的存放路徑、文件大小限制、日誌啟停計劃等項目。

四、Perfmon功能之四——警報

Perfmon的警報功能是指當某個計數器的性能數據達到指定的值時,執行一定的動作,例如發送Email、用NetSend命令發送消息或者運行指定的程序。也可以指定當警報發生時將警報當作系統的事件記錄在系統事件記錄裏,這樣可以很方便地用事件查看器來調閱警報的內容。警報的報警指標設置與性能計數器的指標相同,針對不同的應用,我們可以制訂不同的警報策略。圖四示例的是當CPU的IdleTime低於70%時觸發一個警報的訂制對話框。在“操作”和|“計劃”項下,可以配置警報發生時的指定操作、警報設置的啟停動作等。

五、Perfmon布署方法

對Windows系統的性能監控需要有較高的用戶權限,Perfmon默認的可執行權限是管理員用戶,從系統安全性考慮,不建議將管理員作為日常監控的用戶。Windows2000 Server提供了性能管理用戶組,在實施系統的性能監控時,可建立一個該組的普通用戶。

Windows提供了Perfmon的兩種布署方式:本地監控和遠程監控。本地監控產生的日誌文件默認保存路徑是C:\perflogs目錄,在設置時可以根據需要在“日誌文件”項下修改。本地監控產生的日誌文件除了可以在本機用性能監視器進行觀測外,還可以外傳到第三方監測分析平臺上。遠挰監控可以實現對局域網內多臺監控目標進行集中采樣監控,其前提是監控主機與目標主機之間必須建立信任關系,並且打開相應的遠程訪問控制。在訪問控制比較嚴格的環境下,遠程監控難以布署。布署Permon時還應該考慮誌文件的存放問題,如果要長時間收集性能數據,最好調整一下采樣間隔時間,如果采樣間隔時間設置得太小,日誌文件會快速增。

 Perfmon的管理也有兩種方法:控制臺管理和命令行方式管理。可以通過運行Perfmon.msc調出性能管理的控制臺,並根據監控策略制訂、管理控制臺。Perfmon的另一種管理方式是命令行方式,Windows提供了一個專門用於管理性能監控的命令――Logman,它不僅能夠在命令行上啟動和停止日誌會話,而且能夠從命令行創建新的日誌會話。有關Logman命令的用法可參閱Logman命令指南。

還有另外一個命令能方便地采集到系統性能數據,但僅僅是獲取數據,並不產生警報和日誌記錄的動作。這種方式在使用第三方軟件來監控Windows系統的性能時經常用到。Windows提供了一個顯示當前性能指標的命令----Typeperf。用Typeperf可以得到前面提到的Perfmon的所有指標值。Typeperf的標準輸出是屏幕顯示,我們可以通過輸出重定義將結果輸出到文本文件當中,並將結果文件傳給第三方系統。這種應用方式下,Typeperf的動作由第三方軟件根據需要來管理,也可以通過訂制計劃任務來定時啟動。有關Typeperf命令的用法可參閱Typeperf命令指南。

Perfmon - Windows 自帶系統監測工具