使用 vmstat 命令確定記憶體使用情況

Davis_itpub發表於2018-06-27

vmstat 命令總結了系統中所有程式使用的總活動虛擬記憶體,以及空閒列表上實記憶體頁幀的數量。

活動的虛擬記憶體定義為虛擬記憶體中實際可以得到的工作段頁面的數量。這個數字可能大於機器中的實際頁幀數,因為一些活動的虛擬記憶體頁可能已寫出到調頁空間中。

當確定系統記憶體是否短缺或者是否需要進行某種記憶體調整時,在設定的時間間隔內執行 vmstat 命令,並檢查結果報告中的 pi 和 po 列。這兩列表明瞭每秒調頁空間頁面調入的數量和每秒調頁空間頁面調出的數量。如果這些值經常為非零值,說明可能存在記憶體瓶頸。偶爾出現的非零值不用在意,因為頁面排程是虛擬記憶體的主要原理。
# vmstat 2 10
kthr     memory             page              faults        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 1  3 113726   124   0  14   6 151  600   0 521 5533 816 23 13  7 57
 0  3 113643   346   0   2  14 208  690   0 585 2201 866 16  9  2 73
 0  3 113659   135   0   2   2 108  323   0 516 1563 797 25  7  2 66
 0  2 113661   122   0   3   2 120  375   0 527 1622 871 13  7  2 79
 0  3 113662   128   0  10   3 134  432   0 644 1434 948 22  7  4 67
 1  5 113858   238   0  35   1 146  422   0 599 5103 903 40 16  0 44
 0  3 113969   127   0   5  10 153  529   0 565 2006 823 19  8  3 70
 0  3 113983   125   0  33   5 153  424   0 559 2165 921 25  8  4 63
 0  3 113682   121   0  20   9 154  470   0 608 1569 1007 15  8  0 77
 0  4 113701   124   0   3  29 228  635   0 674 1730 1086 18  9  0 73

在上述示例輸出中,請注意輸出中的較高的 I/O 等待率以及阻塞佇列中的執行緒數。其他 I/O 活動可能會造成 I/O 等待,但是在這種特殊情況下,I/O 等待最大可能是由於與頁面空間之間的頁面調進調出造成的。

