查看内存使用

在操作系统的运行过程中,管理员常常需要了解系统内存的使用情况,并以此为依据来指导对系统性能的调优,使系统和应用程序运行在最佳的状态。查看内存使用,我们最常用的命令是vmstatpssvmon

使用 vmstat 命令确定内存使用情况

vmstat命令总结了系统中所有进程使用的总活动虚拟内存,以及空闲列表上实内存页面的数量。我们把“活动的虚拟内存”定义为虚拟内存中实际可以得到的工作段页面的数量。这个数字可能大于机器中的实际页面数,因为一些活动的虚拟内存页可能已写出到调页空间中。

要确定内存是否短缺或者是否需要进行某种内存调优时,运行 vmstat 命令来显示一组时间间隔里系统的状况,检查结果报告中的 pi 和 po 列。这两列表明了每秒调页空间页面调入的数量和每秒调页空间页面调出的数量。如果这些值经常为非零值,说明可能存在内存瓶颈。偶尔出现的非零值不用在意,因为页面调度是虚拟内存管理的主要操作。

# vmstat 2 10

kthr    memory             page              faults        cpu

----- ----------- ------------------------------------ -----------

r  b  avm   fre  re  pi  po fr   sr  cy in   sy  cs us sy id wa

1  3 113726  124   0  14   6151  600  0 521 5533 816 23 13  7 57

0  3 113643  346   0   2  14208  690  0 585 2201 866 16  9  2 73

0  3 113659  135   0   2   2108  323  0 516 1563 797 25  7  2 66

0  2 113661  122   0   3   2120  375  0 527 1622 871 13  7  2 79

0  3 113662  128   0  10   3134  432  0 644 1434 948 22  7  4 67

1  5 113858  238   0  35   1146  422  0 599 5103 903 40 16  0 44

0  3 113969  127   0   5  10153  529  0 565 2006 823 19  8  3 70

0  3 113983  125   0  33   5153  424  0 559 2165 921 25  8  4 63

0  3 113682  121   0  20   9154  470  0 608 1569 1007 15  8  0 77

0  4 113701  124   0   3  29228  635  0 674 1730 1086 18  9  0 73

在上述示例输出中,请注意输出中的较高的 I/O 等待率以及阻塞队列中的线程数。当然,任何 I/O 活动都可能会造成 I/O 等待,但是在这种特殊情况下,I/O 等待最大可能是由于与页面空间之间的页面调进调出造成的。

要察看系统的 VMM 是否有性能问题,请检查 memory 和 page 下的列:

提供了实际和虚拟内存的信息。

  • avm

活动虚拟内存 avm 列显示在收集 vmstat 样本时存在的活动虚拟内存页面数。缺省策略为延迟页面空间策略。在该策略下,avm 的值可能比使用的调页空间页面数要高。avm 统计信息并不包含文件页面。

  • fre

fre 列显示的是空闲内存页面的平均数量。一个内存页面是实内存中大小为4 KB 的区域。系统维护内存页面的缓冲区,称为空闲列表。当 VMM 需要空间时可以很方便地访问此空闲列表。VMM 在空闲列表上保存的最少页数由 vmo 命令的 minfree 参数决定。

当一个应用程序终止时,它所有的工作页面会立即返回给空闲列表。然而,它的持久页面(或文件)仍然在 RAM 中,不会添加回空闲列表中,直到由 VMM 窃取用于其它程序为止。如果删除相应的文件,也会释放其持久页面。

由于这个原因,fre 的值可能不表示进程可以方便使用所有实内存。如果需要页面,那与已终止应用程序相关的持久页面将会最先移交给另一个程序。

如果 fre 的值远大于 maxfree 的值,那不太可能出现系统颠簸。系统颠簸意味着系统一直在进行页面调进调出。然而,如果系统正在经历抖动,可以肯定 fre 值很小。

  • 交换页面

显示和缺页故障和页面调度活动相关的信息。它们显示一段时间间隔的平均值,并以秒为单位给出。

  • re

注:

这一栏当前不受支持。

  • pi

pi 列详细描述了从调页空间调入的页数。调页空间是驻留在磁盘上的虚拟内存的一部分。当内存过量使用时,它用作溢出。调页空间由用于存储从实内存中窃取到的工作段页面的逻辑卷组成。当进程访问一个窃取页时,产生了一个缺页故障,这一页必须从调页空间读入内存。

因为硬件配置、软件和应用程序的不同,没有绝对的数字可以用以参考。这个字段是调页空间活动的关键指示符。如果发生页面调进,该页面就一定在较早的的时候有一个页面调出动作。在内存受限的环境下也有可能每一次页面调进会迫使另一个页面被窃取从而页面调出。

  • po

