AIX 内存使用分析(谁在使用内存)

AIX 内存使用 - 或者 - 谁在使用内存以及如何使用

方法

摘要

当 AIX 内存不足时,在添加更多内存之前,最好检查内存使用情况。

目标

AIX 内存使用分析(谁在使用内存)

步骤

常见问题:我看到已用内存的 XX%,但不知道是谁在使用以及如何使用的?

这是一个简单的问题,但没有简单的答案,因为内存使用很复杂。
运行 nmon 后按 "m" 键将快速显示以下一些主要内存使用情况:

AIX 内存使用分析(谁在使用内存)

许多系统管理员谈论计算内存(我从未理解为什么),但在 nmon 最右侧顶部相加 Process=6.0% 和 System=16.2% ,得到计算内存=22.2%。

UNIX 进程间通信 (IPC) 是另一个可能消耗大量内存的地方。使用 ipcs -m 命令列出使用情况:

AIX 内存使用分析(谁在使用内存)


许多应用程序(如 DB2 和 Oracle)使用的共享内存 - 检查 SEGSZ 以获取大小。

Owner 列通常告诉您其用途,例如 Oracle 用户的 SGA 或 db2inst1 用于 DB2 缓冲区缓存。在上面我们看到最大的共享内存段约为 22 MM(222696000 字节)。

然后就是进程,这就变得棘手了。 所有运行相同程序文件的进程将共享代码页作为只读。如果进程由一个公共进程启动然后 fork,例如 RDBMS 和 Apache 之类的事物,它们还可能共享部分或几乎所有数据和堆栈页。
对于进程所需的数十个库也是如此,这些库对我们来说在很大程度上是看不见的。由于这种未知的共享,通常将所有进程的内存相加时,它显然比内存大得多。如果您使用 nmon 然后按 "t" 查看顶级进程,再按 "4" 按进程大小排序,您将看到进程内存:

AIX 内存使用分析(谁在使用内存)
  1. Size KB = 在磁盘上的程序文件中找到的大小。
  2. Resident Set Size = 其在内存中的大小(不包括仍在文件系统(如代码)和部分分页磁盘中的页面)。
  3. ResText列是驻留集的代码页
  4. ResData列是驻留集的数据和栈页

如果您需要完整详细信息,则必须使用 svmon 命令,但请注意——这会告诉您完整的情况,而且非常复杂。即使列出单个进程的详细信息时,您也会发现存在十二种内存属性组合,并且会发现您的进程内存拥有所有这些属性以及那十二个库的属性。请记住,进程对程序代码及其库代码具有共享只读访问权限,因此将进程相加无法得出正确结果。

DeveloperWorks its=282027

11 次浏览 更新于 2026-11-07

同组文章性能与故障案例

查看本组全部 6 篇

没有找到想要的答案?

上传日志让 AI 帮你诊断,或者在控制台里直接向 AI 提问。