1、CPU使用率windows
一、Windows上最經常使用的CPU使用率監控工具是Task Manager(任務管理器)和Performance Monitor(性能監視器)。這兩個監控工具用不一樣顏色區分用戶態CPU使用率和系統態CPU使用率。網絡
圖1-1 win8 Task Manager的性能監視窗口工具
上方的實線是用戶態和系統態CPU使用率的總和,下方的虛線是系統態CPU使用率。上下兩線之間的差就是用戶態CPU使用率。注意必須勾選顯示內核時間(show kernel Utilization)才能顯示系統態CPU使用率。性能
圖1-2 win8 Performance Monitor的窗口操作系統
在cmd中運行perfmon就能夠顯示這個窗口。命令行
右鍵單擊Performance Monitor的顯示區域,在彈出的菜單中選擇添加計數器(Add Counters),選擇性能對象Processor,選擇計數器%User Time和%Privileged Time再點擊添加(Add)按鈕,便可監控用戶態CPU使用率和系統態CPU使用率。Windows使用術語Privileged Time描述內核或系統態CPU使用率。上圖就是添加計數器的示例。orm
上方的線分別是%Processor Time、總的%User Time以及%Privileged Time。本示例中的%User Time高於%Privileged Time,這和預想的結果一致,換句話說,執行應用程序代碼的時間超過執行操做系統內核代碼的時間。對象
二、Windows typeperf是收集操做系統性能統計數據的命令行工具。typeperf能夠在Windows命令提示符窗口中運行,或者做爲腳本語句在bat或cmd文件中運行。你能夠用Windows性能計數器的名字指定那些須要收集的性能統計數據,他們的名字與Performance Monitor中的相同。例如,要收集用戶態和系統態CPU使用時間,能夠指定性能計數器User Time和Privileged Time。在命令提示符窗口或者cmd文件中,命令看起來是這樣的:接口
typeperf "\Processor(_Total)\% Privileged Time" "\Processor(_Total)\% User Time"隊列
這裏看到的名字和在Performance Monitor中顯示的同樣。你也能夠將性能計數器列表寫入文件,而後將文件名傳給typeperf。例如,能夠把一下性能計數器寫入cpu-util.txt文件中。
\Processor(_Total)\% Privileged Time
\Processor(_Total)\% User Time
而後調用typeperf,參數-cf後面是文件名。例如,typeperf –cf cpu-util.txt
圖1-3
上面的示例中typeperf用3個性能計數器分別抓取用戶態CPU使用率、系統態CPU使用率和總CPU使用率。
輸出的第一行是表頭,描述所採集的數據。下面幾行詩數據,每行的日期時間戳表示採集相應性能計數器值得時間點。默認狀況下,typeperf的報告間隔是1秒,-si選項能夠更改間隔,接受形如[mm:]ss(mm是分鐘,能夠選;ss是秒數)的數據。若是進行長時間監控,你能夠指定比默認更長的時間間隔以減小須要處理的數據量。
2、CPU調度程序運行隊列
一、Windows上能夠用性能計數器\System\Processor Queue Length(在Performance Monitor的Add Counters對話框中添加計數器System>Processor Queue Length)監控運行隊列長度
圖1-4
特別須要注意Performance Monitor的比例因子。圖中的比例因子是10,意味着運行隊列長度1在圖中顯示爲10,2則顯示20,3則顯示30,以此類推。依據系統虛擬處理器的數量評估運行隊列長度,而後決定是否須要性能分析。
二、Windows的typeperf也能夠監控運行隊列長度。用如下命令監控運行隊列長度。
typeperf "\System\Processor Queue Length"
圖1-5
Typeperf輸出的運行隊列長度爲實際值,沒有像性能監視器中的比例因子。
3、監控內存使用率
一、在windows Performance Monitor中監控每秒內存頁面調度(\Memory\Pages/second)、可用內存字節數(\Memory\Available MBytes),能夠判斷系統是否正在進行頁面交換。
圖1-6
當可用內存(\Memory\Available MBytes)變少,而且有頁面調度(\Memory\Pages/second)時,系統可能正在進行頁面交換。
二、顯示windows頁面交換的最簡單方法是typeperf命令:
typeperf "\Memory\Available MBytes" "\Memory\Pages/sec"
圖1-7
上面截取了一部分。第一列是時間戳,第二列是可用內存,第三列是每秒的頁面調度。
能夠看到,可用內存一直穩定在4662MB左右,而且偶爾有頁面調度。
因爲可用內存保持恆定,有理由假定沒有啓動新應用。由於新應用啓動時須要將頁面換進內存,因此可用內存會降低,同時也能看到頁面調度。因此,若是系統使用的內存量保持穩定,也沒有啓動新應用,卻依然有頁面調度,說明系統可能在進行頁面交換。
值得注意的是,若是系統報告可用內存不多,也沒有頁面調度,說明系統沒有頁面交換,只不過系統大部分物理RAM都被佔用了。一樣,若是系統正在進行頁面調度,但內存充足且沒有頁面交換,說明有應用在啓動。
三、Windows的內建工具難以監控Java鎖競爭,Windows的性能計數器能夠監控上下文切換,但沒法區分讓步和搶佔式上下文切換。Windows上監控Java鎖競爭,一般須要外部工具。(所需工具自行搜索)
4、網絡I/O使用率
一、Windows上監控網絡使用率,就不像在performance Monitor中添加性能計數器那麼簡單了。你須要知道被監控網絡接口的帶寬,以及網絡接口傳遞的數據量。
圖1-8
二、網絡接口每秒傳遞的字節數能夠經過性能計數器\Network Interface(*)\Bytes Total/sec得到。通配符「*」表示報告的是系統全部網絡接口的總字節數。能夠用命令\Network Interface(*)\Bytes Total/sec查看網絡接口名,而後用你打算監控的網絡接口替換通配符「*」。
圖1-9
除了接口傳遞的字節數,還必須得到網絡接口的帶寬。能夠經過性能計數器\Network Interface(*)\Current Bandwidth得到,其中「*」應該用被監控的網絡接口替換。
圖1-10
重點須要注意的是,性能計數器Current Bandwidth的帶寬單位是bits/s,相比而言,Bytes Total/sec是bytes/s。因此網絡使用率的計算公式須要考慮適當的單位,bits/s或bytes/s。下面是兩個網絡使用率的公式:第一個是Current Bandwidth除以8變成字節,第二個是Bytes Total/sec乘以8變成比特位。
Network utilization % = (Bytes Total/sec) / (Current Bandwidth / 8) * 100
或者
Network utilization % = (Bytes Total/sec * 8) / (Current Bandwidth) * 100
三、在任務管理器中也能夠監控windows的網絡使用率。
圖1-11