po 一栏显示了调出到调页空间的页面数(速率)。无论什么时候窃取工作段内存的一页,如果它仍未驻留在调页空间中或已被修改,那它会被写入调页空间。如果不被再次访问,它会留在页面调度设备中直到进程终止或放弃空间。如果包含在出故障页面中的后续地址引用导致缺页故障,那么这些页面将会由系统个别调进。当一个进程正常终止,任何分配给该进程的调页空间将被释放。如果系统读入大量的持久页面,您会发觉 po 栏里增加了而在 pi 栏里没有相应增加。这并不一定会造成系统颠簸,但可以保证对于应用程序数据存取模式的访问。

  • fr

在一定时间间隔内根据页面替换算法每秒所释放的页数。当 VMM 页面替换例程扫描页面帧表(Page Frame Table,PFT)时,它根据一些条件来选取要窃取的页面以插入到可用内存帧的空闲列表中。该条件包含了两种页面,工作(计算的)和文件(持久的)页面。就因为页面已经释放,并不意味着发生了任何 I/O。例如,如果某个持久存储(文件)页面尚未修改,它就不会被写回磁盘。如果 I/O 不是必需的,则要求最小的系统资源来释放页面。

  • sr

在一定时间间隔内根据页面替换算法每秒所检查的页面数。页面替换算法在可以窃取足够的页面以满足页面替换线程的需要之前,可能不得不扫描许多页面帧。sr 值比 fr 值高得越多,页面替换算法查找要窃取的合格页面就越困难。

  • cy

时钟算法中每秒的周期数。VMM 使用一种叫时钟算法的技术来选择要替换的页面。这种技术利用了每一个页面的访问位来指示哪些页最近曾被使用(访问)过。调用页面窃取程序例程时,它遍历整个 PFT,检查每一页的访问位。

cy 一栏显示了每秒页面替换代码扫描了 PFT 多少次。因为插入空闲列表可以不需要完全扫描 PFT,并且因为所有的vmstat 字段报告为整数,这一字段通常为 0。

确定一个系统的适当 RAM 数量的一种方法是察看 avm 字段的最大值,该字段由 vmstat 命令报告。将该数字乘以 4K 得到字节数,然后将其与系统的 RAM 字节数比较。理想情况下,avm 应该比总 RAM 数小。如果不是,可能会出现一些虚拟内存页面调度量。有多少页面调度发生取决于两个值之间的差值。记住,虚拟内存的概念是提供给我们寻址大于实内存容量的能力(一些在 RAM 内存中,而另一些在调页空间中)。但是如果虚拟内存远大于实内存,可能造成过度的页面调度,从而导致延时。如果 avm 小于 RAM,那么当 RAM 中充满持久文件页时也会引起调页空间的页面调度。这种情况下,调整minpermmaxpermmaxclient 的值可以减少调页空间的页面调度量。

vmstat -I 命令

vmstat -I命令显示其它信息,例如每秒调进的文件和每秒调出的文件(即那些不是调页空间调进或调页空间调出的所有 VMM 调进调出)。使用这个标志不会报告 re 和 cy 栏。

vmstat -s 命令

摘要选项 -s 向标准输出发送摘要报告,该报告从系统初始化开始,以绝对计数表示,而不是基于某个时间间隔。推荐使用该参数的方法是在有工作负载之前运行该命令,保存输出,在有工作负载后再次运行此命令,并保存输出。下一步就是确定两组输出间的差异。自动实现该操作的awk 脚本名为 vmstatit,详细内容如下:

vmstat -s >temp.file   # cumulative counts before the command
time $1                # command under test
vmstat -s >>temp.file  # cumulative counts after execution
grep "pagi.*ins" temp.file >>results   # extract only the data
grep "pagi.*outs" temp.file >>results  # of interest

# vmstat -s

3231543 total address trans. faults

63623 page ins

383540 page outs

149 paging space page ins

832 paging space page outs

0 total reclaims

807729 zero filled pagesfaults

4450 executable filled pages faults

429258 pages examined by clock

8 revolutions of the clock hand

175846 pages freed by the clock

18975 backtracks

0 lock misses

40 free frame waits

0 extend XPT waits

16984 pending I/O waits

186443 start I/Os

186443 iodones

141695229 cpu context switches

317690215 device interrupts

0 software interrupts

0 traps

55102397 syscalls

总结里的页面调进和页面调出的数量代表虚拟内存从交换页面空间和文件空间调进或调出页面的活动。调页空间的页面调进调出代表整个页面空间。

用 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 的值并不反映实内存的使用情况。这个 TSIZ 值也可以通过对可执行程序执行dump-ov 命令查看到(例如:dump -ov /usr/bin/ls)。

