您好,登錄后才能下訂單哦!
Perfmon(Performance Monitor)是一款Windows自帶的性能監(jiān)控工具,提供了圖表化的系統(tǒng)性能實時監(jiān)視器、性能日志和警報管理。通過添加性能計數(shù)器(Performance Counter)可以實現(xiàn)對CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤、進(jìn)程等多類對象的上百個指標(biāo)的監(jiān)控。其中,性能日志可定義輸出格式為二進(jìn)制文件、文本文件、SQLSERVER記錄等,以方便后續(xù)使用第三方工具進(jìn)行分析。
Perfmon支持選擇性的監(jiān)控感興趣的性能計數(shù)器,指標(biāo)范圍廣、粒度細(xì),而且支持將監(jiān)控數(shù)據(jù)持久化。當(dāng)然,如果只是關(guān)注性能主要指標(biāo)(cpu、mem、io、net),也可以直接查看資源管理器(Resmon.exe)。本文主要介紹使用Perfmon進(jìn)行性能監(jiān)控的通用方法,更細(xì)節(jié)的內(nèi)容請參考其他文檔,如,微軟官方文檔或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. 雙擊左側(cè)導(dǎo)航欄的【性能監(jiān)視器】,然后在右窗格中單擊鼠標(biāo)右鍵或”+”,選擇“添加計數(shù)器”,如圖:
3. 在”性能對象”列表,選擇需要監(jiān)控的計數(shù)器,添加后即可進(jìn)行實時監(jiān)控,如圖所示是選擇監(jiān)控cpu的計數(shù)器:
監(jiān)控計數(shù)器添加完成后,可以查看到圖形實時變化,如上圖,計數(shù)器%Processor Time表示cpu的利用率,從圖中可以看到最新值、平均值、最小和最大值,以及監(jiān)控持續(xù)時間,其中,這里的持續(xù)時間是指當(dāng)前配置顯示在圖表中的時間跨度,并不是已經(jīng)監(jiān)控的時間,該配置可以右鍵點擊圖標(biāo)->屬性->常規(guī)->持續(xù)時間中配置。另外,監(jiān)控圖上右鍵點擊,可以對計算器進(jìn)行操作,如添加、刪除、隱藏、保存、更改屬性等操作。
通過上節(jié)描述,已經(jīng)可以使用Perfmon進(jìn)行實時監(jiān)控了,可能仍然會對描述中的性能對象和性能計數(shù)器感到疑惑。通俗的講,性能對象就是你要直接監(jiān)控的資源對象,如cpu,mem等,而衡量這些對象的性能需要一些指標(biāo),就是性能計數(shù)器。Perfmon支持監(jiān)控多種性能對象,每個對象又提供了比較全面的性能計數(shù)器。性能對象、常用性能對象及計數(shù)器,如下表所示:
表1 性能對象描述
性能對象 | 提供的信息 |
Browser | Browser performance object 由衡量通知、枚舉和其他瀏覽器傳輸率的計數(shù)器組成 |
Cache | Cache performance object 包括監(jiān)督文件系統(tǒng)緩存(物理內(nèi)存上盡可能長時間的存儲最近使用過的數(shù)據(jù)以便訪問該數(shù)據(jù)時不需再從磁盤上讀取的那一部分內(nèi)存。)的計數(shù)器。因為應(yīng)用程序只使 用緩存,因此該緩存可作為應(yīng)用程序 I/O 操作的指示器。當(dāng)有足夠內(nèi)存時,緩存可增大,但當(dāng)內(nèi)存不足時,緩存會變得太小而無法使用。 |
Distributed Transaction Coordinator | Microsoft Distributed Transaction Coordinator 性能計數(shù)器 |
ICMP | ICMP performance object 包括衡量用 ICMP 協(xié)議發(fā)送和接收消息的速度的計數(shù)器。它還包括監(jiān)督 ICMP 協(xié)議錯誤的計數(shù)器。 |
IP | IP performance object 包括衡量使用 IP 協(xié)議發(fā)送和接收的 IP 數(shù)據(jù)報速度的計數(shù)器。它還包含監(jiān)督 IP 協(xié)議錯誤計數(shù)器。 |
Job object | 由每個活動命名的作業(yè)對象收集的帳戶和處理器使用數(shù)據(jù)的報告。 |
Job object Detail | Job object Detail 顯示有關(guān)作業(yè)對象中的活動處理的詳細(xì)的操作信息。 |
Logical Disk | Logical Disk performance object 包含監(jiān)視一個硬盤或固定磁盤驅(qū)動器的邏輯分區(qū)的計數(shù)器。Performance Monitor 用邏輯磁盤的驅(qū)動器號(如: C)來識別邏輯磁盤。 |
Memory | Memory performance object 由描述計算機上的物理和虛擬內(nèi)存行為的計數(shù)器組成。物理內(nèi)存指計算機上的隨機存取存儲器的數(shù)量。虛擬內(nèi)存由物理內(nèi)存和磁盤上的空間組成。許多內(nèi)存計數(shù)器監(jiān) 視頁面調(diào)度(指磁盤與物理內(nèi)存之的代碼和數(shù)據(jù)頁的移動)。過多的頁面調(diào)度(內(nèi)存不足的一種表現(xiàn))可引起拖延,會影響整個系統(tǒng)處理效率。 |
NBT Connection | NBT Connection performance object 包括衡量用 NBT 連接在一臺本地計算機和一臺遠(yuǎn)程計算機之間發(fā)送和接收字節(jié)的速率的計數(shù)器。該連接用遠(yuǎn)程計算機的名稱來識別。 |
Network Interface | Network Interface performance object 包括衡量通過一個 TCP/IP 網(wǎng)絡(luò)連接發(fā)送和接收字節(jié)和數(shù)據(jù)包的速率的計數(shù)器。它包括監(jiān)督連接錯誤的計數(shù)器。 |
Objects | Object performance object 包含在系統(tǒng)中監(jiān)督邏輯對象的計數(shù)器,如:處理、線程、多用戶終端執(zhí)行程序和信號量。這個信息可以用于檢測計算機資源的不必要的消耗。每個對象需要內(nèi)存以存儲有關(guān)對象的基本信息。 |
Paging File | Paging File performance object 包括監(jiān)督在計算機上的分頁文件的計數(shù)器。分頁文件指為備份計算機上已用物理內(nèi)存而保留的磁盤空間。 |
Physical Disk | Physical Disk performance object 包含監(jiān)視計算機上的硬盤或固定磁盤驅(qū)動器的計數(shù)器。磁盤用于存儲文件、程序及分頁數(shù)據(jù)并且通過讀取檢索這些項目并通過記錄寫入對其進(jìn)行更改。物理磁盤計數(shù)器的值為邏輯磁盤(由磁盤分成)值的總和。 |
Print Queue | 顯示一個打印列隊的操作統(tǒng)計。 |
Process | Process performance object 包含監(jiān)視運行中應(yīng)用程序和系統(tǒng)處理的計數(shù)器。所有在一個處理中的線程均共享同一個地址空間并可以訪問同樣的數(shù)據(jù)。 |
Processor | Processor performance object 包含衡量處理器活動方面的計數(shù)器。處理器是計算機進(jìn)行算數(shù)和邏輯計算、在附屬件起始操作及運行處理線程的部分。一臺計算機可以有多臺處理器。處理器對象將每臺處理器作為對象的范例。 |
Processor performance | 處理器信息 |
PSched Pipe | 數(shù)據(jù)包計劃程序中的管道統(tǒng)計數(shù) |
RAS Port | RAS Port performance object 包括監(jiān)督計算機上的 RAS 設(shè)備的每個遠(yuǎn)程訪問服務(wù)端口的計數(shù)器。 |
RAS Total | RAS Total performance object 包含將計算機上的遠(yuǎn)程訪問服務(wù)(RAS)設(shè)備的所有端口的值相加的計數(shù)器。 |
Redirector | Redirector performance object 包括在本地計算機上監(jiān)督網(wǎng)絡(luò)連接的計數(shù)器。 |
RSVP | RSVP 服務(wù)性能計數(shù)器。 |
System | System performance object 包含應(yīng)用于計算機上不止一個組件處理器范例的計數(shù)器。 |
TCP | TCP performance object 包含衡量使用 TCP 協(xié)議發(fā)送和接收 TCP Segment 速率的計數(shù)器變量。它包含監(jiān)督在每個 TCP 連接狀態(tài)下的 TCP 連接數(shù)目的計數(shù)器變量。 |
Telephony | 電話服務(wù)系統(tǒng) |
Terminal Services | 終端服務(wù)信息。 |
Terminal Services Session | 每次終端服務(wù)會話資源監(jiān)督。 |
Thread | Thread performance object 包括衡量線程行為方面的計數(shù)器。一個線程是在一臺處理器上執(zhí)行指令的基本對象。所有運行的處理至少有一個線程。 |
UDP | UDP performance object 包含衡量使用 UDP 協(xié)議發(fā)送和接收 UDP 數(shù)據(jù)報的速率的計數(shù)器。它包括監(jiān)督 UDP 協(xié)議錯誤的計數(shù)器。 |
WMI Objects | WMI 適配器返回的 WMI 高性能提供程序 |
上表中的性能對象有多達(dá)數(shù)百個性能指標(biāo),如果安裝有.NET框架,還會看到更多的.NET開頭的對象。我們關(guān)注系統(tǒng)或應(yīng)用的性能時,不可能、也不必要關(guān)注這么多指標(biāo),只需根據(jù)實際情況選取必要指標(biāo)即可。一般而言,對于Windows系統(tǒng)或運行其上的應(yīng)用來說,CPU、 Memory、Disk、Network等關(guān)鍵對象是必不可少的。
表2 常用性能對象和計數(shù)器
性能對象 | 計數(shù)器 | 提供的信息 |
Processor | % Idle Time | % Idle Time 是處理器在采樣期間空閑的時間的百分比 |
Processor | % Processor Time | % Processor Time 指處理器用來執(zhí)行非閑置線程時間的百分比。計算方法是,測量范例間隔內(nèi)非閑置線程活動的時間,用范例間隔減去該值。這個計數(shù)器是處理器活動的主要說明器,顯示在范例間隔時所觀察的繁忙時間平均百分比。 |
Processor | % User Time | % User Time 指處理器處于用戶模式的時間百分比。用戶模式是為應(yīng)用程序、環(huán)境分系統(tǒng)和整數(shù)分系統(tǒng)設(shè)計的有限處理模式。 |
Memory | Available Bytes | Available Bytes顯示出當(dāng)前空閑的物理內(nèi)存總量。當(dāng)這個數(shù)值變小時,Windows開始頻繁地調(diào)用磁盤頁面文件。如果這個數(shù)值很小,例如小于5 MB,系統(tǒng)會將大部分時間消耗在操作頁面文件上。 |
Memory | % Committed Bytes in Use | % Committed Bytes In Use 是 Memory: Committed Bytes 與Memory: Commit Limit之間的比值。(Committed memory指如果需要寫入磁盤時已在分頁文件中保留空間的處于使用中的物理內(nèi)存。Commit Limit是由分頁文件的大小而決定的。如果擴(kuò)大了分頁文件,該比例就會減小)。這個計數(shù)器只顯示當(dāng)前百分比;而不是一個平均值。 |
Memory | Page Faults/sec | Page Faults/sec是指處理器處理錯誤頁的綜合速率。用錯誤頁數(shù)/秒來計算。當(dāng)處理器請求一個不在其工作集(在物理內(nèi)存中的空間)內(nèi)的代碼或數(shù)據(jù)時出現(xiàn) 的頁錯誤。這個計數(shù)器包括硬錯誤(那些需要磁盤訪問的)和軟錯誤(在物理內(nèi)存的其它地方找到的錯誤頁)。許多處理器可以在有大量軟錯誤的情況下繼續(xù)操作。 但是,硬錯誤可以導(dǎo)致明顯的拖延。這個計數(shù)器顯示用上兩個實例中觀察到的值之間的差除以實例間隔的持續(xù)時間所得的值。 |
Network Interface | Bytes Total/sec | Bytes Total/sec是發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。 |
Network Interface | Packets/sec | Packets/sec為發(fā)送和接收數(shù)據(jù)包的速率。 |
Physical Disk | % Busy Time | % Busy Time指磁盤驅(qū)動器忙于為讀或?qū)懭胝埱筇峁┓?wù)所用的時間的百分比。 |
Physical Disk | Avg. Disk Queue Length | Avg. Disk Queue Length 是指磁盤隊列的平均長度。磁盤完成對讀取和寫入請求的處理時間,是磁盤數(shù)據(jù)吞吐量的外在表現(xiàn)。 |
Physical Disk | Current Disk Queue Length | Current Disk Queue Length指在收集操作數(shù)據(jù)時在磁盤上未完成的請求的數(shù)目。它包括在快照內(nèi)存時正在為其提供服務(wù)中的請求。這是一個即時長度而非一定間隔時間的平均值。 多主軸磁盤設(shè)備可以一次有多個請求操作,但是其它同時發(fā)生的請求為等候服務(wù)。這個計數(shù)器可能會反映一個暫時的高或低的列隊長度,但是如果在磁盤驅(qū)動器存在 持續(xù)負(fù)載,可能值會總是很高。請求等待時間與這個列隊的長度減去磁盤上的主軸成正比。這個差值應(yīng)小于2才能保持良好的性能。 |
在2.1節(jié)中介紹了Perfmon性能監(jiān)視器的使用方法,該功能主要用于對指定的性能指標(biāo)進(jìn)行實時監(jiān)控(類似nmon的交互模式),但它不能把監(jiān)控的數(shù)據(jù)保存下來。如果需要持續(xù)對系統(tǒng)的指定性能指標(biāo)進(jìn)行監(jiān)控,就需要使用Perfmon的計數(shù)器日志功能(類比nmon的后臺監(jiān)控模式),計數(shù)器日志可以把監(jiān)控數(shù)據(jù)以指定的方式進(jìn)行保存,同時也方便后續(xù)用第三方工具進(jìn)行分析。
接下來,以監(jiān)控CPU\MEM為例介紹Perfmon計數(shù)器日志的使用方法。
1. 在Perfmon右側(cè)導(dǎo)航窗格中,展開“數(shù)據(jù)收集器集”,右鍵單擊“用戶定義”,指向“新建”,然后單擊“數(shù)據(jù)收集器集”,將啟動“創(chuàng)建新數(shù)據(jù)收集器集”向?qū)В?/span>
2. 填入收集器名稱,選擇”手動創(chuàng)建(高級)”,點擊下一步進(jìn)入選擇數(shù)據(jù)類型向?qū)В鐖D:
3. 選擇“性能計數(shù)器”,點擊下一步,進(jìn)入性能計數(shù)器選擇界面,通過點擊”添加”按鈕添加CPU\MEM的性能計數(shù)器,同時,可以根據(jù)采集時長自定義采樣間隔,默認(rèn)是15s,如圖:
4. 如果需要自定義日志的保存位置,可以點擊”下一步”,否則可以直接點擊“完成”,結(jié)束配置。
5. 另外,可以右鍵單擊采集器集名稱,選擇屬性,配置監(jiān)控任務(wù)的啟停條件,如,配置定時任務(wù)或退出條件等,如圖為配置采集30s后停止:
6. 如需對監(jiān)控的性能指標(biāo)、日志格式、采樣時間等進(jìn)行調(diào)整,可以右鍵單擊數(shù)據(jù)收集任務(wù),選擇屬性,編輯即可,可以增刪計數(shù)器、修改日志格式(默認(rèn)二進(jìn)制的.blg)、修改采樣間隔等,如圖:
7. 最后,點擊工具欄啟動數(shù)據(jù)收集器即可;
8. 結(jié)果收集完成后,可以在右側(cè)導(dǎo)航欄選擇”報告”,展開“用戶自定義”,查看報告;也可以通過“性能監(jiān)視器”的“查看日志數(shù)據(jù)”選擇要加載顯示的日志文件。
本節(jié)主要介紹使用Perfmon對CPU、MEM、磁盤I\O、NET進(jìn)行監(jiān)控和性能分析的通用思路和方法。
1. CPU分析方法
根據(jù)2.2節(jié)的介紹,CPU監(jiān)控涉及的主要性能計數(shù)器是% Processor Time、% User Time、System:Processor Queue Length。其中,% Processor Time性能計數(shù)器的數(shù)值展示了服務(wù)器CPU的使用情況,如果該值持續(xù)超過90%,則說明整個系統(tǒng)面臨著CPU瓶頸,需要通過增加CPU來提高性能;%User Time性能計數(shù)器的數(shù)值展示了用戶空間進(jìn)程的CPU利用率,如果該值較大,需要分析是哪個用戶進(jìn)程、執(zhí)行的何種操作引起了CPU升高; System:Processor Queue Length計數(shù)器的數(shù)值展示了CPU等待處理的隊列長度,當(dāng)該計數(shù)器的值 > (CPU數(shù)量的總數(shù)+1)時,說明出現(xiàn)處理器阻塞。一般情況下,Processor:%Process Time很高時,都會伴隨著處理器阻塞,但產(chǎn)生處理器阻塞時,Processor:%Process Time 計數(shù)器的值并不一定很高,此時就需要分析產(chǎn)生處理器阻塞的原因。
2. MEM分析方法
MEM監(jiān)控涉及的性能計數(shù)器主要是% Commitued Bytes in Use、Available Bytes,如果% Commitued Bytes in Use計數(shù)器顯示的數(shù)值比較大,則系統(tǒng)可能存在內(nèi)存瓶頸,可以根據(jù)Available Bytes計數(shù)器的數(shù)值進(jìn)一步判斷,如果該值小,說明可用內(nèi)存不足,存在性能瓶頸;另外,需要注意Pages/sec、Pages Read/sec和Page Faults/sec的數(shù)值,這些指標(biāo)反映了操作系統(tǒng)進(jìn)行磁盤交換的頻率。如果Pages/sec的數(shù)值持續(xù)較高(如幾百的數(shù)值),可能存在內(nèi)存瓶頸,但不排除可能是程序使用內(nèi)存映射文件所致;如果Page Faults/sec的數(shù)值較高,說明頁面失效頻率較高,操作系統(tǒng)向內(nèi)存讀取的次數(shù)較多;通常,Pages Read/sec計數(shù)器的數(shù)值,一般不要超過5,否則很可能存在內(nèi)存瓶頸。
3. 磁盤IO分析方法
磁盤I/O監(jiān)控涉及的性能計數(shù)器主要是 % Busy Time、Avg. Disk Queue Length、Current Disk Queue Length,若% Busy Time性能計數(shù)器的數(shù)值比較大,則硬盤可能存在瓶頸。另外,對于順序讀寫的應(yīng)用,需要計算IOPS,如果實際得到的IOPS等于或超過了磁盤標(biāo)稱的IO能力,則該磁盤存在性能瓶頸。
4. NET分析方法
NET監(jiān)控涉及的性能計數(shù)器主要是Bytes Total/sec,通過該計數(shù)器值與網(wǎng)絡(luò)帶寬數(shù)值進(jìn)行比較,可以判斷網(wǎng)絡(luò)鏈接速度是否存在瓶頸。
4 其他資源
關(guān)于python學(xué)習(xí)、分享、交流,筆者開通了微信公眾號【小蟒社區(qū)】,感興趣的朋友可以關(guān)注下,歡迎加入,建立屬于我們自己的小圈子,一起學(xué)python。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。