一、 系統(System)
Context Switches/sec(System)
Context Switches/sec (每秒上下文切換次數) 是指計算機上的所有處理器從一個線程切換到另一個線程的綜合速率。當正在運行的線程主動放棄處理器時發生上下文切換,優先級更高的就緒線程將占先,或在用戶模式和特權 (內核) 模式間切換以使用執行或子系統服務。它是在計算機所有處理器上運行的所有線程的 Thread\Context Switches/sec (每秒線程/上下文切換次數) 總和,可用切換次數來計算。系統和線程對象上有上下文切換計數器。此計數器顯示最后兩次采樣期間觀察到的值差除以采樣間隔時間所得到的值。
Processor Queue Length (System)
Processor Queue Length 是指處理器隊列的瞬時長度 (以線程數為單位)。如果您不同時**線程計數器,則此計數器始終為 0。所有處理器都使用一個隊列,線程在該隊列中等待處理器周期。此長度不包括當前正在執行的線程。一般情況下,如果處理器隊列的長度一直超過二,則表示處理器堵塞。此值為瞬時計數,不是一段時間的平均值。(參考值:<=處理器個數+1)
注
研究系統處理器瓶頸,查看System\Processor Queue Length計數器的值,當該計數器的值大於CPU數量的總數1時,說明產生了處理器阻塞。在處理器的%Process Time值很高時一般都伴隨着處理器阻塞,但產生處理器阻塞時,Processor\%Process Time計數器的值並不一定很大,此時就是必須查看處理阻塞的原因。
%DPC Time是另一個需要關注的內容,該計數值越低越好。在多處理器系統中,如果該值大於50%並且Processor\%Processor Time值非常高,則考慮加入一個網卡來提高性能。
File Data Operations per second(System)
File Data Operations per second 是指計算機向文件系統設備發出讀寫操作的速率。它不包括文件控制操作。
二、 處理器 (Processor_Total)
%Processor Time(Processor_Total)
CPU利用率,該計數器最為常用,可以查看處理器是否處於飽和狀態,如果該值持續超過 95%,就表示當前系統的瓶頸為CPU,可以考慮增加一個處理器或更換一個性能更好的處理器。(參考值:<80%)
注
查看每個CPU的Processer\%Processor Time和Processor\%User Time 和 Processor\%Privileged Time
Processor\%User Time 是指系統的非核心操作消耗的CPU的時間,如果該值較大,可以考慮是否能通過算法優化等方法降低該值。如果服務器是數據庫,Processor\%User Time 值大的原因很可能是數據庫的排序或是函數操作消耗了過多的CPU時間,此時可以考慮對數據庫系統進行優化。
% Interrupt Time(Processor_Total)
% Interrupt Time (中斷時間百分比) 是指處理器在采樣間隔期間接收和維修硬件中斷的時間。該值是生成中斷的設備(如系統時鍾、鼠標、磁盤驅動器、數據通信線路、網卡和其他外設)活動的間接指標。這些設備通常在完成任務或需要引起注意時中斷處理器。在中斷期間,正常的線程執行將暫停。大多數系統時鍾每 10 毫秒中斷一次處理器,創建中斷活動背景。在中斷期間,暫停正常的線程執行。此計數器顯示平均繁忙時間在采樣時間內所占的百分比。
% Privileged Time(Processor_Total)
% Privileged Time (特權時間百分比) 是指進程中的線程在特權模式下執行代碼所花時間的百分比。在調用 Windows 系統服務時,該服務通常在特權模式下運行,以便訪問系統專有數據。在用戶模式下執行的線程無法訪問這些數據。對系統的調用可以是顯式的,也可以是隱式的,例如頁面錯誤或中斷。與某些早期操作系統不同,Windows 除了使用用戶模式和特權模式這種傳統保護方法外,還使用進程邊界來保護子系統。除了在進程中的特權時間內出現,Windows 代表應用程序執行的某些操作還可能出現在其他子系統進程中。
Interrupts/sec (Processor_Total)
Interrupts/sec 是指處理器平均每秒接收和處理硬件中斷的數量。這不包括單獨計數的 DPC。此值是生成中斷的設備(如系統時鍾、鼠標、磁盤驅動器、數據通信線路、網絡接口卡和其他外圍設備)活動的間接指示。這些設備在完成任務或需要注意時,通常會中斷處理器。中斷期間,正常執行的線程將掛起。大多數系統時鍾每隔 10 毫秒會中斷一次處理器,從而創建后台中斷活動。該計數器顯示最后兩次采樣中觀察到的值再除以采樣間隔持續時間之后的差。
%DPC Time
處理器在網絡處理上消耗的時間,該值越低越好。
三、 進程 (Process_Total)
Private Bytes (Process_Total)
private Bytes:進程無法與其他進程共享的字節數量。該計數器的值較大時,有可能是
內存泄露的信號
Work set:最近處理線程使用的內存頁
進程分析方法
1>.查看進程的%Processor Time值,每個進程%Processor Time值反映出進程所消耗的處理時間。將不同進程所消耗的處理器時間進行對比,可以容易地看出具體哪個進程在性能測試過程中消耗了最多的處理器時間,從而可以據此針對應用進行優化
2>.查看每個進程產生的頁面失效
3>.了解進程的Process\Private Bytes
四、 內存 (Memory)
Available Mbytes(Memory)
Available MBytes (可用內存 MB 數) 是指可供計算機上的進程運行時使用的物理內存量,以 MB,而不是 Memory\Available Bytes (可用內存字節數) 中使用的字節為單位。它是通過將填零內存、可用內存和備用內存列表上的空間量相加進行計算。可用內存是指可以使用的內存; 填零內存是指用零填充以防止后面的進程看到前面進程所用數據的內存頁; 備用內存是指在磁盤路徑上從進程工作區 (其物理內存) 釋放,但仍可以被重新調用的內存。此計數器不顯示平均值,只顯示最后觀察到的值。(參考值:>=10%)
注
要監視內存不足的狀況,請從以下的對象計數器開始:
• Memory\ Available Bytes
• Memory\ Pages/sec
Cache Bytes(Memory)
Cache Bytes (緩存字節數) 是 Memory\System Cache Resident Bytes (內存/系統緩存駐留字節數)、Memory\System Driver Resident Bytes (內存/系統驅動程序駐留字節數)、Memory\System Code Resident Bytes (內存/系統代碼駐留字節數) 和 Memory\Pool Paged Resident Bytes (內存/分頁池駐留字節數) 計數器的總和。此計數器不顯示平均值,只顯示最后觀察到的值。
Committed Bytes(Memory)
Committed Bytes (確認字節數) 是指以字節為單位的確認虛擬內存量。確認內存是指在磁盤分頁文件上預留了空間的物理內存。每個物理盤上可以有一個或多個分頁文件。此計數器不顯示平均值,只顯示最后觀察到的值。
System Cache Resident Bytes (Memory)
System Cache Resident Bytes (系統緩存駐留字節數) 是文件系統緩存中可分頁操作系統代碼的大小 (以字節為單位)。該值只包括當前的物理頁面,不包括當前未駐留的虛擬內存頁面。它等於任務管理器中顯示的系統緩存值。因此,該值可能會比文件系統緩存使用的實際虛擬內存量要小。該值是 Memory\System Code Resident Bytes (內存/系統代碼駐留字節數) 的一部分,后者表示當前在物理內存中的所有可分頁操作系統代碼。此計數器不顯示平均值,只顯示最后觀察到的值。
Pool Nonpaged Bytes( (Memory)
Pool Nonpaged Bytes 是指非分頁池中的字節數,非分頁池是一種系統內存區域,操作系統組件在完成其指定任務時在此獲得空間。非分頁池頁面不能退出到分頁文件,但是這些頁面一經分配就可一直位於主內存中。
Pool Paged Bytes (Memory)
Pool Paged Bytes (分頁池字節數) 是指分頁池的大小 (以字節為單位)。分頁池是系統內存 (操作系統使用的物理內存) 中的一個區域,用於存放不使用時可以寫入磁盤的對象。Memory\Pool Paged Bytes (內存/分頁池字節數) 的計算方式與 Process\Pool Paged Bytes (進程/分頁池字節數) 的不同,因此可能不等於 Process\Pool Paged Bytes\_Total (進程/分頁池字節數/總數)。此計數器不顯示平均值,只顯示最后觀察到的值。
Pages/sec (Memory)
Pages/sec 是指為解決引用時不在內存中的頁面的內存引用問題,從磁盤讀取的或寫入磁盤的頁面數。這是 Pages Input/sec 和 Pages Output/sec 的和。此計數器中包括代表系統高速緩存訪問應用程序文件數據的分頁流量。此值還包括傳遞到/來自非高速緩存映射內存文件的頁數。如果您關心內存壓力過大問題 (即系統失效) 和可能產生的過多分頁,則這是值得考慮的主要計數器。(參考值:00~20)
Page Input/sec
表示為了解決硬錯誤而寫入硬盤的頁數(參考值:>=Page Reads/sec)
Page Reads/sec (Memory)
Page Reads/sec (每秒頁面讀取次數) 是指為解決頁面硬故障而讀取磁盤的速率。它顯示讀取次數,而不考慮每次讀取時檢索的頁面數。當一個進程引用虛擬內存中的頁面,而此頁面不在工作集中或位於物理內存中的其他位置,並且必須從磁盤檢索時,就會發生頁面硬故障。此計數器是引起系統級延遲的故障的主要指標。它包括為解決文件系統緩存 (通常由應用程序請求) 和非緩存映射內存文件中的故障而執行的讀取操作。比較 Memory\Pages Reads/sec (每秒內存/頁面讀取次數) 與 Memory\Pages Input/sec (每秒內存/頁面輸入次數) 的值可以確定每個操作讀取的平均頁面數量。
Page Faults/sec (Memory)
Page Faults/sec 是指處理器中頁面錯誤的計數。當進程引用虛擬內存頁面,而該頁面不在其位於主內存的工作集當中時,將出現頁面錯誤。如果某頁面位於待機列表中(因此它已位於主內存中),或者它正在被共享該頁面的其他進程所使用,則頁面錯誤不會導致該頁從磁盤中取出。
五、 物理盤 (PhysicalDisk_Total)
Disk Transfers/sec (PhysicalDisk_Total)
Disk Transfers/sec (每秒磁盤傳輸率) 是指磁盤上的讀寫速率。
Split IO/Sec (PhysicalDisk_Total)
Split IO/Sec (每秒 IO 分割率) 報告磁盤的 I/O 分割成多個 I/O 的速率。分割 I/O 可能是因為請求的數據太大,無法放入單個 I/O 或者因為磁盤碎片太多。
Avg. Disk Queue Length (PhysicalDisk_Total)
Avg. Disk Queue Length (平均磁盤隊列長度) 是指在采樣間隔期間所選磁盤的平均排隊讀取和寫入請求數。(<=磁盤數的2倍)
Avg. Disk Bytes/Transfer (PhysicalDisk_Total)
Avg. Disk Bytes/Transfer (平均磁盤傳送字節數) 是指在寫入或讀取時傳入或傳出磁盤的平均字節數。(<=磁盤數的2倍)
%Idle Time(PhysicalDisk_Total)
% Idle Time (空閑時間百分比) 報告采樣間隔期間磁盤空閑時間的百分比。
%Disk Time(PhysicalDisk_Total)
Disk Time 是指選定的磁盤驅動器忙於處理讀或寫請求的已用時間所占百分比。
%Disk Time:表示磁盤驅動器為讀取或寫入請求提供服務所用的時間百分比,如果只
有%Disk Time比較大,硬盤有可能是瓶頸.
注
磁盤I/O分析方法
1>.計算每磁盤的I/O數。每磁盤的I/O數可用來與磁盤的I/O能力進行對比,如果經過計算得到的每磁盤I/O數超過了磁盤標稱的I/O能力,則說明確實存在磁盤的性能瓶頸。
2>.與Processor\Privileged Time合並進行分析。如果在Physical Disk計數器中,只有%Disk Time值較大,其他值都比較適中,則硬盤可能會是瓶頸。若幾個值都比較大,且數值持續超過80%,則可能是內存泄露。
3>.根據Disk sec/Transfer進行分析。一般來說,定義Transfer數值小於15毫秒為優秀,介於15~30毫秒之間為良好,30~60毫秒之間為可接受,超過60毫秒則需要考慮更換硬盤貨硬盤的RAID方式
六、 邏輯盤 (LogicalDisk_Total)
Free Megabytes (LogicalDisk_Total)
Free Megabytes (可用空間 MB 數) 是指磁盤驅動器上尚未分配的空間大小 (以 MB 為單位)。1 MB = 1,048,576 字節。
七、 服務(Server)
Pool Nonpaged Bytes(Server)
服務器正在使用的不可分頁計算機內存的字節數。該值對於確定 Windows NT 注冊表中 MaxNonpagedMemoryUsage 的值非常有用。
Bytes Total/sec (Server)
服務器已通過網絡收發的字節數。此值可全面說明服務器的繁忙程度。
Pool Paged Bytes(Server)
服務器當前正在使用的可分頁計算機內存的字節數。該值有助於確定 MaxPagedMemoryUsage 參數的最佳值。
Pool Paged Failures(Server)
從分頁池分配時失敗的次數。這種失敗說明計算機的物理內存或分頁文件太小。
八、 網絡(Network Interface)
Bytes Total/sec
Network Interface\Bytes Total/sec為發送和接收字節的速率,可以通過該計數器的值判斷網絡連接速度是否是瓶頸,具體操作方式是用該計數器的值和目前網絡的帶寬進行比較。(參考值:該計數器和網絡帶寬相除,<50%)
Bytes Total/sec 指在每個網絡適配器上發送和接收字節的速率,包括幀字符在內。Network Interface\Bytes Total/sec 是 Network Interface\Bytes Received/sec 和 Network Interface\Bytes Sent/sec 的總和。
=================================================
定位系統瓶頸可以做哪些?
壓測端正常么?
DB端正常么?
應用端正常么?
分析線程
CPU Profiling
系統資源**
CPU占用率
內存使用情況
磁盤I/O速度、傳輸和讀寫比率、錯誤統計率與傳輸包的大小
消耗最多的進程
計算機詳細信息和資源
頁面空間和頁面I/O速度
用戶自定義的磁盤組
網絡文件系統
對一個進程,需要看哪些計數器?
進 程對象而言,它擁有的計數器種類包括ID Process(進程的PID)、Thread Count(線程數)、Priority Base(進程優先級)、IO Read Bytes/sec(每秒IO讀取字節數)、IO Writer Bytes/sec(每秒IO寫出字節數)等
系統性能計數器需要的對象
對於系統性能計數器,默認包括許多監視對象,對於一般用戶需要監測的對象有6類:System、Processor、Memory、Process、Physical Disk、Network Interface