TRS

文本实内存(驻留集合)的大小。这个数目等于进程可用的代码段页的数目的 4 倍。当程序有多个运行实例时,这个数字夸大了内存的使用情况。TRS 的值可能比 TSIZ 的值要高是因为其它页可能包含在代码段中,例如 XCOFF 头文件和装入程序段。

%MEM

由内存中工作段和代码段页的和的 4 倍计算得到(即,RSS 的值),再除以机器实内存的大小(单位 KB),再乘以 100,四舍五入到最接近的百分点。这个值旨在表明了进程使用的实内存。但不巧的是,就像 RSS,它夸大了一个进程与其它进程共享程序文本的开销。而且,四舍五入到最接近的百分点,使得系统中所有 RSS 值小于 0.005 乘以数据内存大小的进程的 %MEM 值为 0.0。

注:

ps命令并不表明共享内存段或者内存映像段消耗的内存。因为许多应用程序会使用共享内存或内存映射段,所以svmon 命令是一个更好的查看这些段的内存使用情况的工具。

svmon 命令

svmon命令提供了一个更加深入的内存使用情况的分析。比起 vmstatps 命令来说,它带有更多信息量,并且更具有强制性。svmon 命令捕获一个当前内存状态的快照。然而,这并不是一个真正的快照,因为它运行在用户级别,即中断允许状态。

要确定 svmon 是否已安装并可用,运行以下命令:

# lslpp -lI bos.perf.tools

svmon命令只能由 root 用户执行。

如果使用时间间隔(-i 选项),统计信息将会一直显示直到命令被杀死或者直到达到了时间间隔的数值(可以在该时间间隔后指定)。

可以使用下列不同的报告来分析所显示的信息:

全局(-G)

显示描述整个系统中实内存和调页空间的使用的统计信息。

进程(-P)

显示指定活动进程的内存使用情况。如果不提供进程列表,则内存使用统计信息显示所有活动的进程。

段(-S)

显示指定段的内存使用情况。如果不提供段的列表,则内存使用统计信息显示所有定义的段。

段的详细信息(-D)

显示指定段的详细信息。

用户(-U)

显示指定登录名的内存使用统计信息。如果不提供登录名列表,则显示所有定义的登录名的内存使用统计信息。

命令(-C)

显示某个命令名指定的进程的内存使用统计信息。

工作负载管理类(-W)

显示指定的工作负载管理类的内存使用统计信息。如果不提供类,则显示所有定义的类的内存使用统计信息。

帧(-F)

显示帧的信息。不指定帧的号码时,会报告使用的内存的百分比。如果在系统上定义了一个大的页池,那么将报告大页内存使用百分比。而当指定了帧号时,会报告该帧的信息。

层(-T)

显示层的信息,例如层号,使用 -a 标志时的超类名和实内存中属于层的段的总页数。

使用中的内存量

打印全局的统计信息,要用 -G 标志。在以下示例中,以一秒钟的时间间隔重复两次。

# svmon -G -i 1 2

size      inuse       free        pin   virtual

memory     1048576     425275     623301     66521     159191

pg space    262144      31995

work       pers       clnt     lpage

pin          46041          0          0     20480

in use      129600     275195          0          0

pgsize       size       free

lpage pool   16 MB          5          5

size      inuse       free        pin   virtual

memory     1048576     425279     623297     66521     159195

pg space    262144      31995

work       pers       clnt     lpage

pin          46041          0          0     20480

in use      129604     275195          0          0

pgsize       size       free

lpage pool   16 MB          5          5

请注意,如果在系统上没有配置大页池,那么将不会显示大页池内存。

结果 svmon 报告中的列描述如下:

memory

描述实内存使用情况的统计信息,显示为 4KB 大小的页。

size

整个内存的大小,以 4KB 页计。

inuse

RAM 中进程使用的页数加上属于终止进程但仍驻留在 RAM 中的持久页面数。这个值等于总内存大小减去空闲列表中的页数。

free

空闲列表中页面的数量。

pin

锁定在RAM 的页面的数量。(一个锁定的页面就是一直驻留在 RAM 中而不能调出的页面)。

virtual

在进程虚拟空间中分配的页数。

pg space

描述调页空间使用情况的统计信息,以 4KB 大小的页显示。该数据只有当不使用 -r 标志时才会报告。报告的值是所使用的实际调页空间页面数,这表明这些页面调出到了调页空间中。它与 vmstat 命令的不同在于 vmstat 命令的 avm 一栏显示的是已访问但不一定调出的虚拟内存。

size

总调页空间的大小,以 4KB 页计。

inuse

分配页的总数。

pin

包含锁定页面的实内存子集的详细统计信息,以 4KB 帧显示。

