內存瓶頸: 由於可用內存缺乏導致系統性能下降的現像。
(一)、相關的性能對象
主要考慮內存的頁面操作和磁盤的I/O操作,需要考慮如下性能對象:
Memory性能對象: 用於分析整個系統的內存瓶頸問題。
Process性能對象: 分析某個應用的內存性能瓶頸問題。
Physical Disk性能對象,與內存性能瓶頸被動相關。
(二)、幾個重要性能計數器
Available MBytes/KBytes: 顯示當前系統可用的內存數值,如果經常性的可用內存小於物理內存的一半,說明系統負擔有點兒重,可以考慮增加內存。
這是我電腦的可用內存,2G的物理內存,說明也需要增加內存了。
Pages/sec、Pages Input/sec、Page Reads/sec、Page Faults/sec: 這幾個計數器在Memory和Process都有,代表整個內存和單個進程的頁面操作信息。用於分析整個系統或關注的程序使用內存的狀況。
Pages/sec: 每秒pages Input(硬頁面錯誤發生時,程序從虛擬內存讀取頁面)和Page Output(程序向虛擬內存寫入頁面)的和。
Page Faults/sec: 硬頁面錯誤次數和軟頁面錯誤次數相加的和。
Page Reads/sec: 硬頁面錯誤發生時,程序讀取虛擬內存的次數。
(三)、可能存在內存瓶頸的幾種情況
1. 如果Page Reads/sec 平均值經常性的超過5。下圖是我電腦上的計數器值,目前看來值還比較小,說明不存在內存性能瓶頸。
2. 如果Pages Input/sec比較大,平均值達到10或者更多。下圖說明不存在內存性能瓶頸。
3. 如果Pages Input/sec 除以 Page Faults/sec大於50%。將上圖的平均值與下圖的平均值進行對比,說明不存在內存性能瓶頸。
4. 如果Page Reads/sec 大於 Pages Input/sec,將圖4與圖2進行對比,說明不存在內存性能瓶頸。
說明:
1. Page Reads/sec 與Pages Input/sec的區別: 前者是指每秒讀取虛擬內存的次數,后者是指每秒從虛擬內存讀取的頁面數。
程序的代碼和數據可能存儲在工作集(A)、虛擬內存(B)、內存的其他地方(C)。從工作集(A)讀取速度最快,從虛擬內存(B)讀取速度最慢。
2. 硬頁面錯誤: 如果程序所需的數據在A中找不到,必須在B中才能找到,這種情況叫做硬頁面錯誤。
3. 軟頁面錯誤: 如果程序所需的數據在A中找不到,必須在C中才能找到,這種情況叫做軟頁面錯誤。