使用 ps 指令來判斷記憶體用量

ps 指令也可以用來監視個別處理程序的記憶體用量。

ps v PID 指令可提供個別處理程序之記憶體相關統計資料的最綜合性報告,例如:

  • 尋頁錯失
  • 已接觸的工作區段大小
  • 記憶體中工作區段及程式碼區段的大小
  • 文字區段大小
  • 常駐集的大小
  • 此處理程序所使用的實際記憶體百分比
範例如下:
# ps v
   PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
 36626  pts/3 A     0:00    0   316   408 32768    51    60  0.0  0.0 ps v

產生的 ps 報告上最重要的直欄說明如下:

PGIN
尋頁錯失導致的頁進數。 由於所有 I/O 都分類為尋頁錯失,因此基本上這是 I/O 磁區的測量。
SIZE
處理程序資料區段的虛擬大小 (分頁空間中) ,以 KB 為單位 (由其他旗標顯示為 SZ)。 此數目等於程序中已接觸的工作區段頁數乘以 4。 如果目前已頁出部分工作區段頁面,則此數目會大於所使用的實際記憶體數量。 SIZE 包括處理程序的專用區段及共用程式庫資料區段中的頁面。
rss
處理程序的實際記憶體 (常駐集) 大小 (以 KB 為單位)。 此數字等於記憶體中工作區段及字碼區段頁數乘以 4 的總和。 請記住,程式的所有目前執行中實例之間會共用程式碼區段頁面。 如果 26 ksh 處理程序在執行中,則 ksh 可執行程式的任何給定頁面只有一個副本會在記憶體中,但 ps 指令會將該程式碼區段大小報告為 ksh 程式每一個實例的 RSS 的一部分。
TSIZ
文字 (共用-程式) 影像的大小。 這是執行檔的文字區段大小。 可執行程式的文字區段頁面只有在接觸 (即分支到或從載入) 時才會帶入記憶體。 此數字僅代表可載入之文字數量的上限。 TSIZ 值不會反映實際記憶體用量。 您也可以對可執行程式 (例如 dump -ov /usr/bin/ls) 執行 dump -ov 指令來查看此 TSIZ 值。
TRS
文字的常駐集 (實際記憶體) 大小。 這是字碼區段頁數乘以 4。 此數字會誇大多個實例正在執行的程式的記憶體用量。 TRS 值可以高於 TSIZ 值,因為程式碼區段中可能包含其他頁面,例如 XCOFF 標頭和載入器區段。
%MEM
計算方式為記憶體乘以 4 (即 RSS 值) ,除以機器中實際使用記憶體的大小 (以 KB 為單位,乘以 100) ,以四捨五入至最接近的完整百分比點。 此值會嘗試傳達處理程序所使用的實際記憶體百分比。 不幸的是,像 RSS 一樣,它傾向於誇大與其他程序共用程式文字的程序的成本。 此外,四捨五入至最接近的百分比點會導致系統中 RSS 值低於實際記憶體大小 0.005 倍的所有處理程序具有 0.0的 %MEM。
附註: ps 指令不會指出共用記憶體區段或記憶體對映區段所耗用的記憶體。 因為許多應用程式使用共用記憶體或記憶體對映區段,所以 svmon 指令是檢視這些區段的記憶體用量的較佳工具。