work

锁定在RAM 中的工作页面的数量。

pers

锁定在RAM 中的持久页面数量。

clnt

锁定在RAM 中的客户机页面的数量。

lpage

只有当系统上配置了大页时才显示。用作锁定在 RAM 中的大页的 4 KB 页数。

in use

正在使用的实内存子集的详细统计信息,以 4KB 帧显示。

work

RAM 中工作页面的数量。

pers

RAM 中持久页面的数量。

clnt

RAM 中客户机页面的数量(客户机页面就是一个远程文件页面)。

lpage

只有当系统上配置了大页时才显示。用作锁定在 RAM 中的大页的 4 KB 页数。

lpage pool

只有当系统上配置了大页时才显示。关于大页内存池的详细统计信息。

pgsize

大页的大小,以兆字节(MB)计。

size

配置的大页数。

free

可供使用的大页数。

在示例中,总内存大小有 1048576 页。将这个数乘以 4096 就是总实内存的大小(以字节计)(4 GB)。其中 425275 页正在使用,而空闲列表中有 623301 页,锁定在 RAM 中的有 66521 页。在所有正在使用的页中,RAM 中有 129600 页工作页面,275195页持久页面和 0 页客户机页面。这三个部分(如果您包括大页,则为四个部分)的总和等于 memory 部分中 inuse 一栏的数值。pin 部分将锁定的内存大小划分为工作、持久、客户机以及 lpage(有时)四类。它们的和等于 memory 部分中的 pin 一栏的值。调页空间总共有 262144 页(1 GB),其中有31995 页正在使用。memory 中的 inuse 一栏通常要比 pg space 中的 inuse 一栏要大,因为当一个程序完成后,文件页面占用的内存不会释放,而调页空间分配则会释放内存。

进程的内存使用情况

svmon -P命令显示了当前正在系统上运行的所有进程的内存使用统计信息。下面是一个例子:

# svmon -P

-------------------------------------------------------------------------------

Pid                        Command        Inuse        Pin     Pgsp  Virtual 64-bit Mthrd LPage

16264 IBM.ServiceRM    10075     3345    3064    13310      N    Y     N

PageSize      Inuse        Pin       Pgsp   Virtual

4 KB      10075       3345       3064     13310

16 MB          0          0          0          0

Vsid      Esid TypeDescription              LPage  Inuse  Pin Pgsp Virtual

f001e         d work shared library text          -  4857     0   36 6823

0         0 work kernel seg                   -   4205 3335 2674  5197

b83f7         2 work processprivate              -    898    2  242  1098

503ea         f work shared librarydata          -     63    0   97   165

c8439         1 pers code,/dev/hd2:149841         -    28     0    -    -

883f1         - work                              -     21    8   14    26

e83dd         - pers/dev/hd2:71733               -     2     0    -    -

f043e         4 work shared memorysegment        -      1    0    1     1

c0438         - pers large file/dev/hd9var:243   -      0    0    -     -

b8437         3 mmap mapped to sida03f4          -      0    0    -     -

583eb         - pers large file/dev/hd9var:247   -      0    0    -     -

-------------------------------------------------------------------------------

Pid                        Command        Inuse        Pin     Pgsp  Virtual 64-bit Mthrd LPage

17032IBM.CSMAgentR     9791     3347    3167    12944      N    Y     N

PageSize      Inuse        Pin       Pgsp   Virtual

4 KB       9791       3347       3167     12944

16 MB          0          0          0          0

Vsid     Esid Type Description             LPage  Inuse   Pin Pgsp Virtual

f001e         d work shared librarytext          -   4857    0   36  6823

0         0 work kernel seg                   -   4205 3335 2674  5197

400        2 work process private             -    479     2 303   674

38407         f work sharedlibrary data          -    120    0  127   211

a83f5         1 pers code,/dev/hd2:149840         -    99     0    -    -

7840f         - work                              -     28   10   27    39

e83dd         - pers/dev/hd2:71733               -      2    0    -     -

babf7         - pers/dev/hd2:284985              -      1    0    -     -

383e7         - pers large file/dev/hd9var:186   -      0    0    -     -

e03fc         - pers large file/dev/hd9var:204   -      0    0    -     -

f839f         3 mmap mapped to sid5840b          -      0    0    -     -

[...]

该命令输出详细描述了每个进程的全局内存使用情况,以及每个报告的进程所使用的每个段的内存使用详细情况。缺省的排序规则是按照虚拟页计数的降序。您可以通过使用svmon 命令与 -u-p-g-v 标志来更改排序规则。

要获得系统上使用内存的前 15 个进程摘要,请使用以下命令:

