$ prstat -t
NPROC USERNAME SWAP RSS MEMORY TIME CPU
164 oracle 5446M 5445M 8.3% 13:47:50 1.6%
52 root 576M 728M 1.1% 42:29:50 1.0%
1 noaccess 300M 273M 0.4% 0:20:54 0.0%
1 smmsp 2192K 9912K 0.0% 0:00:06 0.0%
1 nagios 584K 4256K 0.0% 0:01:54 0.0%
6 daemon 8360K 11M 0.0% 0:12:39 0.0%
Total: 225 processes, 839 lwps, load averages: 1.68, 1.58, 1.46
prstat
以上是已安裝的 Solaris Box 上的命令輸出Oracle 11g
。然而, Solaris 機器上的 RAM64GB
似乎在交換 oracle 進程5.5 GB
,這正常嗎?如果有任何有關獲取更細粒度資訊的建議,我們將不勝感激!
答案1
prstat
將交換定義為:
SWAP The sum of swap reservations of the associated processes for each user, project, task, or zone. This counts shared memory only once for each user, project, task, or zone. Swap is reserved when anonymous memory is allo- cated or files are mapped private. The value of swap is expressed in kilobytes (K), megabytes (M), or gigabytes (G).
(從Solaris 10 上的 prstat(1M),參見開啟 Solaris prstat)
基本上,這意味著該值包括當前尚未存取但已映射到進程位址空間的記憶體。這樣的記憶體將來可能會被使用,因此可能會被換出(即真正寫入交換分割區)。因此,在建立初始映射時,Solaris prstat 將它們計為 SWAP。
這並不意味著這個記憶體量實際上已寫入或必須寫入 SWAP 分區。
這些交換保留、匿名記憶體和映射檔案是虛擬記憶體Solaris 系統。
另請注意,您正在使用-t
- 因此範例中顯示的值不是 oracle 進程的值,而是在 user 下運行的所有進程的聚合值oracle
。
使用某些 Solaris 連接埠可以top
提供更有用的信息,即 SIZE(或 VMEM)和 RES(或 RSS)值。 VMEM 包含所有虛擬記憶體頁面,RSS 是常駐大小。這樣,關係 VMEM >= RSS 為真(對於 prstat RSS 可能 > SWAP,即 RSS 不包含在 SWAP 中)。
如果您關心實際的交換活動,您可以使用類似的東西vmstat
。