用 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 量的测量。
大小
进程数据区的虚拟大小(在调页空间),用千字节表示(在其他标志中用 SZ 来表示)。 此数字等于进程的已接触时间 4 的工作段页面数。 如果某些工作段页面当前已调出,那么此数字大于正在使用的实内存量。 SIZE 包含了私有段的页面和进程的共享库数据段。
RSS
进程实内存(驻留集合)的大小,用千字节表示。 此数字等于内存时间 4 中工作段和代码段页面数的总和。 请记住,代码段页面是在程序的所有当前正在运行的实例之间共享的。 如果 26 个 ksh 进程正在运行,只有 ksh 可执行程序的任何给定页面的一份副本可位于内存中,但是 ps 命令会将代码段的大小作为每个 ksh 程序的实例的 RSS 的一部分报告。
TSIZ
文本(共享程序)映像的大小。 这是可执行文件的文本区域的大小。 可执行程序文本区的页面是只能在用到它们时带入内存的,就是说,转移到内存或从内存装入。 这个数字只表明了可以装入的文本量的上限。 TSIZ 的值并不反映实内存的使用情况。 对某个可执行程序执行 dump -ov 命令(例如,dump -ov /usr/bin/ls)也可看到此 TSIZ 值。
TRS
文本驻留集合(实内存)的大小。 这是代码段页数乘以 4。 此数字会夸大正在运行多个实例的程序的内存使用。 TRS 的值可能比 TSIZ 的值要高是因为其他页可能包含在代码段中,例如 XCOFF 头文件和装入程序段。
%MEM
由内存中工作段数和代码段页数的和的 4 倍(即 RSS 的值)计算得到,再除以机器中正在使用的实内存的大小(单位 KB),再乘以 100,舍入到最接近百分点的数。 这个值旨在表明了进程使用的实内存。 但不巧的是,就像 RSS,它夸大了一个进程与其他进程共享程序文本的开销。 而且,四舍五入到最接近的百分点,使得系统中所有 RSS 值小于 0.005 乘以数据内存大小的进程的 %MEM 值为 0.0。
注: ps 命令不指示共享内存段或内存映射段所耗用的内存。 因为许多应用程序使用共享内存或内存映射段,svmon 命令是一个更好的查看这些段的内存使用情况的工具。