Red Hat Enterprise Linux 的特定資訊
作業系統的虛擬記憶體對分頁索求無度。由於這複雜性與生俱來,所以在 Red Hat Enterprise Linux 中監控記憶體相關的資源,會讓人混淆。因此,我們建議您從一些簡單直接的工具開始,參照本節的資訊做一遍。
free 指令會顯示一張簡明(有時過於陽春)的報告,讓您對記憶體與置換的使用率有個初步的了解。以下是個範例:
4.6. Red Hat Enterprise Linux 的特定資訊
作業系統的虛擬記憶體對分頁索求無度。由於這複雜性與生俱來,所以在 Red Hat Enterprise Linux 中監控記憶體相關的資源,會讓人混淆。因此,我們建議您從一些簡單直接的工具開始,參照本節的資訊做一遍。
free 指令會顯示一張簡明(有時過於陽春)的報告,讓您對記憶體與置換的使用率有個初步的了解。以下是個範例:
total used free shared buffers cached
Mem: 1288720 361448 927272 0 27844 187632
-/+ buffers/cache: 145972 1142748
Swap: 522104 0 522104
根據這十秒間的採樣數據,可用記憶體(free 欄位)稍有變動,與置換相關的 I/O(si 與 so 欄位)並不多,所以整體來說,這部電腦運作順暢。不過,以目前的記憶體使用率,它還能支援多少的額外工作,那就值得懷疑了。
當研究記憶體相關的問題時,了解 Red Hat Enterprise Linux 的虛擬記憶體子系統是如何使用系統記憶體,是絕對必要的工作。sar 指令可以用更深入的方式,檢視系統效能。
用 sar -r 指令,我們可以更進一步檢視記憶體與置換空間的使用率:
Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com) 07/22/2003
12:00:01 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached
12:10:00 AM 240468 1048252 81.34 0 133724 485772
12:20:00 AM 240508 1048212 81.34 0 134172 485600
…
08:40:00 PM 934132 354588 27.51 0 26080 185364
Average: 324346 964374 74.83 0 96072 467559
kbmemfree 與 kbmemused 欄位分別顯示記憶體的未使用與已使用空間,後面跟著的是已使用空間的百分比(%memused 欄位)。kbbuffers 與 kbcached 欄位分別顯示緩衝區與系統全域的資料快取量,單位為 KB。
使用 2.4 Linux 核心的系統(例如 Red Hat Enterprise Linux),kbmemshrd 欄位一律為零。
以上報表的每一行都為了列印方便而被裁切。底下是之前未顯示的部份,我們在最左邊加上了時間標頭,以方便閱讀:
12:00:01 AM kbswpfree kbswpused %swpused
12:10:00 AM 522104 0 0.00
12:20:00 AM 522104 0 0.00
…
08:40:00 PM 522104 0 0.00
Average: 522104 0 0.00
以置換空間的使用率來說,kbswpfree 與 kbswpused 欄位分別顯示未使用與已使用的置換空間,單位為 KB;其後的 %swpused 欄位以百分比顯示已使用的置換空間。
要更進一步知道置換空間的執行資訊,請使用 sar -W 指令。以下是執行範例:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.15 2.56
12:20:00 AM 0.00 0.00
…
03:30:01 PM 0.42 2.56
Average: 0.11 0.37
從這表上我們可以發現,平均來說,寫入置換空間的分頁(pswpin/s)只有讀取(pswpout/s)的三分之一。
要更進一步了解分頁的使用狀況,請使用 sar -B 選項:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pgpgin/s pgpgout/s activepg inadtypg inaclnpg inatarpg
12:10:00 AM 0.03 8.61 195393 20654 30352 49279
12:20:00 AM 0.01 7.51 195385 20655 30336 49275
…
08:40:00 PM 0.00 7.79 71236 1371 6760 15873
Average: 201.54 201.54 169367 18999 35146 44702
從這張表,我們可以知道每秒有多少分頁從磁碟讀入(pgpgin/s),又有多少分頁從記憶體寫進磁碟(pgpgout/s)。這些數據就像晴雨計一樣,顯示整體的虛擬記憶體活動。
然而,您可以看看其他欄位,以獲取更多資訊。Red Hat Enterprise Linux 核心把所有的分頁標示為作用中(active)與非作用中(inactive)。正如其名稱所暗示的,前者是正在使用中的分頁(例如程序或緩衝區使用的分頁);而後者則正好相反。這範例顯示正在運作中的分頁(activepg)平均為 660 MB[1]。
剩下的欄位都跟非作用中的分頁有關 — 不管是因為什麼理由,這種分頁最近都沒有被使用。inadtypg 欄位指出有多少非作用的分頁已經被標示為「骯髒的(dirty)」(被修改過的),需要被寫回磁碟中。另一方面,inaclnpg 欄位指的則是「乾淨的(clean)」為作用中分頁,不需要被寫回磁碟中。
inatarpg 欄位則是非作用清單的所需大小。這個值是由 Linux 核心所計算,讓非作用的清單能保持一定的大小,作為分頁替換用的空間。
如果要更深入了解分頁的狀態(尤其是分頁的改變狀態),請使用 sar -R 指令。底下是範例報表:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM frmpg/s shmpg/s bufpg/s campg/s
12:10:00 AM -0.10 0.00 0.12 -0.07
12:20:00 AM 0.02 0.00 0.19 -0.07
…
08:50:01 PM -3.19 0.00 0.46 0.81
Average: 0.01 0.00 -0.00 -0.00
這份 sar 報表的數據非常獨特,因為有正有負,也可能為零。當這值為正,表示此類分頁的變化率處於增加的狀態;如果為負,表示變化率正在減少。如果這個值為零,那表示這類分頁並不增加,也不減少。
在這例子中,最後的取樣顯示大約每秒增加三個未使用分頁(frmpg/s);每秒幾乎增加一個分頁快取(campg/s)。而緩衝區所使用的分頁(bufpg/s)大約是每兩秒增加一個;共享記憶體分頁(shmpg/s)則沒有任何變化。