要察看系統的 VMM 是否有效能問題,請檢查 memory 和 page 下的列:

  • memory

    提供了實際和虛擬記憶體的資訊。

    • avm

      活動虛擬記憶體(avm)列代表在收集 vmstat 樣本時存在的活動虛擬記憶體頁數。預設策略為延遲頁面空間策略。在該策略下,avm 的值可能比使用的調頁空間頁面數要高。avm 統計資訊並不包含檔案頁面。

    • fre

      fre 列顯示出空閒記憶體頁面的平均數量。一個頁面是實記憶體中的 4 KB 的區域。系統維護記憶體頁面的緩衝區,稱為空閒列表。當 VMM 需要空間時可以很方便地訪問此空閒列表。VMM 保留在空閒列表上的最少頁數由 vmo 命令的 minfree 引數決定。

      當一個應用程式終止時,它所有的工作頁面會立即返回給空閒列表。然而,它的永久頁面(或檔案)仍然在 RAM 中,不會新增回空閒列表中,直到由 VMM 竊取用於其他程式為止。如果刪除相應的檔案,也會釋放其永久頁面。

      由於這個原因,fre 的值可能不表示程式可以方便使用所有實記憶體。如果需要頁幀,那與已終止應用程式相關的永久頁面將會最先移交給另一個程式。

      如果 fre 的值遠大於 maxfree 的值,那麼不太可能出現系統顛簸。系統顛簸意味著系統一直在進行頁面調進調出。然而,如果系統正在經歷顛簸,可以肯定 fre 值很小。

  • page

    關於缺頁故障和頁面排程活動的資訊。它們是一段時間間隔的平均值並以秒為單位給出。

    • re
      注: 這一欄當前不受支援。
    • pi

      pi 列詳細描述了從調頁空間調入的頁數。調頁空間是駐留在磁碟上的虛擬記憶體的一部分。當記憶體過量使用時,它用作溢位。調頁空間由用於儲存從實記憶體中竊取到的工作組頁面的邏輯卷組成。當程式訪問一個竊取頁時,產生了一個缺頁故障,這一頁必須從調頁空間讀入記憶體。

      因為硬體配置、軟體和應用程式的不同,沒有絕對的數字可以用以參考。這個欄位作為調頁空間活動的關鍵指示符。如果發生頁面調進,該頁面就一定有一個較早的頁面調出。在記憶體受限的環境下也有可能每一次頁面調進會迫使另一個頁面被竊取而頁面調出。

    • po

      po 一欄顯示了調出到調頁空間的頁面數(速率)。無論什麼時候竊取工作儲存器的一頁,如果它仍未駐留在調頁空間中或已被修改,那它會被寫入調頁空間。如果不被再次訪問,它會留在頁面排程裝置中直到程式終止或放棄空間。如果包含在出故障頁面中的後續地址引用導致缺頁故障,那麼這些頁面將會由系統個別調進。當一個程式正常終止,任何分配給該程式的調頁空間將被釋放。如果系統讀入大量的永久頁面,您會發覺 po 欄裡增加了而在 pi 欄裡沒有相應增加。這並不一定會造成系統顛簸,但可以保證對於應用程式資料存取模式的調查。

    • fr

      在一定時間間隔內根據頁面替換演算法每秒所釋放的頁數。當 VMM 頁面替換例程掃描頁面幀表(Page Frame. Table,PFT)時,它使用一些條件選取要竊取的頁面以插入到可用記憶體幀的空閒列表中。該條件包含了兩種頁面,工作(計算的)和檔案(永久的)頁面。就因為頁面已經釋放,並不意味著發生了任何 I/O。例如,如果某個永久儲存(檔案)頁面尚未修改,它就不會被寫回磁碟。如果 I/O 不是必需的,那麼要求最小的系統資源來釋放頁面。

    • sr

      在一定時間間隔內根據頁面替換演算法每秒所檢查的頁面數。頁面替換演算法在可以竊取足夠的頁面以滿足頁面替換執行緒的需要之前可能不得不掃描許多頁面幀。sr 值比 fr值高得越多,頁面替換演算法查詢要竊取的合格頁面就越困難。

    • cy

      時鐘演算法中每秒的週期數。VMM 使用一種叫時鐘演算法的技術來選擇要替換的頁面。這種技術利用了每一個頁面的訪問位來指示哪些頁最近曾被使用(訪問)過。呼叫頁面竊取程式例程時,它遍歷整個 PFT,檢查每一頁的訪問位。

      cy 一欄顯示了每秒頁面替換程式碼掃描了 PFT 多少次。因為插入空閒列表可以不需要完全掃描 PFT,並且因為所有的 vmstat 欄位報告為整數,這一欄位通常為 0。

確定系統的適當 RAM 數量的一種方法是檢視 vmstat 命令報告的 avm 的最大值。將該數字乘以 4K 得到位元組數,然後將其與系統的 RAM 位元組數比較。理想情況下,avm 應該小於總 RAM。如果不是,可能會出現一些虛擬記憶體頁面排程量。有多少頁面排程發生取決於兩個值之間的差值。記住,虛擬記憶體的概念是提供給我們定址大於實記憶體容量的能力(一些在 RAM 記憶體中,而另一些在調頁空間中)。但是如果虛擬記憶體遠大於實記憶體,可能造成過度的頁面排程,從而導致延時。如果 avm 小於 RAM,那麼當 RAM 中填滿檔案頁時就會引起調頁空間的頁面排程。這種情況下,調整 minpermmaxperm 和 maxclient 的值可以減少調頁空間的頁面排程量。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156799/,如需轉載,請註明出處,否則將追究法律責任。

相關文章