问题:我们如何报告真实内存使用情况(没有缓存!)使用奈蒙或者虚拟机状态或者svmon在 AIX 6 上?
奈蒙:
虚拟机统计:
svmon:
与在 Linux 上一样,我们可以使用 free 命令,但在 AIX 中不可用:
[user@notebook ~]$ free -m
total used free shared buffers cached
Mem: 7797 4344 3453 0 219 2745
-/+ buffers/cache: 1379 6417
Swap: 2047 0 2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$
答案1
简短版本:如果您想了解所有文件缓存,请查看输出中的正在使用clnt
+页面(单位为4k页面),或者查看并查看“文件页面”以获取不包括可执行文件的文件缓存(相同单位)。pers
svmon -G
vmstat -v
如果您想全面了解正在发生的事情,您应该查看以下文章:AIX 页面替换概述。
简而言之,AIX 中的内存有两种分类方式:
工作记忆与永久记忆
工作内存是进程(堆栈、堆、共享内存)和内核内存。如果此类内存需要调出页面,则需要进行交换。
永久内存是文件缓存。如果需要调出,它将返回到其来源的文件系统(对于脏页,干净页将被回收)。这又分为 JFS 文件系统的非客户端(或持久性)页面以及 JFS2、NFS 和其他可能的客户端页面。
计算页面与非计算页面。
计算页面同样是进程和内核数据,加上进程文本数据(即缓存可执行文件/代码的页面)。
非计算性的是其他的:不可执行的文件缓存(或共享库)。
svmon -G
(顺便说一句,svmon -G -O unit=MB
有点友好)为您提供工作而不是永久页面。该work
专栏是工作记忆。通过将pers
(JFS) 和clnt
(JFS2) 列相加即可获得永久内存。
在您的例子中,您有大约 730MB 的永久页面,它们由您的文件系统支持(186151*4k 页面)。
现在,topas
右上角的“小部件”FileSystemCache (numperm)
显示的内容略有不同,您将获得相同的数据vmstat -v
:这只是非计算永久页面。即与上面相同,但不包括可执行文件的页面。
在您的情况下,大约为 350MB(16G 的 2.2%)。
不管怎样,缓存确实不多。
答案2
您正在寻找的命令(恕我直言)是:
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
这里的关键选项是:
- 'filtertype=working' # 又名,无缓存;
- 'segment=off' # 使用 -O 时实际上是默认值
- 'filtercat=exclusive' # 不包括共享内存或内核 atm
- 'unit=MB' # 谁想根据页数进行计算?
并且,您将需要查看其他选项,例如 -C (与命令名称相关,下面的一些示例),也许还有 -U (与用户相关)
++++ 评论开始 ++++
插入我本来要输入的内容作为对您的问题的评论,但缺乏声誉 - 作为这里的新用户。
您的 vmstat 输出告诉我的不仅仅是您当前的情况 - 因为它是单行输出 - 它是历史的 - 我怀疑您遇到了内存问题,因为它显示了 pi/po 的历史记录(分页空间页面输入/分页空间页面输出)
其他感兴趣的列是 fr/sr 列:
- fr:lrud 释放的页面(最近最少使用的守护进程,又名页面窃取程序)
- sr:lrud 扫描/搜索的页面寻找“旧”页面
- sr/fr:表示必须“扫描”多少页才能释放 1 的比率
我认为令人不安的是这里给出的 pi/po 值 - 并且与其他命令的数据完全不一致 - 这里也没有正常运行时间,所以很难知道“测试”是什么生成了这些数字。
- pi:调页空间页面输入(即从调页空间读取应用程序内存)
- po:窃取内存并将应用程序(也称为工作)内存写入调页空间 - 只有工作内存进入/来自页面空间
在您的演示文稿中,您显示 pi=22 和 po=7。这意味着,平均而言,系统从调页空间读取信息(在写入信息后)的频率是写入数据的频率的 3 倍。这表明系统处于饥饿状态,因为数据正在被读入(pi),然后在被触及(引用也称为使用)之前再次被窃取(sr/fr) - 或者在应用程序“等待”它之前再次读入并删除曾经有机会访问它。
简而言之,所提供的数据与“痛苦”时刻并不“同步”——尽管它可以解释为什么现在只有 2.2% 的内存用于缓存(甚至可能是“计算性的,又名加载的程序”)。
据,直到...为止虚拟机状态我还建议使用标志 -I(大写:i,添加“fi”和“fo” - fileIn 和 fileOut 活动)和 -w(宽),以便数字更好地定位在文本标题下。
++++“评论”结束
让我们看一下使用 -P 的摘录(进程视图)
# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
14614630 httpd 21.5 0.06 0 21.5
11272246 httpd 21.4 0.06 0 21.4
12779758 httpd 21.2 0.06 0 21.2
17760476 httpd 20.9 0.06 0 20.9
11796712 httpd 20.8 0.06 0 20.8
17039454 httpd 20.6 0.06 0 20.6
11862240 httpd 20.6 0.06 0 20.6
14680090 httpd 20.5 0.06 0 20.5
10747970 httpd 20.5 0.06 0 20.5
11141286 httpd 20.5 0.06 0 20.5
4718766 mysqld 13.6 0.02 0 13.6
当您不是 root 时,您只能看到环境中的命令。
$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
-------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual
5505172 svmon 10.7 0.19 0.44 11.4
6553826 ksh 0.57 0.02 0 0.57
9175288 ksh 0.55 0.02 0 0.55
12910710 sshd 0.55 0.02 0 0.55
15204356 sshd 0.52 0.02 0 0.52
12779760 head 0.18 0.02 0 0.18
您可能想查看特定命令 - 因此切换回 root 来查看 httpd
概括:
svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 227.44 0.69 0 227.44
详情:摘录
# svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
httpd 230.62 0.81 0 230.62
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
230.62 0.81 0 230.62
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
81a203 3 work working storage m 24.6 0 0 24.6
parent=883990
8b82d7 3 work working storage m 18.8 0 0 18.8
parent=834226
8b9d37 3 work working storage m 18.2 0 0 18.2
parent=884fb0
8915f2 f work shared library data m 2.00 0 0 2.00
parent=898373
89abb3 f work shared library data m 2.00 0 0 2.00
parent=84b9a9
824ea4 f work shared library data m 2.00 0 0 2.00
这并不能很好地显示“段=类别”,因此现在使用更简单的命令 - tail - 并显示每个内存“段”类型的摘要和详细信息 - 但仍然仅“工作”内存(也称为无缓存)
# svmon -C tail -O filtertype=working,segment=category,unit=MB
Unit: MB
===============================================================================
Command Inuse Pin Pgsp Virtual
tail 82.5 52.6 5.12 90.6
...............................................................................
SYSTEM segments Inuse Pin Pgsp Virtual
34.1 33.1 2.38 35.8
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
10002 0 work kernel segment m 34.1 33.1 2.38 35.8
...............................................................................
EXCLUSIVE segments Inuse Pin Pgsp Virtual
0.18 0.02 0 0.18
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
88b4f1 f work working storage sm 0.09 0 0 0.09
82d005 2 work process private sm 0.07 0.02 0 0.07
8e0c9c 3 work working storage sm 0.02 0 0 0.02
...............................................................................
SHARED segments Inuse Pin Pgsp Virtual
48.2 19.5 2.75 54.6
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
9000 d work shared library text m 48.2 19.5 2.75 54.6
答案3
nmon 然后按“m”将快速向您展示内存的一些大用途
ipcs -am
许多应用程序(例如 DB2 和 Oracle)使用的共享内存 - 通过命令检查 SEGSZ 的大小ipcs -am
。 Owner 列通常告诉您它的用途,例如 Oracle 用户用于 SGA 或 db2inst1 用于 DB2 缓冲区高速缓存。
然后就取决于流程,这会变得很棘手。运行同一程序文件的所有进程都将共享只读代码页。如果进程是由一个公共进程启动的,然后再分叉,例如 RDBMS 和 Apache 之类的东西,那么它们也可能共享一些或几乎所有数据和 sack 页。对于进程也需要但对我们来说基本上不可见的数十个库来说也是如此。
由于这种未知的共享,通常情况下,如果将所有进程的所有内存加起来,它显然比内存大得多。
如果您使用nmon
“t”表示顶级进程,然后使用“4”来排序进程大小,您将看到进程内存。
- 大小 KB = 磁盘上程序文件的大小。
- 驻留集大小 = 它在内存中的大小(不包括仍在文件系统中的页面(如代码)和分页磁盘上的某些部分)”。
- ResText列是Resident Set的代码页
- ResData 列是驻留集的数据和堆栈页
答案4
该topas
命令显示实际内存和计算机内存的百分比。默认情况下,它在 AIX 上应该是可用的,并且它与 Linux 中的类似(但提供的信息多得多)top
。
默认情况下,启动topas
会显示大量信息(使用 CPU 的顶级进程、内存使用情况摘要等),按下h会显示内联帮助文本以及其他按键及其功能(例如,按c几次将循环显示 CPU 使用情况的不同方式) 。