svmon概述
svmon 命令用于显示当前内存状态的信息,可通过
#lslpp bos.perf.tools
查看是否有安装。因为 svmon 命令在启用中断的用户级别运行,所以显示的信息不组成真正的内存快照。在非常繁忙的系统中,svmon收集的数据和真实的数据有所差距,在svmon进程搜集的过程中,VMM(虚存管理器)可能已经发生改动了。
因为svmon使用的全是VMM中的数据,而VMM对内存的视图是基于内存段的,所以,理解svmon的输出,必须先理解段的概念。
段
段(segment)是一组页的合集,用来报告内存消耗的基本对象。因此 svmon 所报告的统计信息是以页面表示的。每个段为256M,而每页为4KB字节的虚存,每帧为4KB字节的实存,每个段可同时被多个进程使用,每个段属于以下五种类型其中的一种:
persistent:存放JFS文件或目录
working:进程数据区域和共享内存段
client:用于实现虚拟文件系统如NFS,CD-ROM文件系统和JFS2
mapping:用于实现文件和内存之间的映射关系
real memory mapping:用于对I/O空间的访问
svmon参数详解
-aSupClassName | 将范围限于 SupClassName类参数的子类(在层报告 -T中)。参数是超类名。不支持类列表。 |
-b | 显示所有显示帧的引用和修改位的状态(详细报告 -D)。显示时,重新设置帧的引用位。使用 -i标志时,会检测在每个间隔间存取的帧。 注: 因为该标志会影响性能,所以请谨慎使用。 |
-c | 表示统计信息中只包含客户段。缺省情况下会分析所有段。 |
-CCommand1...CommandN | 显示运行命令名 Commandnm1...CommandnmN的进程的内存使用统计信息。Commandnm是字符串。它是可执行文件精确的基本名。 |
-d | 对于给定实体,显示属于该实体(用户名或命令名)的进程的内存统计信息。 |
-DSID1...SIDN | 显示段 SID1...SIDN的内存使用统计信息和每个段所有帧的详细状态。指定的段标识符必须关于主段。 |
-e | 显示 Class 参数的子类的内存使用统计信息(该参数在工作负载类报告 -W和层报告 -T中)。-W或 -a类参数需要是超类名称。 |
-f | 表示统计信息中只包含持久段(文件)。缺省情况下会分析所有段。 |
-F [ Frame1...FrameN ] | 显示帧 Frame1...FrameN状态,包含其所属的段。如果没有供应帧列表,那么会显示所用内存的百分比。 |
-g | 表示要显示的信息按照在调页空间上保留或使用的页面总数的降序排列。这个标志结合段报告改变了排序列表末尾的非工作段。 |
-G | 显示全局报告。 |
-iInterval [ NumIntervals] | 指示 svmon命令重复显示统计信息。每个 Interval秒就收集和打印统计信息。NumIntervals是重复的次数;如果未指定,那么 svmon一直运行到用户使用 Ctrl-C 中断为止。 注: 因为需要花费几秒来收集某些选项的统计信息,所以观察到的时间间隔可能比指定的时间间隔大。 |
-j | 显示每个持久段引用的文件路径。 注: 因为该标志会对性能产生潜在的影响(特别是svmon -S),所以请谨慎使用。 |
-l | 每个显示的段都会显示使用段的进程标识符列表,并且根据报告类型显示进程所属的实体名(登录、命令、层或类)。对于特别的段,会显示标号而不是进程标识符列表。 系统段 显示标志为 system的段的标号。 未使用段 此标号将显示所有的现有进程都未使用的段。例如,与文件相关的持久段不再使用。 共享库文本 显示包含共享库文本的段的标号,可能大部分进程都使用该共享库文本(例如,libc.a)。这将阻止显示进程的长列表。 |
-m | 段映射源段时,显示关于源段的信息并映射段。缺省值是只显示关于映射段的信息。 |
-n | 表示统计信息中只包含非系统段。缺省情况下会分析所有段。 |
-p | 表示将要显示的信息按照带固定内存的页面总数降序排列。 |
-P [ PID1... PIDN] | 显示进程 PID1...PIDN的内存使用统计信息。PID是一个十进制的值。如果没有供应进程标识符(PID)列表,那么就会显示所有活动进程的内存使用统计信息。 |
-q | 根据它们是否处理大页面而过滤结果。另外,它显示大页面度量值。 |
-r | 显示已分配的段页面内的范围。因为页面可从两端开始然后向中间移动而得到分配,所以工作段可能具有两个范围。 |
-s | 表示统计信息中只包含系统段。缺省情况下会分析所有段。 |
-S [ SID1...SIDN ] | 显示段 SID1...SIDN的内存使用统计信息。SID是一个十六进制的值。指定的段标识符必须关于主段。如果没有供应段标识符(SID)列表,那么就会显示所有定义的段的内存使用统计信息。 |
-tCount | 显示要打印的最高 Count对象的内存使用统计信息 |
-T [ Tier1...TierN ] | 显示所有层号 Tier1...TierN的类的内存使用统计信息。如果没有供应层列表,那么就会显示所有定义的层的内存使用统计信息。 |
-u | 表示要显示的信息按照实内存的页面总数降序排列。如果无下列标志出现,这就是缺省的排序标准:-p、-g和 -v。 |
-U [ LogName1...LogNameN ] | 显示登录名 LogName1...LogNameN的内存使用统计信息。Logname是一个字符串,它是精确的登录名。如果没有提供登录标识符列表,那么就会显示所有定义的登录标识符的内存使用统计信息。 |
-v | 表示要显示的信息按照虚拟空间的页面总数降序排列。这个标志结合段报告改变了排序列表末尾的非工作段。 |
-w | 表示统计信息中只包含工作段。缺省情况下会分析所有段。 |
-W [ Clnm1...ClnmN ] | 显示工作负载管理类 Clnm1...ClnmN的内存使用统计信息。Clnm是一个字符串。它是一个类的精确名称。对一个子类来说,名称应该具有 superclassname.subclassname的格式。如果没有提供类名列表,那么就会显示所有定义的类名的内存使用统计信息。 |
-x | 显示层报告 -T中对某个层的每个类的段的内存使用统计信息。 |
-z | 显示在执行 svmon过程中动态分配的大内存大小。 |