Solaris 上的进程监控

Solaris 上的进程监控
$ 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

相关内容