# svmon -Pt15 | perl -e'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'

-------------------------------------------------------------------------------

Pid                        Command        Inuse        Pin     Pgsp  Virtual 64-bit Mthrd LPage

16264IBM.ServiceRM    10075     3345    3064    13310      N    Y     N

17032 IBM.CSMAgentR     9791    3347     3167    12944     N     Y     N

21980 zsh               9457     3337    2710    12214      N    N     N

22522 zsh               9456     3337    2710    12213      N    N     N

13684 getty             9413     3337    2710    12150      N    N     N

26590 perl5.8.0         9147     3337    2710    12090      N    N     N

7514 sendmail          9390     3337    2878    12258      N    N     N

14968 rmcd              9299     3340    3224    12596      N    Y     N

18940 ksh               9275     3337    2710    12172      N    N     N

14424 ksh               9270     3337    2710    12169      N    N     N

4164 errdemon          9248     3337    2916    12255      N    N     N

3744 cron              9217     3337    2770    12125      N    N     N

11424 rpc.mountd        9212     3339    2960    12290      N    Y     N

21564 rlogind           9211     3337    2710    12181      N    N     N

26704 rlogind           9211     3337    2710    12181      N    N     N

Pid 16264 是消耗内存最多的进程标识。Command 表示命令名,这里是 IBM.ServiceRM。Inuse 一栏显示 10075 页,它是进程使用的段在实内存中的总页数。每一页大小为 4 KB。Pin 一栏显示 3345 页,它是进程使用的段中锁定的总页数。Pgsp 一栏显示 3064 页,它是进程使用的调页空间总页数。Virtual 一栏(进程虚拟空间中的总页数)显示 13310 页。在配置有大页面的系统上也指出了大页面消耗。

细节区域显示了摘要区域中显示的每个进程的每一段的信息。这包括虚拟 Vsid 和有效 Esid 段标识。Esid反映了用于访问相应页的段寄存器。还显示了段的类型及其描述,该描述为段的文本性描述,包括卷名以及持久段的文件索引节点。该报告还详细描述了段是否使用大页面 LPage、RAM 中的页数Inuse、RAM 中的锁定页数 Pin、调页空间中的页数 Pgsp 以及虚拟页数 Virtual。

您甚至可以使用更多选项来获取更多详细信息。-j 选项显示持久段的文件的路径。-l 选项提供关于段的更多详细信息,-r 选项显示每个段使用的内存范围。以下是 svmon 命令带 -l-r-j 选项的示例:

# svmon -S f001e 400 e83dd -l -r -j

Vsid      Esid TypeDescription              LPage  Inuse  Pin Pgsp Virtual

f001e         d work sharedlibrary text          -   4857    0   36  6823

Addr Range:0..60123

Shared library text segment

400         2 work processprivate              -    480    2  303   675

Addr Range:0..969 : 65305..65535

pid(s)=17032

e83dd         - pers/dev/hd2:71733               -      2    0    -     -

/usr/lib/nls/loc/uconvTable/ISO8859-1

Addr Range:0..1

pid(s)=17552, 17290, 17032,16264, 14968, 9620

Address Range 为持久段或者客户机段指定一个范围或者为工作段指定两个范围。持久段或者客户机段的范围用‘0..x’的形式来表示,其中 x 是已使用的虚拟页面的最大数目。工作段的字段范围可以是‘0..x : y..65535’,其中 0..x 包含了全局数据,会增大,而 y..65535 包含了堆栈区域,会减小。对于一个工作段的地址范围,是从两边开始分配空间直到中间。如果工作段是非私有的(内核或共享库),空间的分配是不同的。

在以上示例中,段标识 400 是专用工作段;它的地址范围是 0..969 : 65305..65535。段标识 f001e 是共享库文本工作段;它的地址范围是 0..60123。

一个段可由多个进程使用。这样的段里的每一个实内存页解释了每个使用该段的进程的 Inuse 字段。因此,Inuse 的总数可能超过实内存中的页面总数。这对 Pgsp 和 Pin 字段同样适用。摘要部分中显示的值由进程使用的所有段的 Inuse、Pin、Pgsp 和 Virtual 计数器的总和组成。

在以上示例中,e83dd 段由若干进程使用,这些进程的 PID 是 17552、17290、17032、16264、14968 和 9620。

特定段标识的详细信息

-D选项显示了段的内存使用的详细统计信息。

下面是一个例子:

# svmon -D 38287 -b

Segid: 38287

Type: working

LPage: N

Address Range: 0..484

Size of page space allocation: 2 pages (  0,0 MB)

Virtual: 18 frames (0,1 MB)

Inuse: 16 frames (0,1 MB)

Page      Frame   Pin        Ref        Mod ExtSegid    ExtPage

341     527720    N          N          N         -          -

342     996079    N          N          N         -          -

343     524936     N         N          N         -          -

344     985024     N         N          N         -          -

347     658735     N         N          N         -          -

348      78158     N         N          N         -          -

349     174728     N         N          N         -         -

350     758694     N         N          N         -          -

404     516554     N         N          N         -          -

406     740622     N         Y          N         -          -

411     528313     N         Y          Y         -          -

412    1005599     N         Y          N         -          -

416     509936     N         N          Y         -          -

440     836295     N         N          Y        -          -

443      60204     N         N          Y         -          -

446     655288     N         N          Y         -          -

各列的说明如下:

Page

指定段内页面的索引。

Frame

指定驻留在实内存的帧索引。

Pin

指定表示该页是否锁定的标志。

Ref

仅用 -b 标志指定。指定表示该页的访问位是否有效的标志。

Mod

仅用 -b 标志指定。指定表示该页是否修改的标志。

ExtSegid

如果页属于链接到被检查段的扩展段,则会显示该段的虚拟段标识。

ExtPage

如果页属于链接到被检查段的扩展段,则会显示该扩展段中的页索引。

以下是 svmon -b 命令的一个示例:

# svmon -b

Page     Frame    Pin        Ref        Mod ExtSegid    ExtPage

65574     345324     N         N          N    288071         38

65575     707166     N         N          N    288071         39

65576     617193     N         N          N    288071         40

-b标志显示了所有显示的帧的访问和修改位的状态。显示之后,帧的访问位将被复位。当使用 -i 标志时,它检测每一个时间间隔内哪些帧可以访问。

注:

由于对性能会造成影响,请谨慎使用 -b 标志。

使用内存最多的段的列表

-S选项用于按内存使用情况对段排序,并且显示指定段的内存使用统计信息。如果不提供段的列表,则内存使用统计信息显示所有定义的段。以下命令按实内存中的页数多少排列系统和非系统段。-t 选项可用于将显示的段数限制为指定的计数。-u 标志按实内存中的总页数降序排列输出。

下面是 svmon 命令带 -S-t-u 选项的示例输出:

# svmon -Sut 10

Vsid     Esid Type Description             LPage  Inuse   Pin Pgsp Virtual

70c4e         - pers large file/dev/lv01:26      -  84625    0    -     -

22ec4         - work                              -  29576    0    0 29586

8b091         - pers/dev/hd3:123                 -  24403    0    -     -

7800f         - work kernelheap                  -  22050 3199 19690 22903

a2db4         - pers/dev/hd3:105                 -  15833    0    -     -

80010         - work page frame table             - 15120 15120    0 15120

7000e         - work misc kerneltables           -  13991    0 2388 14104

dc09b         - pers /dev/hd1:28703               -   9496    0    -     -

730ee        - pers /dev/hd3:111                -   8568    0    -     -

f001e        - work                             -   4857     0  36  6823

svmon 和 vmstat 命令输出的相关性

svmonvmstat 的输出之间存在相关性。

下面是 svmon 命令的示例输出:

# svmon -G

size      inuse       free        pin   virtual

memory     1048576     417374    631202      66533     151468

pg space    262144      31993

work       pers       clnt     lpage

pin          46053          0          0     20480

in use      121948     274946          0          0

pgsize       size       free

lpage pool   16 MB          5          5

vmstat命令在一个独立的窗口中运行,与此同时 svmon 也在运行。vmstat 的报告如下所示:

# vmstat 3

kthr    memory             page              faults        cpu

----- ----------- ------------------------------------ -----------

r  b  avm   fre  re  pi  po fr   sr  cy in   sy  cs us sy id wa

1  5 205031 749504   0  0   0   0   0   0 1240  248 318 0  0 99  0

2  2 151360 631310   0  0   3   3  32   0 1187 1718 641  1  198  0

1  0 151366 631304   0  0   0   0   0   0 1335 2240 535  0  1 99  0

1  0 151366 631304   0  0   0   0   0   0 1303 2434 528  1  495  0

1  0 151367 631303   0  0   0   0   0   0 1331 2202 528  0  099  0

全局 svmon 报告显示了相关的数字。vmstat 命令的 fre 列与svmon 命令的 memory fre 列相接近。vmstat 命令报告的活动虚拟内存 avm 值与 svmon 命令报告的虚拟内存值接近。

svmon 和 ps 命令输出的相关性

svmonps 命令输出之间存在着一些联系。svmon 命令输出如下:

# svmon -P 14706

-------------------------------------------------------------------------------

Pid                        Command        Inuse        Pin     Pgsp  Virtual 64-bit Mthrd LPage

14706 itesmdem          9067     3337    2833    12198      N    N     N

PageSize      Inuse        Pin       Pgsp   Virtual

4 KB       9067       3337       2833     12198

16 MB          0         0          0          0

Vsid      Esid TypeDescription              LPage  Inuse  Pin Pgsp Virtual

f001e         d work sharedlibrary text          -   4857    0   36  6823

0         0 work kernel seg                   -   4205 3335 2674  5197

f039e         2 work processprivate              -      5    2   27    29

b8397         3 work shared memorysegment        -      0    0    1     1

d039a         6 work shared memorysegment        -      0    0    1     1

c0398         4 work shared memorysegment        -      0    0    1     1

d839b         7 work shared memorysegment        -      0    0    1     1

e839d         f work sharedlibrary data          -      0    0   91   144

c8399         5 work shared memorysegment        -      0    0    1     1

83a1         1 pers code,/dev/hd2:221359         -     0     0    -    -

将上述示例与下面的ps 报告作比较:

# ps v 14706

PID    TTY STAT  TIME PGIN SIZE   RSS   LIM TSIZ   TRS %CPU %MEM COMMAND

14706      - A    0:00   16   692   20 32768    19     0 0,0  0,0 /usr/bin/

SIZE 值328 与 svmon 命令的 Virtual 值相关,由 process private 值(59)加上 shared library data 值(23)得到,以 1 KB 为单位。这个数目等于进程已使用的工作段页的数目(即已分配的虚拟页的数目)的 4 倍。该数必须乘以 4 是因为页面是以 4KB 为单位而 SIZE 是以1KB 为单位的。如果一些工作段页当前被调出,这个数值将大于所使用的实内存量。SIZE 值(692)与 Virtual 数字相关,该数字由 svmon 命令得到,对应于process private(29)加上 sharedlibrary data(144),以 1 KB 为单位。

RSS 指的是进程实内存(驻留集合)的大小,用 KB 表示。这个数值等于内存中的工作段页和代码段页数和的 4 倍。记住代码段页是为所有当前程序运行的实例所共享的。如果 26 个 ksh 进程正在运行,只有ksh 的可执行程序的任何给定页面的一个副本可以驻留在内存,但是ps 命令会将代码段的大小作为每一个 RSS 的一部分报告,而该部分是 ksh 程序的一个实例。RSS 值(20)与 Inuse 数字相关,该数字由 svmon 命令得到,对应于进程的 process private 值(5 个工作存储段)、code,/dev/hd2:221359(0) 段以及 shared library data 值(0),以 1 KB 为单位。

TRS 值指的是驻留的文本集合(实内存)大小。这个数字等于代码段页数乘以 4。正如我们较早提到的,这个数目夸大程序正在运行多个实例的程序的内存使用。这不包括进程的共享文本。TRS 值(232)与 Inuse 列的 code 段(58)中的 svmon 页数有关,以 1KB 为单位。TRS 的值可能比 TSIZ 的值要大,因为其它页,如 XCOFF 头和载入程序区,可能包含在代码段里。

可以对提到的值进行下列计算:

SIZE = 4 * Virtual of (work lib data + workprivate)

RSS  =4 * Inuse of (work lib data + work private + pers code)

TRS  =4 * Inuse of (pers code)

最小内存需求计算

用以计算程序的最小内存需求的公式如下:

总内存页数(以 4 KB 为单位)= T + ( N * ( PD + LD ) ) + F

其中:

T

= 文本页数(所有用户共享)

N

= 该程序同时运行的副本数

PD

= 进程私有段中的工作段数

LD

= 进程使用的共享库数据页数

F

= 文件页数(所有用户共享)

得到的结果乘以 4 就得到所需要的数值,以千字节计。您可能也希望将内核中的内核扩展和共享库文本段的值加到这个值上,即使它们是为系统中所有进程共享的。例如,一些如 CATIA 的应用程序和数据库使用很大的共享库模块。注意到由于我们只用了进程的单一快照的统计信息,不保证我们从公式得到的值就是正确的进程的最小工作集合的大小值。要获得工作集大小,须运行诸如rmss 命令之类的工具或者在进程活动期间捕获大量快照,并从这些快照取平均值。详细内容,可参考rmss 命令用法。

数​据​库​查​看​内​存​使​用​I​N​F​O​R​M​I​X相关推荐

  1. 网购计算机如何看显卡信息,电脑显卡是什么 怎么查显卡显存【图文】

    电脑显卡是什么?相信对于大部人都懂的怎么使用电脑,却不知道电脑显卡是什么.电脑显卡是电脑关键的一部分,如果没有了电脑显卡,即使有显示频也不能显示.相信对于一些游戏玩家来说,显卡这个名词必须是很熟悉,因 ...

  2. 在oracle 中编写一个程序,用VC 开 发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法...

    用VC 开 发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法 北 京 航 空 航 天 大 学 计 算 机 科 学 与 工 程 系 黎 杰 麦 中 凡 ---- 1. 引 言 -- ...

  3. 我如何构建SiriWaveJS库:看一下数学和代码

    by Flavio De Stefano 由弗拉维奥·德·斯特凡诺(Flavio De Stefano) 我如何构建SiriWaveJS库:看一下数学和代码 (How I built the Siri ...

  4. jssdk 保存文件到手机_手机混用闪存到底是真是假?教你查手机闪存型号

    原标题:手机混用闪存到底是真是假?教你查手机闪存型号 最近,网上传言某手机混用闪存,将UFS 3.0和UFS 3.1的闪存混用在了同一型号的机器上,买不同容量的手机,闪存协议不一样.光从这个描述来看, ...

  5. 如何知道计算机显卡内存,电脑显卡是什么 怎么查显卡显存【图文】

    电脑显卡是什么?相信对于大部人都懂的怎么使用电脑,却不知道电脑显卡是什么.电脑显卡是电脑关键的一部分,如果没有了电脑显卡,即使有显示频也不能显示.相信对于一些游戏玩家来说,显卡这个名词必须是很熟悉,因 ...

  6. Python学习必备:10个奇妙的Python库,看完后我惊呆了

    前言 10个奇妙的Python库,看完后我惊呆了! 让我们愉快地开始吧~编程学习资料点击免费领取 开发工具 Python版本: 3.6.4 相关模块: socket模块: textblob模块: py ...

  7. 微信公众号多题库查题接口

    微信公众号多题库查题接口 本平台优点: 多题库查题.独立后台.响应速度快.全网平台可查.功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳 ...

  8. f分布表完整图_标准正态分布函数数值表怎么查?(加完整分布函数表)

    最近在整理数据时,忽然想到数理统计的其中一种分布,相信作为质量人一定不陌生,我们常常提到数据的分布是否服从正态分布,这是对一组连续数据分布一种描述,还会涉及到如何检验正态分布,对于这个分布的来龙去脉和 ...

  9. 公众号多题库查题系统

    公众号多题库查题系统 本平台优点: 多题库查题.独立后台.响应速度快.全网平台可查.功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 题库:题库后台(点击跳转) 题库后台: 3 ...

  10. 从微盟删库事件看数据备份和项目管理

    3 月初,闹得沸沸扬扬的「微盟删库」事件终于有了一个解决方案,也让不少技术人唏嘘不已,一个上市公司的数据备份和项目管理流程居然如此不堪. 事故经过 先来看下此次事故的时间线. 2 月 23 日,因公司 ...

最新文章

  1. 深入实践Spring Boot1.3.2 一个简单的实例
  2. 5G NGC — CAPIF 网络能力开放框架
  3. 第一次玩,试试手(标题)
  4. 数据结构与算法————稀疏数组
  5. Web安全之拖放劫持
  6. Web开发如何实现Tomcat等服务器热部署不用重启
  7. URDGN:Ultra-resolve Face Images by Discriminative Generative Networks
  8. (实用工具分享)网页尺寸测量工具Page Ruler
  9. Checkra1n 越狱常见问题大全
  10. Windows文件所有者恢复TrustedInstaller权限
  11. walking机器人入门教程-软件清单
  12. UserData使用总结[转载-lanyu]
  13. 2074:【21CSPJ普及组】分糖果(candy)
  14. java DTO对象与PO对象的相互转换
  15. 小程序获取链接中的参数
  16. 0008基于单片机自动喂养控制系统设计
  17. ES安装报错信息(持续更新)
  18. 什么是体、性、用、相?
  19. 高中计算机考试ps,高中信息技术会考Photoshop操作题试题及分析
  20. HTML5经典面试题

热门文章

  1. HTML5期末大作业:我的家乡网站设计——我的家乡-杭州(7页) HTML+CSS+JavaScript 大学生家乡网页作品 老家网页设计作业模板 学生网页制作源代码下载
  2. QQ2000 的聊天室刷屏机设计技术
  3. 解决Linux下使用QQ的问题
  4. 彗星撞地球-Warez组织的经典力作(15G动画压缩成64Kb的那个,2004年的第一名)
  5. 梦幻群侠传5帮派修炼_梦幻群侠传5手游下载
  6. attachEvent方法绑定事件
  7. uploadify 302 php,jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
  8. 乐谱管理软件SheetAble
  9. word三线表标题两条线之间如何出现空白间隔(论文必备)
  10. 机器学习实战练手项目