使用typeperf監控系統資源

2022-09-23 08:37:10 字數 2684 閱讀 4127

昨天在對一個程式進行記憶體溢位的檢測,需要對該程式的記憶體長時間進行監控,結束後,通過excel的統計圖觀察記憶體是否處於增長趨勢。針對這塊的監控,很多人常用的做法就是使用windows自帶的效能監控工具,呵呵,是相當的簡單,不過我還是比較喜歡命令列的方式,這跟我平時喜歡搞自動化有點關係吧。

今天就來跟大家介紹下typeperf這個命令,以及簡單的常用技巧。

關於typeperf就不詳細介紹了,你就把它當作是效能監控工具(windows自帶)的命令列版本就行了,微軟提供的一個命令列下的監控工具,收集效能計數器效能資料。typeperf-?可以用來檢視該命令的具體幫助。

在進行監控之前首選需要確定我們要監控的內容,是要監控記憶體、cpu、磁碟、網路等等?每種效能計數器都會有自己的名稱,首先第一步確定我們要監控內容的效能計數器的名稱。

有兩種辦法:

方法一:通過效能監視器,新增我們需要的效能計數器,有些計數器需要選擇對應的例項,也就是你需要監控哪個程序的效能,選擇新增完計數器後,點選確定按鈕。

這時會在效能監視器主視窗顯示所選擇的效能計數器的資料統計趨勢,右擊主視窗空白處,彈出的選單中選擇“屬性”選單。

在監視器的屬性對話方塊中資料選項卡里,可以很清楚的看到效能計數器具體的名稱。將其一個個抄寫一遍至文字檔案吧,不知道能否複製,可以嘗試下。

使用typeperf-qx執行過程中可以過濾麼?答案是可以的。看下面的截圖,qx引數後面有個object的選項,跟具體的計數器名稱。這個名稱需要自己記了。

typeperf-q  與typeperf -qx的區別,自己針對性的執行一遍看看吧,相信你會理解的。

下面來舉個例子,例如我想監控某個outlook程序的cpu、記憶體:

1、我們這次是監控某一個具體的程序,是一個具體的例項,那麼肯定使用typeperf-qx,程序的計數器名稱為process,因此執行命令typeperf -qx process

2、執行完後,相信你會看到很多的內容,例項都在process後面括號中區別體現,通過工作管理員確定我們的outlook的具體程序,檢視後得出程序為outlook.exe,為大寫,typeperf中對大小寫敏感,這點需要注意,那麼例項的名字就是outlook,對應就是process(outlook),如何在剛才的結果中過濾出帶有outlook的字串的計數器呢?使用find命令配合管道,typeperf -qx process | find "outlook",執行完後你會發現關於outlook這個程序的相關的效能計數器都列出來了,而且不是很多,手工複製都可以了,呵呵。

3、接下來可以通過find命令繼續進行過濾,例如過濾typeperf -qx process | find "outlook" | find "processor"

過濾完後只有一條了,正是我們所需要的cpu的計數器。通過重定向將返回結果輸出至counters.txt檔案中。

4、繼續過濾與記憶體相關的

繼續使用重定向進行追加,大家需要注意這裡使用的是追加重定向

追加完後檢視下我們的counters.txt檔案內容

5、接下來使用typeperf命令來對這些效能計數器進行監控,使用命令

typeperf -f csv -o mycounters.csv -si 15 -cf counters.txt -sc 240

引數說明可參考typeperf-?

-f:表示輸出檔案型別

-o:表示輸出檔名稱

-si:表示效能計數器資料採集週期(每個多少秒採集一次,注意格式)

-cf:表示效能計數器的配置檔案(就是之前我們做好的counters.txt)

-sc:表示總共需要收集多少次

以上命令表示每隔15秒收集一次,總共收集240次,總共耗時15*240 = 15*60*4 = 3,600 = 1小時,表示對outlook程序的cpu以及記憶體進行1個小時的監控。

6、執行完後,在c:\users\administrator目錄下會生成mycounters.csv檔案,開啟後就跟excel一樣,選中一列,插入統計圖表,可以非常直觀的看到某一效能計數器在一小時內的走向

本次分享結束

最後還有一些問題,例如具體需要監控哪些內容,以及效能分析方面的問題大家可以發散思考下。監控只是一種手段,是為了方便我們接下來的分析。