$ 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
。