1、 簡述html
能夠用於監視CPU使用率、內存使用率、硬盤讀寫速度、網絡速度等。數據庫
Perfmon提供了圖表化的系統性能實時監視器、性能日誌和警報管理,系統的性能日誌可定義爲二進制文件、文本文件、SQLSERVER表記錄等方式,能夠很方便地使用第三方工具進行性能分析。windows
perfmon.exe 文件位於C:\Windows\System32目錄下。 使用方法: 瀏覽器
1)開始 - 運行,輸入 perfmon 後回車,便可打開perfmon.exe。 緩存
2)在 perfmon.exe 的左窗格中,單擊「系統監視器」(若是未選中)。 安全
3)在右窗格中[單擊右鍵,而後單擊「添加計數器」。 服務器
4)在「性能對象」列]表中,選擇要在 PerfMon.exe 中顯示其圖形的計數器類別,單擊「添加」。網絡
2、經常使用的性能指標工具
系統的總體性能由許多因素決定,例如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 的最大字節數。 |
2、Perfmon功能之一——性能監視器
在Windows中,性能監視器以一個管理控制檯(MMC)單元的形式實現。在windows的開始->運行框中 輸入perfmon.msc啓動Windows的性能監視器,能夠看到相似圖一的界面。 性能監視器主要用來對指定的系統性能指標進行實時監控,但這些性能的指標記錄不能被保存。若是要保存這些性能日誌,能夠用後面介紹的「計數器日誌」功能。 性能監視器的另一個功能是對計數器日誌生成的日誌記錄進行非實時的圖表化展示。在性能監視器中楞以經過「查看當前活動」或「當看日誌數據」功能項來指定 監控的性能指標項目。通常說來,因爲性能監視器的顯示窗口大小有限,不宜指定太多的實時監控項目,不然窗口中的顯示很難突出須要重點監控的項目。咱們能夠 根據不一樣的監控目標制訂不一樣的實時監控方案,每個方案都可以保存爲一個MSManagement Console(msc)文件。
3、Perfmon功能之二——計數器日誌
前面介紹了系統監視器的功能時提到,系統監視器主要用於重要性能指標的實時監控,它不能保存被監控的性能指標歷史數據。 若是須要持續對系統的性能指標採樣,就必須用到Peofmon的計數器日誌的功能。計數器日誌在日誌文件中記錄指定的系統性能數據,這些日誌數據能夠用系 統監視器查看或用其餘工具處理,這對於分析系統某一段時間內的運行情況或者是交由第三方性能管理工具來進行性能管理十分有用。
爲了說明如何使用計數器日誌,咱們要新建一個日誌會話。擴展控制檯中的「性能日誌和警報」節點下能夠看到「計數器日誌」 分節點,右擊「計數器日誌」分節點,選擇「新建日誌設置」,指定日誌設置的名稱,點擊「肯定」,出現圖二的對話框,在這裏設定要在日誌中記錄的計數器(即 須要記錄的性能指標)。點擊「添加對象」按鈕,將某個監視對象的全部計數器加入日誌記錄,或者點擊「添加計數器」按鈕加入單個計數器。日誌文件的默認保存 路徑是C:\perflogs目錄,在設置時能夠根據須要在「日誌文件」項下修改。日誌文件保存的格式能夠根據須要設定成文本文件、二進制文件、SQL數 據庫記錄。在「計劃」項下,能夠設置性能日誌的啓動和關閉時間計劃,也能夠設置日誌關閉後的指定動做。咱們能夠根據不一樣的監控需求制訂不一樣的性能日誌方 案,每個方案都可以保存爲一個HTML文件。
3、Perfmon功能之三——跟蹤日誌
Perfmon的跟蹤日誌功能能夠提供對某些重要系統事件的跟蹤,也能夠指定對特定應用程序的跟蹤。跟蹤日誌以二進制文件保存(默認擴展名爲.etl), 能夠用tracerpt對日誌進行分析,並生成CSV格式的dump文件。該功能目前沒有提供直觀的配置手段來訂製對特定應用程序的跟蹤,必須經過編輯系 統的註冊表來實現。這一功能主要應用在程序調試、故障分析過程當中。圖三是訂製跟蹤日誌的對話框,在其「日誌文件」、「計劃」項下能夠設置日誌文件的存放路 徑、文件大小限制、日誌啓停計劃等項目。
4、Perfmon功能之四——警報
Perfmon的警報功能是指當某個計數器的性能數據達到指定的值時,執行必定的動做,例如發送Email、用NetSend命令發送消息或者運行 指定的程序。也能夠指定當警報發生時將警報看成系統的事件記錄在系統事件記錄裏,這樣能夠很方便地用事件查看器來調閱警報的內容。警報的報警指標設置與性 能計數器的指標相同,針對不一樣的應用,咱們能夠制訂不一樣的警報策略。圖四示例的是當CPU的IdleTime低於70%時觸發一個警報的訂製對話框。在 「操做」和|「計劃」項下,能夠配置警報發生時的指定操做、警報設置的啓停動做等。
5、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命令指南。