免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2326 | 回复: 1
打印 上一主题 下一主题

[其他] aix的内存使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-24 16:20 |只看该作者 |倒序浏览
aix的内存使用








有几种性能工具可提供内存使用情况报告。最让人感兴趣的报告来自 vmstat、ps 和 svmon 命令。

使用 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 6 151 600 0 521 5533 816 23 13 7 57
0 3 113643 346 0 2 14 208 690 0 585 2201 866 16 9 2 73
0 3 113659 135 0 2 2 108 323 0 516 1563 797 25 7 2 66
0 2 113661 122 0 3 2 120 375 0 527 1622 871 13 7 2 79
0 3 113662 128 0 10 3 134 432 0 644 1434 948 22 7 4 67
1 5 113858 238 0 35 1 146 422 0 599 5103 903 40 16 0 44
0 3 113969 127 0 5 10 153 529 0 565 2006 823 19 8 3 70
0 3 113983 125 0 33 5 153 424 0 559 2165 921 25 8 4 63
0 3 113682 121 0 20 9 154 470 0 608 1569 1007 15 8 0 77
0 4 113701 124 0 3 29 228 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 参数决定。有关更多详细信息,请参阅『VMM 页面替换调整』。

当一个应用程序终止时,它所有的工作页面会立即返回给空闲列表。然而,它的永久页面(或文件)仍然在 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 中填满文件页时就会引起调页空间的页面调度。这种情况下,调整 minperm、maxperm 和 maxclient 的值可以减少调页空间的页面调度量。有关更多信息,请参阅『用 vmo 命令进行 VMM 页面替换调整』。

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

vmstat -s 命令
摘要选项 -s 向标准输出发送摘要报告,该报告从系统初始化开始,以绝对计数表示,而不是基于某个时间间隔。推荐使用这些统计信息的方法是在有工作负载之前运行该命令,保存输出,在有工作负载后再次运行此命令,并保存输出。下一步是确定两组输出间的差异。自动实现该操作的 awk 脚本名为 vmstatit,在『确定问题是否与磁盘或内存有关』中提供。


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

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

# lslpp -lI bos.perf.tools
svmon 命令只能由 root 用户执行。

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

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

全局(-G)
显示描述整个系统中实内存和调页空间的使用的统计信息。
进程(-P)
显示指定活动进程的内存使用情况。如果不提供进程列表,则内存使用统计信息显示所有活动的进程。
段(-S)
显示指定段的内存使用情况。如果不提供段的列表,则内存使用统计信息显示所有定义的段。
段的详细信息(-D)
显示指定段的详细信息。
用户(-U)
显示指定登录名的内存使用统计信息。如果不提供登录名列表,则显示所有定义的登录名的内存使用统计信息。
命令(-C)
显示某个命令名指定的进程的内存使用统计信息。
工作负载管理类(-W)
显示指定的工作负载管理类的内存使用统计信息。如果不提供类,则显示所有定义的类的内存使用统计信息。
帧(-F)
显示帧的信息。不指定帧的号码时,会报告使用的内存的百分比。仅考虑设置了访问位的帧。在处理期间,所有的访问位都将复位。因此,当第二次使用 -f 选项时,svmon 命令会报告自上次使用 -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
pin 46041 0 0
in use 129600 275195 0

PageSize PoolSize inuse pgsp pin virtual
s 4 KB - 404795 31995 46041 159191
L 16 MB 5 0 0 5 0
size inuse free pin virtual
memory 1048576 425279 623297 66521 159195
pg space 262144 31995

work pers clnt
pin 46041 0 0
in use 129604 275195 0

PageSize PoolSize inuse pgsp pin virtual
s 4 KB - 404799 31995 46041 159195
L 16 MB 5 0 0 5 0

论坛徽章:
0
2 [报告]
发表于 2012-01-04 14:13 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP