LoaRunner性能測試系統學習教程:內存監控(4)

上期我們講到LoaRunner性能測試CPU監控,這期我們講LoaRunner性能測試內存監控。

內存監控

在分析內存監控技術之前,首先需要了解一些內存相關的概念和內存分析的原理,通常所以說的內存都是物理層面的內存,但是操作系統要是使用這些內存就需要分頁(pages),將內存分成一頁一頁的,這就是虛擬內存(VMM虛擬內存管理器)的概念。

VMM在處理虛擬地址空間時,會將虛擬地址空間劃分成段,每段的大小是256MB,它是虛擬內存地址空間中一個鄰接的部分,數據對象可以映射到該空間。進程對數據的尋址能力按段(或對象)的級別進行管理,所以段既可以在進程間共享,也可以進行專門維護,如進程可以共享代碼段但擁有獨立和專用的數據段。

虛擬內存段劃分成固定大小的單元,把這種單元叫做頁,缺省值頁面大小為4096字節,但有一些系統也支持大頁面,通常只能通過系統調用shmat訪問。段中的每頁在需要之前可位於內存(RAM)中,或存儲在磁盤上,同樣,實內存也可以劃分成4096字節的頁面幀,VMM的角色是管理分配實內存頁面幀並且解析程序對虛擬內存頁面的引用,這些頁面當前不在實內存中或還不存在(例如,當進程第一次引用其數據段的某一頁時),在任何定時刻使用的虛擬內存數量可能比實內存大,所以VMM必須將餘量存儲在磁盤上。

SWAP又被稱為交換分區,它的作用是在物理內存使用完之後,將磁盤空間(也就是SWAP 分區)虛擬成內存來使用。它和Windows系統的交換文件作用類似,但是它是一段連續的磁盤空間,並且對用戶不可見,但其訪問速度遠遠慢於實內存的訪問速度。

Buffers/cache: cache是將最近使用過的文件放在內存中,下次需要訪問的時候就直接讀內存中的內容,而不需要再次訪問硬盤。這樣就提高了應用程序的效率。Buffers是指當應用程序需要寫數據到磁盤時,耗時會比較長,系統讓這些數據暫時保存在內存中,程序繼續執行其它操作。後續的一些時間點,把內存上的數據寫到磁盤上。

Active/inactive:活動和非活動內存,當前被process使用內存為活動內存,已經分配但是未被使用內存為非活動內存。

Kernel Usage of Memory:在操作系統過程中,內核也需要使用內存,該值記錄內核使用內存的情況。

監控內存使用情況的工具通常有:vmstat和ps。

Vmstat命令總結了系統中所有進程使用的總活動虛擬內存,以及空閒列表上實內存頁幀的數量,活動的虛擬內存定義為虛擬內存中實際可以得到的工作段頁面的數量。

當確定內存是否短缺或者是需要進行某種內存調整時,在一組時間間隔裡輸入vmstat命令,檢查結果報告中的pi和po列,這兩列表明瞭每秒調頁空間頁面調入的數量和每秒調頁空間頁面調出的數量。如果這些值經常為非零值,說明可能存在內存瓶頸,偶爾出現非零值不用在意,因為頁面調度是虛擬內存的主要原理。

vmstat 2 10報告如圖所示。

LoaRunner性能測試系統學習教程:內存監控(4)

從圖中到可以看出內存中buffer和cache 分配情況,其中free是指空閒的內存,一個頁面是實內存4KB的區域,系統維護內存頁面的緩衝區,稱為空閒列表,當VMM需要空間時可以很方便地訪問此空閒列表。一般情況下如果free的值較大時swap的值則顯示為零,因為當內存夠用時就沒有必須使用交換分區了,所以看到swap欄中的si/so兩列的值也為零。

si:The rate of memory (in KB/s) that has been swapped in from disk during the last sample。

自上次取樣以來從磁盤交換進來內存比特率。

so: The rate of memory (in KB/s) that has been swapped out to disk during the last sample。

自上次取樣以來交換到磁盤的內存比特率。

vmstat –s命令向標準輸出發送摘要報告,該報告從系統初始化開始,以絕對計數表示,而不是基於某個時間間隔。在性能測試過程中在負載測試之前先使用該命令保存一份報告,等負載測試完成後再使用該命令監控,並將保存監控結果,比較這兩份報告的差異。

vmstat -s報告如圖所示。

LoaRunner性能測試系統學習教程:內存監控(4)

該報告詳細列出了內存的使用數據,其中頁面調進和頁面調出的數量代表虛擬內存從頁面空間和文件空間調進或調出頁面的活動。

使用ps命令也可以確定內存使用情況,通過ps命令可以監視個別進程對內存的使用,psvPID命令為個別進程提供了最全面的內存相關統計信息的報告,主要報告的內容包括以下幾個方面:

缺頁故障;

工作段已經達到的大小;

內存中工作段和代碼段的大小;

文本段的大小;

駐留集的大小;

進程合作的實內存百分比;

如實例psv,報告如圖所示。

LoaRunner性能測試系統學習教程:內存監控(4)

結果報告中重要列描述如下:

-PGIN

缺頁故障引起的頁面調進的數目,操作系統把所有I/O歸於缺頁故障,所以該項主要是I/O量的測量。

-SIZE

進程數據區的虛擬大小(在調頁空間),用千字節表示(在其它標誌中用SZ來表示),這個數目等於進程可用的工作段頁數目的4倍。如果一些工作段頁當前被調出,這個數字將大於所使用的實內存量,SIZE包含了私有段的頁面和進程的共享庫數據段。

-RSS

進程實內存(駐留集合)的大小,用千字節表示。這個數值等於內存中的工作段頁和代碼段頁數和的4倍,代碼段頁是為所有當前程序運行的實例所共享的,如果26個ksh進程正在運行,那麼只能是ksh可執行程序的任何給定頁面的一份副本位於內存中。

-TSIZ

文本(共享程序)映像的大小,這是可執行文件的文本區域的大小,可執行程序文本區的頁面是隻能在用到時帶入內存中的,即轉移到內存或從內存裝入。這個值表明可以裝入的文本量的上限,TSIZ的值並不反映實內存的使用情況。

-TRS

文本駐留集合(實內存)的大小,這個值等於進程可用的代碼段頁數值的4倍。

%MEM

由內存中工作段和代碼段頁和的4倍(即RSS的值),再除以機器實內存的大小(單位為KB),再乘以100,四捨五入到最接近的百分點,這個指表明了進程使用的實內存,它不會誇大一個進程與其它進程共享程序文本的開銷。

注意:ps命令並不表明共享內存段或內存映像段消耗的內存,因為許多應用程序使用共享內存或內存映像段。

如果需要獲得物理內存和swap交換分區的詳細信息可以使用procinfo命令。

LoaRunner性能測試系統學習教程:內存監控(4)


分享到:


相關文章: