軟件性能測試(連載5)

  • 2020 年 2 月 19 日
  • 筆記

2性能監控

2.1Windows的性能監控

Windows計數器見表3-2所示。

表3-2 Windows計數器

類別

計數器名稱

描述

System

%Total Processor Time

系統中所有處理器都處於繁忙狀態的時間百分比,對於多處理器系統來說,該值可以反映所有處理器的平均繁忙狀態,該值為100%,如果有一半的處理器為繁忙狀態,該值為50%。

Process Queue Length

線程在等待分配CPU資源所排隊列的長度,此長度不包括正在佔有CPU資源的線程。

File Data Operations/sec

計算機對文件系統進行讀取和寫入操作的頻率,但是不包括文件控制操作

Processor

%Processor Time

CPU利用率,該計數器最為常用,可以查看處理器是否處於飽和狀態,如果該值持續超過 95%,就表示當前系統的瓶頸為CPU,可以考慮增加一個處理器或更換一個性能更好的處理器。

%Priviliaged Time

CPU在特權模式下處理線程所花的時間百分比。一般的系統服務,進程管理,內存管理等一些由操作系統自行啟動的進程屬於這類

%User Time

與%Privileged Time計數器正好相反,指的是在用戶狀態模式下(即非特權模式)的操作所花的時間百分比。

%DPC Time

處理器在網絡處理上消耗的時間,該值越低越好。

Process

%Processor Time

進程的所有線程在每個處理器上的處理器時間總和。

private Bytes

進程無法與其他進程共享的位元組數量。該計數器的值較大時,有可能是內存泄露的信號

Work set

最近處理線程使用的內存頁

Memory

Available Mbytes

剩餘的可用物理內存,單位是兆位元組

Pages reads/sec

表示為了解決硬錯誤而從硬盤上讀取的頁數。

Pages writes/sec

Page Writes/sec是指為了釋放物理內存空間而將頁寫入磁盤的次數

Pages Input/sec

表示為了解決硬錯誤而寫入硬盤的頁數(參考值:>=Page Reads/sec)

Pages Output/sec

Pages Output/sec是指為了釋放物理內存空間而寫入磁盤的頁數如果該值遠遠大於Pages Input/sec,可能有內存泄漏

Pages/sec

表示為了解決硬錯誤而從硬盤上讀取或寫入硬盤的頁數

Page Faults/sec

當處理器在內存中讀取某一頁出現錯誤時,就會產生缺頁中斷,也就是 page Fault。如果這個頁位於內存的其他位置,這種錯誤稱為軟錯誤,用Transition Fault/sec 來衡量;如果這個頁位於硬盤上,必須從硬盤重新讀取,這個錯誤成為硬錯誤。硬錯誤會使系統的運行效率很快降下來。Page Faults/sec這個計數器就表示每秒鐘處理的錯誤頁數,包括硬錯誤和軟錯誤。

Cathe Bytes

文件系統的緩存(默認為50%的可用物理內存)

Network interface

Bytes received/sec

該數據結合Bytes total/sec參看

Bytes sent/sec

該數據結合Bytes total/sec參看

Bytes total/sec

表示網絡中接受和發送位元組的速度,可以用該計數器來判斷網絡是否存在瓶頸

Packets/sec

根據實際數據量大小,無建議閾值,該數據結合Bytes total/sec參看

Physical disk

Disk reads/sec

取決於硬盤製造商的規格,檢查磁盤的指定傳送速度,以驗證此速度沒有超出規格

Disk writes/sec

取決於硬盤製造商的規格,檢查磁盤的指定傳送速度,以驗證此速度沒有超出規格Disk reads/sec+ Disk writes/sec應小於磁盤設備的最大容量

%Disk Time

表示磁盤驅動器為讀取或寫入請求提供服務所用的時間百分比。

Average Disk Queue Length

表示磁盤讀取和寫入請求提供服務所用的時間百分比,可以通過增加磁盤構造磁盤陣列來提高性能(<=磁盤數的2倍)

Average Disk Read Queue Length

表示磁盤讀取請求的平均數

Average Disk write Queue Length

表示磁盤寫入請求的平均數

Average Disk sec/Read

磁盤中讀取數據的平均時間,單位是秒

