捕获并分析虚拟内存快照
全局报告
svmon -G [ -i Interval [ NumIntervals ] ] [ -z ]
用户报告
svmon -U [ LogName1...LogNameN ] [ -r ] [ -n | -s ] [ -w | -f -c ] [ -t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals ] ] [ -l ] [ -j ] [ -d ] [ -z ] [ -m ] [ -q ]
命令报告
svmon -C Command1...CommandN [ -r ] [ -n | -s ] [ -w | -f | -c ] [-t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals] ] [ -l ] [ -j ] [ -d ] [ -z ] [ -m ] [ -q ]
工作负载管理类报告
svmon -W [ ClassName1...ClassNameN ] [ -e ] [ -r ] [ -n | -s ] [ -w | -f | -c ] [-t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals]] [ -l ] [ -d ] [ -z ] [ -m ] [ -q ]
工作负载管理层报告
svmon -T [ Tier1...TierN ] [ -a SupClassName ] [ -x ] [ -e ] [ -r ] [ -u | -p | -g | -v ] [ -n | -s ] [ -w | -f | -c ] [ -t Count ] [ -i Interval [ NumIntervals ] ] [ -l ] [ -z ] [ -m ]
进程报告
svmon -P [ PID1... PIDN ] [ -r [ -n | -s ] [ -w | -f | -c ] [ -t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals] ] [ -l ] [ -j ] [ -z ] [ -m ] [ -q ]
段报告
svmon -S [ SID1...SIDN ] [ -r ] [ -n | -s ] [ -w | -f | -c ] [ -t Count ] [ -u | -p | -g | -v ] [ -i Interval [ NumIntervals] ] [ -l ] [ -j ] [ -z ] [ -m ] [ -q ]
详细报告
svmon -D SID1..SIDN [ -b ] [ -i Interval [ NumIntervals] ] [ -z ] [ -q ]
分帧报告
svmon -F [ Frame1..FrameN ] [ -i Interval [ NumIntervals] ] [ -z ] [ -q ]
svmon 命令显示当前内存状态的信息。因为 svmon 命令在启用中断的用户级别运行,所以显示的信息不组成真正的内存快照。
段是一组页面,用来报告内存消耗的基本对象。因此 svmon 所报告的统计信息是以页面表示的。一页是 4K 的虚拟内存块,而一帧是 4K 的实内存块。除非另有注释,否则所有的统计信息以 4096 字节的内存页面为单位。
在大页面系统里,一些页面可能具有不同的大小。不过,报告总是以 4KB 单位表示的。有两种例外:
页大小 正在使用 固定内存 页面空间 虚拟 4 KB 6086 2000 1000 6080 16 MB 1 1 0 1
页大小 大小 空闲 大页池 16 MB 4 2在 16MB 行上报告的度量值表示 16MB 页面的计数。
使用 正在使用、空闲、固定内存、虚拟以及调页空间计数器报告内存消耗。
在一些报告中(-P、-U、-C、-W、-T),标题行显示了实体的全局内存消耗,它总结了该实体所用的段的内存消耗。在大页面系统里,不同的页大小之间的分布跟随内存消耗。
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 6086 2000 1000 6080
16 MB 1 1 0 1
列标题是:
页大小 所考虑的页面的大小。 正在使用 表示用户使用的段中的实内存的页大小的页面总数。 固定内存 表示用户所用的段中固定内存的页大小的页面总数。 调页空间 表示用户所用的段中的调页空间中保留或使用的页大小的页面总数。 虚拟 表示在进程虚拟空间中分配的页大小的页面总数。不同的值以页大小页面单元来表示。
一个段可被多个进程使用。这样一个段的每个页面在使用该段的每个进程的正在使用、固定内存、虚拟或调页空间字段中得以说明。因此,所有活动的进程的正在使用、固定内存、虚拟以及调页空间字段的总数可能会超过内存或调页空间的页面总数。
虚拟内存管理器管理虚拟页面计数器,将其仅用于统计,这意味着它们不会始终最新的,并且它们的值可能小于相应的正在使用计数器。
段属于以下五种类型之一:
| 持久 | 用于处理文件和目录的段。 |
| 工作 | 用于实现进程的数据区域的段和共享内存段。 |
| 客户 | 用于实现诸如网络文件系统(NFS)和 CD-ROM 文件系统等虚拟文件系统的段。 |
| 映射 | 用于实现内存文件的映射的段。 |
| 实内存映射 | 用于从虚拟地址空间存取 IO 空间的段。 |
该命令只有在 PowerPC 平台上才有效。
svmon 命令创建九种类型的报告:
此处对每种报告类型一一描述。
只有指定了 -G 标志,才打印全局报告。全局报告中的列标题是:
内存 指定描述实内存使用的统计信息,包含: 大小 实内存帧数(实内存的大小)只有指定了 -U 标志,才打印用户报告。用户登录报告中的列标题是:
用户 表示用户名。 正在使用 表示用户所用的段中实内存中的页面总数。 固定内存 表示用户使用的段中固定内存的页面总数。 调页空间 表示用户使用的段在调页空间保留或使用的页面总数。 虚拟 表示在进程虚拟空间中分配的页面总数。 大页面权能 表示用户是否有权使用大页面。如果定义了大页池,并且用户具有大页面权能(LPageCap 是“Y”),那么在不同页大小间的分布跟随这些统计信息。
如果指定了 -d 标志,那么关于指定的登录用户名运行的所有进程的信息会跟随这些统计信息。该信息与进程报告描述的信息相似。
然后 svmon 命令显示关于那些进程使用的段的信息。该组段分为三个类别:
对于每个类别,都有一个关于相关的段的页面消耗的报告。如果 LPageCap 是“Y”(见上), 就会添加一个关于不同的页大小使用的报告。然后列出段的特定度量值。
如果指定了 -l 标志,那么使用该段的进程标识符的列表跟随最后一个类别中的每个段。除了进程标识之外,也显示启动该进程的登录用户名。请参阅关于特殊段处理的 -l 标志的描述。
如果指定了 -r 标志,那么在已分配页面的段以内的范围跟随每个段。
如果指定了 -q 标志,那么只报告具有大页面权能(LPageCap)的用户。注意要报告该用户所有的段。如果指定了一个用户列表,那么就会向没有大页面权能的每个用户报告错误。
只有指定了 -C 标志,才打印命令报告。命令报告中的列标题是:
命令 表示命令名称 正在使用 表示该命令使用的段的实内存的页面总数(运行该命令的所有进程)。 固定内存 表示该命令使用的段的固定内存页面总数(运行该命令的所有进程)。 调页空间 表示该命令使用的段在调页空间上保留或使用的页面总数。 虚拟 表示在该命令的虚拟空间分配的页面总数。如果定义了一个大页池,那么不同页面大小之间的分布跟随这些统计信息。
如果指定了 -d 标志,那么关于运行该指定的命令的所有进程的信息跟随这些统计。这些信息与进程报告中描述的信息相似。
下一条 svmon 显示了关于那些进程使用的段的信息。该组段分为三个类别:
对于每个类别,都有一个关于相关的段的页面消耗的报告。如果机器具有大页面权能,就会添加一个关于不同的页大小使用的报告。然后列出段的特殊度量值。
如果指定了 -l 标志, 那么使用该段的进程标识符的列表跟随最后一个类别的每个段。除了进程标识符之外,也显示该进程所运行的命令名称。请参阅关于特殊段处理的 -l 标志的描述。
如果指定了 -r 标志, 那么在已分配页面的段以内的范围跟随每个段。
如果指定了 -q 标志,那么只报告与大页面段相关的信息。
通过以下两种报告类型,svmon 能够报告与工作负载管理相关的活动。
在运行工作负载管理器时,这些报告可用。否则,会显示必须启动工作负载管理器的消息,并且不报告统计信息。工作负载管理器以被动的模式运行时,在显示统计信息之前 svmon 会显示以下信息:工作负载管理器以被动模式运行。
请参考《AIX 5L V5.2 系统管理指南:操作系统与设备》中的『工作负载管理』。
类报告
只有指定了 -W 标志,才打印该类报告。类报告中的列标题是:
类或超类 表示类或超类名称。 正在使用 表示属于该类的段中实内存的页面总数。 固定内存 表示属于该类的段中固定内存的页面总数。 调页空间 表示属于该类的段在调页空间保留或使用的页面总数。 虚拟 表示在该类的虚拟空间分配的页面总数。如果定义了大页池,那么在不同页面大小之间的分布跟随这些统计信息。
显示这些统计信息后,svmon 显示关于属于该类的段的信息。
如果指定了 -e 标志,那么显示该类的子类的统计信息,并且每个子类报告段的统计信息。在这种情况下,类参数必须是超类名称。
如果指定了 -l 标志,那么使用该段的进程标识符的列表跟随每个段。除了进程标识符外,进程所属的工作负载类也会显示出来。请参阅关于特殊段处理的 -l 标志的描述。
如果指定了 -r 标志,那么已分配页面所在的段内的范围跟随每个段。
如果指定了 -q 标志,那么只报告大页面段。在这种情况下,全局度量值只与这些大页面段有关。
层报告
只有指定了 -T 标志,才打印层报告。层报告中的列标题是:
层 表示层数 超类 可选的列标题。表示当层适用于超类时的超类名称(使用 -a 标志时)。 正在使用 表示属于层的段的实内存中的页面总数。 固定内存 表示属于层的段的固定内存页面总数。 调页空间 表示属于层的段在调页空间上保留或使用的页面总数。 虚拟 表示在层的虚拟空间中分配的页面总数。如果定义了大页池,那么在不同页面大小间的分布跟随这些统计信息。
显示统计信息之后,svmon 显示关于属于层的类的信息。
如果指定了 -e 标志,那么就报告属于层的每个超类的子类的统计信息。
如果指定了 -x 标志,那么 svmon 显示关于属于每个类的段的信息。
-r 和 -l 标志只能与 -x 结合使用。
如果指定了 -l 标志,那么使用该段的进程标识符列表跟随每个段。除了进程标识符外,进程所属的层数和类也会显示出来。请参阅关于特殊段处理的 -l 标志的描述。
如果指定了 -r 标志,那么页面已分配的段内的范围跟随每个段。
如果指定了 -q 标志,那么只报告大页面段。在这种情况下,全局度量值只与这些大的页面段相关。
只有指定了 -P 标志,才打印进程报告。进程报告中的列标题是:
Pid 表示进程标识符。 命令 表示进程在运行的命令。 正在使用 表示进程使用的段中的实内存的页面总数。 固定内存 表示进程使用的段中固定内存的页面总数。 调页空间 表示进程使用的段在调页空间上保留或使用的页面总数。 虚拟 表示在进程虚拟空间中分配的页面总数。 64 位 表示该进程是否是 64 位进程(Y)或 32 位进程(N)。 多线程 表示该进程是否是多线程的(Y)或不是多线程的(N)。 大页面 表示进程的大页面状态。“M”表示强制性,“Y”表示进程使用或已经使用大页面段,“N”表示进程不使用大页面。如果定义了大页池,那么在不同页面大小间的分布跟随这些信息。
显示进程信息之后,svmon 显示关于进程使用的所有段的信息。段落段报告描述了段的信息。
如果指定了 -q 标志,那么只报告标记为大页面进程(LPage)的进程。注意要报告这些进程中所有的段。如果指定了一列进程,那么就会向未标记为大页面的每个进程报告错误。
只有指定了 -S 标志,才打印段报告。段报告中的列标题是:
Vsid 表示虚拟段标识符。表示在虚拟内存管理器中的唯一段。 Esid 表示有效的段标识符。Esid 只有在段属于进程的地址空间时才有效。提供时,它表示进程如何使用段。如果 vsid 段被几个进程映射,但具有不同的 esid 值, 那么该字段包含“-”。如果是那样的话,那么通过应用于使用该段的每个进程标识符的 -P 标志,可以获得精确的 esid 值。因为用于管理打开的文件或多线程结构的段不是进程的用户地址空间的一部分,所以也对这些段显示“-”。 类型 表示段的类型:如果该段是持久的段,并且与日志无关,那么就显示设备名和相关文件的 i-node 号,两者用冒号分隔。可以通过 ncheck 命令或使用 -j 标志将设备名和 i-node 转换为文件名。如果该段是某个大文件的主段,则要在描述前预先考虑词语大文件。
如果该段是持久的段,并且与日志有关,那么就显示字符串 log。如果该段是工作段,那么 svmon 命令会试图确定该段的角色。例如,特殊工作段,如内核和共享库是由 svmon 命令识别。如果该段是进程的专用的数据段,那么会打印专用。如果该段是进程的代码段,那么响应 -P 标志的段报告便打印出来,然后要在描述前预先考虑字符串 code。
如果该段被几个进程映射,并且以不同方式使用(例如,被另一个进程映射为共享内存的进程专用段),那么描述是空的。通过应用于每个使用段的进程标识符的 -P 标志,可以获得精确的描述。
如果段的描述太大而不符合描述空间,那么可以截短描述。截短的部分可以通过给定的段的 -S 标志(不带 -l)而获得。
段表
描述表
| 段类型 | 段用途 | 描述 |
|---|---|---|
| 持久 | 日志文件 | 日志 |
| 持久 | 文件和目录 | 设备名:i-node 号 |
| 持久 | 大文件 | 大文件设备名:i-node 号 |
| 映射 | 文件映射 | 映射到段标识符源 sid
不再映射 |
| 工作 | 进程和共享内存段的数据区域 | 依赖于 VSID 和 ESID 基础上的段的角色 |
| 客户 | NFS 和 CD-ROM 文件 | 依赖于 VSID 和 ESID 基础上的段的角色 |
| 实内存映射 | IO 空间映射 | 依赖于 VSID 和 ESID 基础上的段的角色 |
基于 32 位内核 vsid 的描述表
| 段类型 | 描述 |
|---|---|
| 段表 | 段表 |
| 内核段 | 内核段 |
| 内核扩展段 | 内核扩展段 |
| 软件页帧段 | 页帧表 |
| ram 磁盘段 | ram 磁盘 |
| 内核段的用户盲区 | 内核盲区 |
| 调页空间磁盘映射段 | 页面空间磁盘映射 |
| 基础配置段 | 基础配置段 |
| 软件随机编码段 | 软件随机编码 |
| 文件结构段 | 杂项内核表 |
| 内核固定内存堆段 | 内核固定内存堆 |
| 地址映射条目段 | 地址映射条目段 |
| 页面表区域段 | 页面表区域 |
基于 64 位内核 vsid 的描述表
| 段类型 | 描述 |
|---|---|
| 内核段 | 内核段 |
| 虚拟内存管理器专用段 | 虚拟内存管理器数据段 |
| 段表段 | 虚拟内存管理器 scb 段 |
| 页面表区域段 | 页面表区域 |
| 调页空间磁盘映射段 | 页面空间磁盘映射 |
| 软件随机编码段 | 软件随机编码 |
| 软件页帧段 | 页帧表 |
| 实内存堆段 | rmalloc 堆 |
| 地址映射条目段 | 地址映射条目段 |
基于 32 位内核上 32 位进程的 esid 的描述表
| ESID 值或范围 | 描述 |
|---|---|
| 0x0 | 内核 |
| 0x1 | 代码 |
| 0x2 | 进程专用 |
| 0x3-0xC |
|
| 0xD | 共享库文本 |
| 0xE | 共享库 ovfl |
| 0xF | 共享库数据 |
基于 32 位内核上 64 位进程的 esid 的描述表
| ESID 值或范围 | 描述 |
|---|---|
| 0x0 | 内核 |
| 0xD | 共享库文本 |
| 0x10 - 0x6FFFFFFF | 文本数据 BSS 堆 |
| 0x70000000 -0 x7FFFFFFF |
|
| 0x80000000 - 0x8FFFFFFF | 专用负载 |
| 0x90000000 - 0x90010009 | 共享库文本 |
| 0x9001000A - 0x90020013 | 共享库数据 |
| 0x90020014 - 0x9FFFFFFE | 共享库 |
| 0x9FFFFFFF | USLA |
| 0xA0000000 - 0xEFFFFFFF | 保留供系统使用 |
| 0xF0000000 - 0xFFFFFFFF | 应用程序堆栈 |
| 0xF00000002 | 进程专用 |
基于 64 位内核上 32 位进程的 esid 的描述表
| ESID 值或范围 | 描述 |
|---|---|
| 0x0 | 内核 |
| 0x1 | 代码 |
| 0x2 | 进程专用 |
| 0x3-0xC |
|
| 0xD | 共享库文本 |
| 0xE |
|
| 0xF | 共享库数据 |
| 0x9FFFFFD0-0x9FFFFFDF | 32 位用户别名 |
| 0x9FFFFFF0-0x9FFFFFFF | 32 位装入程序别名 |
基于 64 位内核上 64 位进程的 esid 的描述表
| ESID 值或范围 | 描述 |
|---|---|
| 0x0 | 内核 |
| 0x2 | 进程专用 |
| 0x3-0xC |
|
| 0xE |
|
| 0x10-0x6FFFFFFF | 文本数据 BSS 堆 |
| 0x70000000-0x7FFFFFFF | 缺省 shmat/mmap |
| 0x80000000-0x8FFFFFFF | 专用负载 |
| 0x90000000-0x9FFFFFFF | 共享库文本 |
| 0xF0000000-0xFFFFFFFF | 应用程序堆栈 |
如果指定了 -r 标志,那么显示已分配段页面内的范围。因为页面可从两端开始然后向中间移动而得到分配,所以工作段可能具有两个范围。
如果指定了 -l 标志,那么显示使用段的进程标识符列表。请参阅关于特殊段处理 -l 标志的描述。
如果指定了 -q 标志,那么只报告大页面段。如果指定了段列表,那么报告不具有大页面标志的每个段的错误。
只有指定了 -D 标志,才打印详细报告。
在所使用的页面列表之前会显示几个字段:
Segid 段标识 类型 段的类型 大页面 说明段是否使用大页面。 地址寻址 段所使用的帧的范围。对于工作段,还会显示以下附加的字段:
页面空间分配的大小 调出的页面数。 虚拟 段使用的页面数。 正在使用 段使用的帧数。详细报告中的列标题。
段报告描述了相同的段信息,此外还对每个帧进行了描述:
页面 相对于虚拟空间的页码。如果虚拟空间比单一的段(大文件)大,那么页码比段中的帧号(65535)高。 帧 实内存中的帧号 固定内存 表示帧是否带固定内存 引用 表示进程是否已经引用帧(只有 -b 标志)。 修改 表示进程是否已经修改帧(只有 -b 标志)。 ExtSegid 扩展的段标识符。页码比段中最大的帧号高时,才会设置该字段。 ExtPage 扩展的页码。页码比段中的最大帧号高时才会设置该字段,并且表示扩展的段内的页码。 ExtSegid 扩展的段标识符。页码比段中最大的帧号高时,才会设置该字段。 ExtPage 扩展的页码。页码比段中的最大帧号高时才会设置该字段,并且表示扩展的段内的页码。只有指定了 -F 标志,才打印帧报告。
没有指定变元时,帧报告会返回用于 4KB 页面和大页面的实内存的百分比。
指定帧号时,报告中的列标题是:
帧 实内存中帧号。 段标识符 表示帧所属的虚拟段标识符(如果是扩展段,则为主段标识符)。 引用 表示进程是否已经引用帧。 修改 表示进程是否已经修改帧。 固定内存数 表示帧的长期固定内存数和短期固定内存数。 状态 表示帧的状态(损坏、正在使用、空闲、I/O、PgAhead、隐藏)。 软件位 表示软件页帧表的帧状态。 ExtSegid 扩展的段标识符。只有在帧属于扩展段时才设置该字段。 大页面 表示帧是否属于大页面段。如果没有给出命令行标志,那么 -G 标志是缺省值。
访问控制:您必须具有 root 用户权限才能运行该命令。
svmon -G
页大小 正在使用 空闲 固定内存 虚拟
内存 786432 99980 686452 61545 86822
页空间 16384 1084
工作 持久 客户 大页面
固定内存 45164 0 0 16384
正在使用 70261 13335 0 8192
页大小 大小 空闲
大页池 16 MB 4 2
系统的内存大小是 786432 帧,即 786432*4*1024 字节(3GB)。这个大小分成正在使用的帧(99980 帧)和空闲帧(686452 帧)。
61545 帧固定内存固定于内存中。
在系统虚拟空间中分配的页面数是 86822。
正在使用和固定内存的值包括为大页面池保留的页面。
调页空间的大小是 16384 页,即 16384*4*1024 字节(64MB)。
所用的调页空间页面数是 1084。
固定内存的帧(61545 帧)由工作段固定内存页面(45164 帧)与大页面页(16384 帧,即 4*16*256 = 以 4KB 页面表示的大页池大小)组成。
包含页面的帧数(99980 帧)是由工作段页面(70261 帧)、持久段页面(13335 帧)和大页面页面(8192 帧,即 2*16*256 = 以 4KB 页表示的使用的大页面)组成的。
固定内存计数器(工作、持久、客户以及大页面)的和可能与内存固定内存计数器不同,且正在使用计数器(工作、持久、客户以及大页面)的和可能与内存正在使用计数器不同,这首先是因为这些计数器的统计用途不同,其次是因为大页池的大小包含在正在使用的内存中这一事实,且正在使用的大页面只代表所使用的大页面。
大页池由 4 个 16MB 的大页面组成。其中有 2 个是空闲的。其值以页面大小单位表示。大页池相当于 16384 个 4KB 的页面。
svmon -G -i 60 30
svmon -U steve
===============================================================================
用户 正在使用 固定内存 调页空间 虚拟 LPageCap
steve 16309 11269 1083 16304 Y
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 8117 3077 1083 8112
16 MB 2 2 0 2
..............................................................................
系统段 正在使用 固定内存 调页空间 虚拟
5828 3074 1083 5823
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 5828 3074 1083 5823
16 MB 0 0 0 0
Vsid Esid 类型 描述 大页面 正在使用 固定内存 调页空间 虚拟
0 0 工作 内核段 - 5823 3074 1083 5823
...............................................................................
互斥段 正在使用 固定内存 调页空间 虚拟
8686 8195 0 8686
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 494 3 0 494
16 MB 2 2 0 2
Vsid Esid 类型 描述 大页面 正在使用 固定内存 调页空间 虚拟
4d093 70000000 工作 缺省 shmat/mmap Y 8192 8192 0 8192
5ceb7 2 工作 进程专用 - 494 3 0 494
44ed1 - 持久 /dev/hd9var:4228 - 0 0 - -
64e79 - 持久 /dev/hd9var:37 - 0 0 - -
...............................................................................
共享段 正在使用 固定内存 调页空间 虚拟
1795 0 0 1795
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 1795 0 0 1795
16 MB 0 0 0 0
Vsid Esid 类型 描述 大页面 正在使用 固定内存 调页空间 虚拟
289aa d 工作 共享库文本 - 1795 0 0 1795
用户 steve 具有 16309 页的实内存。11269 帧有固定内存。
在调页空间上保留或使用的页面数是 1083。在虚拟空间中分配的页面数是 5823。
用户 steve 具有使用大页面段的权限。在用户 steve 使用的页面中,有两个属于大页池。
大页面大小是 16MB。 用户 steve 运行的进程所使用的段分成三个类别:svmon -U root steve -w
svmon -U -g -t 10
svmon -U steve -l
===============================================================================
用户 正在使用 固定内存 调页空间 虚拟 LPageCap
steve 16309 11269 1083 16244 Y
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 8117 3077 1083 8052
16 MB 2 2 0 2
...............................................................................
系统段 正在使用 固定内存 调页空间 虚拟
5828 3074 1083 5823
页大小 正在使用 固定内存 调页空间 虚拟
4 KB 5828 3074 1083 5823
16 MB 0 0 0 0
Vsid Esid 类型 描述 大页面 正在使用 固定内存 调页空间 虚拟
0 0 工作 内核段 - 5823 3074 1083 5823
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9148548/viewspace-258773/ ,如需转载,请注明出处,否则将追究法律责任。