Average Disk sec/Transer

磁盤中寫入數據的平均時間,單位是秒

如圖3-12所示,Windows專門提供了性能計數器查看的界面。

1. CPU

•System。

Ø%Total Processor Time。

服務器整體的處理器利用率,如果持續>80%可能存在性能等問題了。

ØProcess Queue Length。

線程單元中的處理器隊列的即時長度,如果大於CPU數量+1,說明處理器處於堵塞狀態。

•Processor。

Ø%DPC Time。

處理器在網絡處理上消耗的時間,這個字越低越好。如果大於50% 並且 Processor Time很高。可能網卡性能發生了問題。

Ø%User Time。

非核心操作消耗CPU時間,如果比較大,就要考慮優化程序算法,如果是數據庫服務器考慮優化數據庫優化。

2. 內存

•Memory

ØAvailable Mbytes。

剩餘的可用物理內存。在Windows中內存可分為0內存、空閑內存、已緩存內存和忙內存。0內存是防止後面的內存看到前面的內存。已緩存內存是指先被系統核心進程註冊的內存,如果系統核心進程需要運行,它會首先使用已緩存內存。這裡的剩餘的可用物理內存是指空閑內存+已緩存內存,建議不小於總內存的10%。

Øpages/sec。

硬件頁面錯誤導致從磁盤取出的頁面數。參考值為00~20。

Øpages Read/sec。

頁的硬故障。這個值不應該超過5。

ØPage Faults。

處理器頁面錯誤計數。這個值大說明操作系統向內存讀取錯誤數據過多。

•Physical disk。

Ø%Disk Time。

所選磁盤忙於讀寫請求服務所用的時間百分比,正常值<0.5。

ØAverage Disk R/D Queue Length。

讀取(寫入)請求(隊列)的平均數,正常值<0.5。

注意。

•如果pages/sec很低並且%Disk Time &Average Disk R/D Queue Length很高說明磁盤存在問題。

•Average Disk R/D Queue Length長度增加然而pages Read/sec未降低說明內存不足。

3. 磁盤I/O

由於RAID的類型,磁盤的I/O數的計算方法如下表3-3所示。

表3-3 磁盤的I/O數的計算方法

RAID類型

計算方法

RAID0

(Reads+Writes)/Number of Disks

RAID1

(Reads+2×Writes)/2

RAID5

(Reads+4×Writes)/Number of Disks

RAID10

(Reads+42×)/Number of Disks

擴展閱讀:RAIDRAID(Redundant Array of Independent Disk 獨立冗餘磁盤陣列)技術是加州大學伯克利分校1987年提出,最初是為了組合小的廉價磁盤來代替大的昂貴磁盤,同時希望磁盤失效時不會使對數據的訪問受損 失而開發出一定水平的數據保護技術。RAID就是一種由多塊廉價磁盤構成的冗餘陣列,在操作系統下是作為一個獨立的大型存儲設備出現。RAID可以充分發揮出多塊硬盤的優勢,可以提升硬盤速度,增大容量,提供容錯功能夠確保數據安全性,易於管理的優點,在任何一塊硬盤出現問題的情況下都可以繼續工作,不會受到損壞硬盤的影響。

•Physical disk。

Ø% Disk Time。

如果只有%Disk Time高,說明磁盤遇到了瓶頸;如果Physical disk中其他值都高,說明有內存泄露。

Ø% Average Disksec/Transer。

0-15ms:優秀、15-30ms:良好、30-60ms:可以接受、>60ms:考慮更換硬盤或硬盤RAID方式。

4. 進程

•Process。

Ø%ProcessorTime。

查看哪些進程佔有時間最長。

ØPageFailure/sec。

進程產生的頁故障與系統產生的相比較,以判斷該進程對系統頁故障的影響。與Memory中的Page Faults/sec 比值來判斷那個進程產生的頁面時效最多。

ØPrivate Bytes。

是指進程所分配的無法與其他進程共享的當前位元組數量。如果這個值持續增長或者性能測試終止後這個值仍舊不降,說明發生了內存泄露。

5.網絡

•Network interface。

Ø Bytestotal/sec。

該計數器和網絡帶寬相除得到的百分比,建議<50%。

•網絡其他指標請參看參考SNMP。